{"_id":"mneme-ai","_rev":"733-91646335869e94a10371260095970e3c","name":"mneme-ai","dist-tags":{"lite":"2.23.1-lite","latest":"3.153.0"},"versions":{"0.8.3":{"name":"mneme-ai","version":"0.8.3","keywords":["git","ai","rag","code-archaeology","mcp","vector-search","incident-correlation"],"license":"MIT","_id":"mneme-ai@0.8.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"0f69e563d4b94ab4d64c0217bf357dff9159c725","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.8.3.tgz","fileCount":107,"integrity":"sha512-gGpAgcq6H2gIkwHC9Qozcmon1NS2wAGJnn1zmOamM4DHBVSHbdqgND0IfEcAcsN0c2EETi6iEBPi+Gz+STvp8A==","signatures":[{"sig":"MEYCIQD3nK1/H3WOLK3vRANcaJ5Oj69lPkXtAs3vEm2zaDUKgAIhANjfS+j1hRDFr26UF8LENyN0bd2jKxO3LoK3hvfNaxHv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":315340},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"2c1b52a910befc169e3d0e64a7d613aba57f81f0","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.8.3","@mneme-ai/core":"0.8.3","@mneme-ai/correlator":"0.8.3","@mneme-ai/embeddings":"0.8.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.8.3_1777887014856_0.3919100979824657","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"mneme-ai","version":"0.8.4","keywords":["git","ai","rag","code-archaeology","mcp","vector-search","incident-correlation"],"license":"MIT","_id":"mneme-ai@0.8.4","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"7ef75fbc826e63c4496aad49e12388fe7b0235ff","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.8.4.tgz","fileCount":107,"integrity":"sha512-68/15P0VkEY1y8MKOWRJ5AjwYM8CSaNQTML9JacBfdpcp3OjLNvmuSUu/A2apVhrpmM3twQhipyajQ3LqdU+tw==","signatures":[{"sig":"MEUCIFT25G3OpTqZYhW9RPFJRHcEZtzBiiJhEipSfdxpTVPpAiEArnOh+Uj9/4qP3Va2wEf6YnCmxev6PojFSGmu0naPPa0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":315340},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"e85955f4c04e293834f0d61a79110462a5e2a3ed","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.8.4","@mneme-ai/core":"0.8.4","@mneme-ai/correlator":"0.8.4","@mneme-ai/embeddings":"0.8.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.8.4_1777887950500_0.2708464754068065","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"mneme-ai","version":"0.9.0","keywords":["git","ai","rag","code-archaeology","mcp","vector-search","incident-correlation"],"license":"MIT","_id":"mneme-ai@0.9.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"1a03be5b6e85755781429c9e61961d916e11cd00","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.9.0.tgz","fileCount":139,"integrity":"sha512-CDQIAf+vFxpXQ2+Vm7MmlUbAqgfeA+8TaZp5efZtrSe4ea6p1inCMAQSvHKPO/Xp8Wm8sOgy3X6fO3qzwpDFqw==","signatures":[{"sig":"MEUCIQDzk/EGR7g7c2nMjSctLagoXwxMKHzRJLM/URTLamdgkAIgRea1xcOjJKlzatLXs40kzarwJ6DhXyh5+iKPC28hocM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":483299},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"af3fc21d35f60342916f09251c88fe8be9190321","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.9.0","@mneme-ai/core":"0.9.0","@mneme-ai/correlator":"0.9.0","@mneme-ai/embeddings":"0.9.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.9.0_1777958665999_0.9940514287805813","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"mneme-ai","version":"0.10.0","keywords":["git","ai","rag","code-archaeology","mcp","vector-search","incident-correlation"],"license":"MIT","_id":"mneme-ai@0.10.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"5fbdfcfdfc2c60faf9262718e4c5e31603104767","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.10.0.tgz","fileCount":143,"integrity":"sha512-+7vagm72B4YQpawbLmo95y8Mb4YYt8QWgCi5cExr5HAUxwhU04Wmnl6JENrYuQ7+6ffbuArwMORrQkBnYClPaA==","signatures":[{"sig":"MEUCIHLGvw3FvSnhxJgtv5SUI/Euwl1y/auHF86iF3J+n3l2AiEAtOHBt0Yuv+8GD4oV9EGlksw0hVRvt/nXHvT4e0+4RIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":583410},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"f427ab1ad0d5528e8efedbd25f9d33bc237a97da","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.10.0","@mneme-ai/core":"0.10.0","@mneme-ai/correlator":"0.10.0","@mneme-ai/embeddings":"0.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.10.0_1777965740709_0.8782714934306244","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"mneme-ai","version":"0.11.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.11.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"6870fded302a7ec8f4105dc5fe54f68e15f40bdd","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.11.0.tgz","fileCount":143,"integrity":"sha512-VIoMZjEHuFPwqTE84DyPvbl4BqJ9tPMIHu9/PptJbkOKzJyqf7pkZCKRvax0MP5RqSmZ5EodhFzQYi2Mq25Lqw==","signatures":[{"sig":"MEUCIBiNYzA8HmKGVgbb8fSiXUxk7GcIVlR+cihcuMLI1WfrAiEA6Xiamd4iLapA2yJ57qwUGrfCBQ4IbyTGG/zAUJKxrrg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":608257},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"9872b769f229712bd51e4e005400c550d9df51a7","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.11.0","@mneme-ai/core":"0.11.0","@mneme-ai/correlator":"0.11.0","@mneme-ai/embeddings":"0.11.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.11.0_1777973293044_0.23232624925669265","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"mneme-ai","version":"0.11.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.11.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"c0d29e27f640638dfd5e2e43e9e1bf31504abe40","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.11.1.tgz","fileCount":143,"integrity":"sha512-b7JqRybRBcmk5LPimtsjRlwaJ4HbDcptSm/xqI8VhZIsjJTZbo5mNOeWNn0SRDeTo2g66XnO2dV7MdFePkhrqA==","signatures":[{"sig":"MEUCIQC7kyhjJKG37qTs6f1ciZ+paZsUMKR4LSsB16VE+XiUlwIgesaTviLiculHdida/Hi8W0prPQCA+nxTKjFQ+rWE8RA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":608306},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5348ea5ef90d4e1c7a6d84b6a2e65d27aa563571","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.11.1","@mneme-ai/core":"0.11.1","@mneme-ai/correlator":"0.11.1","@mneme-ai/embeddings":"0.11.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.11.1_1777975325734_0.7768655171190955","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"mneme-ai","version":"0.12.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.12.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"c25732a1d29d1df6ba6601135469811b2f3f960d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.12.0.tgz","fileCount":143,"integrity":"sha512-lsooui2L+cro6dyne6nDSKMNwxSR5rrB9/2qYc8kR2SIy3z1ry6PngamgWCCuc5twfCMQhffYmbdYJ7pS82x4g==","signatures":[{"sig":"MEYCIQD74FTRn+Jk7HRIUttByCRjgJI/727VCHREehwPsQNKjwIhAOhCB58qLRg4skKhj0nnYf/JOfIo4KOuXPSwM6mNQALm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":640659},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"fb57a531fc26c1cd83f27b824865f4b616a85e23","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.12.0","@mneme-ai/core":"0.12.0","@mneme-ai/correlator":"0.12.0","@mneme-ai/embeddings":"0.12.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.12.0_1777977827379_0.8484431298583113","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"mneme-ai","version":"0.13.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.13.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"e816ea0d443fc1d07d909144582a056d16cd5127","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.13.0.tgz","fileCount":143,"integrity":"sha512-yzhghfWOwW3HwnpqhmfbYwmz0ijfgeAcXnxJPmGkxg5QCyG8EwlfTKuVHNedFlwKYe6hlJcvEfp4J8QkjCHENg==","signatures":[{"sig":"MEUCIGzBxapy637C++RClrWR6BSs0o7yeOnuKc+VuT4Qdyy4AiEAx4vOXThwsKXtVKW5tdkJfxFhWc89pUY0Ov4OWBx7dCY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":668176},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"6169062d15fc97484e81e90a3ad02cc14e3af03e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.13.0","@mneme-ai/core":"0.13.0","@mneme-ai/correlator":"0.13.0","@mneme-ai/embeddings":"0.13.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.13.0_1777978478384_0.8287352687850802","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"mneme-ai","version":"0.14.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.14.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"944499b6b726c0d83c4fab0cb09816f58f3fc775","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.14.0.tgz","fileCount":143,"integrity":"sha512-+SoWeRHIw7CXx0WvIp1gN6vw4X60GBE25M2C57SDQdB64DJwf8V/ulMlvnsBIvSmPQm17aV4DgCmYg/c2UZlLw==","signatures":[{"sig":"MEUCIH4iWI2KPO2KguRqQFhZ1bYB+/SvQLx0b0ej/tNxOs/8AiEAsfEKBLUEBXRuQrJfYtC1j+pwHjIb3QqYZGOYJJqigAw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673074},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"0e8c6d955c28d5fc6494200f1e38ac0946600c4d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.14.0","@mneme-ai/core":"0.14.0","@mneme-ai/correlator":"0.14.0","@mneme-ai/embeddings":"0.14.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.14.0_1778034411780_0.7983921030699517","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"mneme-ai","version":"0.15.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.15.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"7354e35ba136c888ed017b8cf4364764a60e4d11","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.15.0.tgz","fileCount":143,"integrity":"sha512-E/L7RCeWbpSHGN1JdBZt8uFTVVr+4H6KQerJwDUHz7FjQqYAYuW/ECsnuZ4QgX7EjCYTj1C3ghxnbpDerJLqyQ==","signatures":[{"sig":"MEQCIAQ9EGEsZjop9mQuRkLp+82IjWX+rInZPYoy91IAXznWAiAp406D+4mrC5REKWW2zaaeBDrMamFHmgzXmOpAL6wdBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":688507},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"b8b58c176a42781344eaf5ae7fc3e5572c8faa6e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.15.0","@mneme-ai/core":"0.15.0","@mneme-ai/correlator":"0.15.0","@mneme-ai/embeddings":"0.15.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.15.0_1778039513407_0.045335147407666865","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"mneme-ai","version":"0.16.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.16.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"0113eae4474f37b5876625ff517016c75a117fe3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.16.0.tgz","fileCount":147,"integrity":"sha512-gnbqaGV2dusEqiV4s3D3deEr4aaZy+qZVtKAZ2JqtVeExUSn5nkSpqUuQf7p9rYSVhLdkTWwL5oSluuUZw10pQ==","signatures":[{"sig":"MEUCIQCDWMpTR2ELQz2hJ9kaOExZJ9sQEn/1dgfKV5lorPa5mQIgIxr9vHJ9XEQZ1qtd5ISG4qJmhcNJ2a3PWpmFWjg3H1E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":710084},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"d9751f844b970c9998f4b2681809f48787e6642f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.16.0","@mneme-ai/core":"0.16.0","@mneme-ai/correlator":"0.16.0","@mneme-ai/embeddings":"0.16.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.16.0_1778040554283_0.9727524986890861","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"mneme-ai","version":"0.17.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.17.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"f66762a23b74c57a55e4c49d6f050df0bc97d16a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.17.0.tgz","fileCount":151,"integrity":"sha512-eD7FjBiBqB6KMhg3y3TOnHNN86uxbsqFNlO05OiemR8j9B4FLYkPzxsM4RA72vFD/7QBHvpo3fKxyPcZfy6raw==","signatures":[{"sig":"MEUCIQDR/NwWo679Or/42nhFXNTtqASG6WYHyuUFNvLtn+4eRAIgcdN8ry1mm/ldqeeJJxF2/FLbfs7eUlk47jowNSa0G0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":748275},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"82f85dd6a1b5f5f42efc8fdac4c94e49a54097c1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.17.0","@mneme-ai/core":"0.17.0","@mneme-ai/correlator":"0.17.0","@mneme-ai/embeddings":"0.17.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.17.0_1778042358475_0.5735664069389992","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"mneme-ai","version":"0.18.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.18.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"189ced8f156662ba98a0affeb29135d9efc522ac","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.18.0.tgz","fileCount":155,"integrity":"sha512-Wswxquq0R7k6frZ3PiKLPF+m4QIyl5ZVasxWiHVARuwy9gOdh9eBruClZt0bbX37AtNms9d42hTsRiU9a9OTNw==","signatures":[{"sig":"MEYCIQClLT6OyfVNFKtTpmUXj5KlIGxOQU9H/arMVdVgwh2YtQIhAMMxx1iywrRnJGnhh270Kr+xpmuckLGY83b66xj0dCVw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":817765},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"aec5f5c0ff8cac96bcfcd938641c8b4d31a07ccc","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.18.0","@mneme-ai/core":"0.18.0","@mneme-ai/correlator":"0.18.0","@mneme-ai/embeddings":"0.18.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.18.0_1778044443917_0.14925684668368588","host":"s3://npm-registry-packages-npm-production"}},"0.18.1":{"name":"mneme-ai","version":"0.18.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.18.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"89a4b34af63346905e6ef5224bdb7ec95ea010b5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.18.1.tgz","fileCount":159,"integrity":"sha512-a0xgYJXDLWqKaY6GbFVR4cvTSzIxuvuKAz35yXWJvJRtrfR2RNGHVpUwt2tCydkzR9i7CuXEj6UE+29i5g9s/g==","signatures":[{"sig":"MEYCIQCprutS3ebH/rOL8upJL/eFmepkPz4y2Yy/+QipjS9lGwIhALs++U9LGFLOtRXi5N+nq9j4/J0J5Djp5hrDRBS2d56T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":819795},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"cfce9a4e2ba4d3ce692c09bf6f266ee115f4f633","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.18.1","@mneme-ai/core":"0.18.1","@mneme-ai/correlator":"0.18.1","@mneme-ai/embeddings":"0.18.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.18.1_1778046015902_0.14042007934750123","host":"s3://npm-registry-packages-npm-production"}},"0.18.2":{"name":"mneme-ai","version":"0.18.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.18.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"f3a7db17f811d34cc8c46d3092f0f9879eaa64a5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.18.2.tgz","fileCount":159,"integrity":"sha512-Xbr4dwPbdWrsdeIGWOS4sp7Zlv7iyAuA2X71dWq/7LhPjiTyjOTZE/VmUQihw5x6NB17SToSJZ3zHiA6TmFG/w==","signatures":[{"sig":"MEUCIFMqUbywOl0ZHrtOIJCqzTOaeK9K5jYEYWRi1Bhd6V1jAiEAkxEL1cXuuL3OrMaIIxThp7+1ABN+lz5uoVFmJ/F62Pk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":820839},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"2154e58e2266de8c62ba33737f31703abc779f4c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.18.2","@mneme-ai/core":"0.18.2","@mneme-ai/correlator":"0.18.2","@mneme-ai/embeddings":"0.18.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.18.2_1778046683863_0.131553679373964","host":"s3://npm-registry-packages-npm-production"}},"0.18.3":{"name":"mneme-ai","version":"0.18.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.18.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"5dd1b3ebe9ad5697f2f766c2f69f1c31cd163205","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.18.3.tgz","fileCount":159,"integrity":"sha512-GRpj28AMoPOYXCLuXlXmJmjVnCN9By1YQ/38aOZB+F5qFpWuEb8P0zzQIoOLzcsMmE/PWJiNlfkoiTAECT4FMA==","signatures":[{"sig":"MEYCIQDNeaJ686Q8tPdT9B77aoE0KALVsyO3NM4Z7hTr0GmqYAIhALaFG3nMyBxYQX/c6Yx4Se4JPwoDrFoSLLUiIAyM3IOn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":822611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5bb42a98bf5e325eba89d55e2ae5bd4053c1f102","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.18.3","@mneme-ai/core":"0.18.3","@mneme-ai/correlator":"0.18.3","@mneme-ai/embeddings":"0.18.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.18.3_1778047005635_0.5498126503521199","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"mneme-ai","version":"0.19.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.19.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"0384f1ee2157bc3e8fca76bffb33a12b7500aacb","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.19.0.tgz","fileCount":159,"integrity":"sha512-hcqRcQwjgCN5FLcqWiNkIYJS1Rv9SC7EVkKtJGURXOL4mFp5I0m7bUe1TNVSUiKA+B1491pF5Lc3cPoi4c/S3w==","signatures":[{"sig":"MEQCICoRnOIrnidndiEn+Aje4tGZflQQm50Dfyl5qYnAst6mAiAnaHauXkUg4kKdADXm/X7QSp8/WjwqGKRlgh/+ZVy+5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":830401},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"be4601a5d451adb85550eaa142fba29121262726","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.19.0","@mneme-ai/core":"0.19.0","@mneme-ai/correlator":"0.19.0","@mneme-ai/embeddings":"0.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.19.0_1778047824545_0.4631675233451553","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"mneme-ai","version":"0.19.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.19.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"0a2cda9a8732670b134b75e2047bdc2d9fe07800","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.19.1.tgz","fileCount":159,"integrity":"sha512-4imFmKBGC8tTee/dRNcsPIn+jH6g9QAYkEx75FFi7JR+DqNGsRB5B4hIsP1rdLeYjfPDiIGkqNRbypZpuZrWcw==","signatures":[{"sig":"MEUCIQCk+9z6F5YdkBBLm4cyPzutAmGk7a+OMJFv349fjLz+uQIgSqgq8EFDgLADFszGzn1YxZRdkIx+8cDHFkorPfS5CQ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":830401},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"f67a9001c81e74a11f32ae2c19c8c317b9e34f16","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.19.1","@mneme-ai/core":"0.19.1","@mneme-ai/correlator":"0.19.1","@mneme-ai/embeddings":"0.19.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.19.1_1778048978521_0.25713930988054834","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"mneme-ai","version":"0.20.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.20.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"899d0bbe0e0052a2fb64da09a07be95276527622","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.20.0.tgz","fileCount":179,"integrity":"sha512-30lSyFOBvSt/vBBHIDecuRuU2l+Uh6l0C0yTtKGuod2Ujy6VPfRH4pEqn/62ehcItCHJK9yGtSpGEtboYjnmGQ==","signatures":[{"sig":"MEYCIQCFyX5mZt3bV9g66fR/UFs3p7Y/n5r6lMEqVvquX4jyWgIhAL3FoB48ZICyX5o05G89xia3PD45o2HZzF5O7B2JS+NP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":903640},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"945d52de50d28a298ed751020252f3e4218ffb43","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.20.0","@mneme-ai/core":"0.20.0","@mneme-ai/correlator":"0.20.0","@mneme-ai/embeddings":"0.20.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.20.0_1778051092892_0.22071218876254206","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"mneme-ai","version":"0.20.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.20.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"b9be2a1891b3d143264ceff5aaf8ee82f957561a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.20.1.tgz","fileCount":179,"integrity":"sha512-Rj6lAcbhZufBeNQzD5W0EpPSRry3pgegoufFoA66Di0K4+lKX+JOBopBqY2Co/Z6znBaV86L6VfrK93dkcu87w==","signatures":[{"sig":"MEUCIQCEGzKPgE7n5v2aPAreTdoWKEfOmlSs7114Fe4nl++QxQIgZo0tD8PbGInRKG6LmocHm1atkBUnNeuCmVLS6gy6aO4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":903834},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"7c1777fb9456c4dfff1ff031586835dc8f4f8447","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.20.1","@mneme-ai/core":"0.20.1","@mneme-ai/correlator":"0.20.1","@mneme-ai/embeddings":"0.20.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.20.1_1778051663201_0.8481635312368774","host":"s3://npm-registry-packages-npm-production"}},"0.20.2":{"name":"mneme-ai","version":"0.20.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.20.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"8beea208514ffbf78ca95f1410801436e70a2666","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.20.2.tgz","fileCount":179,"integrity":"sha512-73ya9LwooH97PhPOYFO9zzKbJfJtgfc3Jg7MRvAvisFu/DfGAId0JQRLIUjz6zeVTGRTLGvdmNzE3p3Yi1wZfQ==","signatures":[{"sig":"MEUCIBsEWMhoaPqvET1Mt81usxh/Ddo7x3IDqHKjAbDxnEqyAiEAolDbjFd/F3xXrIfBGAtAQJ85Tx8faroHwYNP+YtHy9Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":914675},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"2cf61b7d7851bf394493052e0c1d01853a70a7f0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.20.2","@mneme-ai/core":"0.20.2","@mneme-ai/correlator":"0.20.2","@mneme-ai/embeddings":"0.20.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.20.2_1778052058274_0.4711070722423105","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"mneme-ai","version":"0.21.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.21.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"4feb5a9b483fc077bde55c3b9feb733b7dba56e4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.21.0.tgz","fileCount":179,"integrity":"sha512-HW6ruSN2diQY0L7K5tslAamTh9hz7TdJjFLP/ebRVt3fALPRNe/K1ovOYXHqSh77RbpTghypJKqI7sWfn1QBNg==","signatures":[{"sig":"MEYCIQD7X8EuvnchX4yJjsT3s8ksSjdc8DlekcNh5ODWydXuQQIhAPHkUmIQ2p0gNggzeez/hejIzgGo2UFxUxh7XF0SpS8a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1010548},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"55604a29a4cda49939c0a9015a8ef4407d877d06","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.21.0","@mneme-ai/core":"0.21.0","@mneme-ai/correlator":"0.21.0","@mneme-ai/embeddings":"0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.21.0_1778053311009_0.47720202211080576","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"mneme-ai","version":"0.21.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.21.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"9a2f7e58616ad23cb3d37cb788fb9391e3d069ef","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.21.1.tgz","fileCount":179,"integrity":"sha512-vx5kZU0kwAMRpTtzl0f+htYw5UCdChIHLJh5UHR9W+y8JWXw/8T6n7Dx9mNMr6XOTSpnnmswS92UvQSR890GNg==","signatures":[{"sig":"MEUCIQCshAD4EpjfCnrc+RcCaSxX/7xQSuZwDKv2KGIsT8h0HQIgB2XO6RtQkELzVLcjzfBLgtz69mo7ouU4ZLhayy+Uo0U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1017376},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"0f1ca17c3285d38b269435f9720308cd3db15923","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.21.1","@mneme-ai/core":"0.21.1","@mneme-ai/correlator":"0.21.1","@mneme-ai/embeddings":"0.21.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.21.1_1778054503848_0.6172715720679804","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"mneme-ai","version":"0.22.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.22.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"6483c7b61593a137b3374b7610c2ae0fe19fca66","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.22.0.tgz","fileCount":183,"integrity":"sha512-E3AjMEmfK6vDZ3EOt+gUaJdMVyV66LarvSCDm2ls6t/G5RtjHCN7WSJhkiBkPhHTI0chRWs5YUes4K9MFVSCsg==","signatures":[{"sig":"MEYCIQDLYP9zaxpd4k4WqAqVRV0olVp7cyUKKgOb28oY7mbK1QIhAP0WCbRZDPkegHJs/ZmlT0hgCHaXM3SryMa8qiVwbNHB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1038670},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"c87b1344e8249f571e3961415492bf68fabb4530","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.22.0","@mneme-ai/core":"0.22.0","@mneme-ai/correlator":"0.22.0","@mneme-ai/embeddings":"0.22.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.22.0_1778118181903_0.017973510914224056","host":"s3://npm-registry-packages-npm-production"}},"0.22.1":{"name":"mneme-ai","version":"0.22.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.22.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"fc6a7709a6731a968db9288d60d35011a441cbae","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.22.1.tgz","fileCount":183,"integrity":"sha512-NsTjaVG4Y5jo/Xur/2XcrYXPQQam95RLwW17z3rdguhGzg+hIIZoV6J2bswYdBbqjjzQDlDB6SwOm/BqYRtcAQ==","signatures":[{"sig":"MEUCIFfUMCUBW0Nm/Qd5uQcF+iCdSRYo/k1OoTCAuIfLcVYeAiEAot5/eT5l1Ea4VmrcndB6tWISGkaGuR4wjcDxkRUCAEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1039773},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"874cff5fea7a4fd9e9eaee19e04a3bc3369a1d1a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.22.1","@mneme-ai/core":"0.22.1","@mneme-ai/correlator":"0.22.1","@mneme-ai/embeddings":"0.22.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.22.1_1778118621915_0.729035760530105","host":"s3://npm-registry-packages-npm-production"}},"0.22.2":{"name":"mneme-ai","version":"0.22.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.22.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"ace7e255bddcc3d06fb54ee90afe801955ca10d6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.22.2.tgz","fileCount":187,"integrity":"sha512-FjGxtirYzpDdy1ld+PwZwCa5QuZCNI6RPYVPnb0rFIClGuQW9pLvgu1MIdI+due0vkbLG5vPyzqyZxbFe4CbvQ==","signatures":[{"sig":"MEYCIQCkMsOzXDJjdez78j7yPiT/3b0GG77PHadURLrxhLBFEgIhALgwEn9U7p7Z1HzLzaLJtrh2mvSoL4jXaPkG4jL0/NOe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1054515},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"a33be8d2bf9249f1f392f016b26bcd4be607b211","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.22.2","@mneme-ai/core":"0.22.2","@mneme-ai/correlator":"0.22.2","@mneme-ai/embeddings":"0.22.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.22.2_1778119101570_0.5168177768909441","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"mneme-ai","version":"0.23.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.23.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"f0b14fc16ab82670ad684cdd110f5f2749844037","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.23.0.tgz","fileCount":187,"integrity":"sha512-P+e6Zq2AlODarbLaes3Qu+AqpfJ0Z/07RW7K45UyOV5IwqO54ew6NTG5TuyhQynTB/lt5j4Pn8trBCBlGTz2lg==","signatures":[{"sig":"MEUCIQCSCLQCia6+7J4IPquA11tXo1aqvc8ZZwGF5SMSt0QbWQIgFcpQvTxkJvb3R/jCI5UsOy/+f31pCUuh7rMOMKj1/m0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1062174},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"eb994c575ceef992fb8cc93e9903f3f092171b06","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.23.0","@mneme-ai/core":"0.23.0","@mneme-ai/correlator":"0.23.0","@mneme-ai/embeddings":"0.23.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.23.0_1778120168935_0.8644304677330219","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"mneme-ai","version":"0.24.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.24.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"37f0c9cf74e8e8943e350331d30644d54c03bf7b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.24.0.tgz","fileCount":191,"integrity":"sha512-NEQKTW37FGjlmF7rRB+OO/0fVYERJ3c7sfB8OYJd23C6UhuR2p5brDpOaqMcIKMs24jZjI2aYfd9tcYTou5z0A==","signatures":[{"sig":"MEYCIQCdFTiMYs1qeL1cDOfqU2VFUHmIlZFZ3Yr4sXrNg+Hj5gIhAOVQPgbQpuE25XdFTapeJ0fetcEfviqEnbsQmlozbPUK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1090941},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"485bfafe08e1a518123638c480c80fdb079253f2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.24.0","@mneme-ai/core":"0.24.0","@mneme-ai/correlator":"0.24.0","@mneme-ai/embeddings":"0.24.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.24.0_1778121420336_0.5853935221210578","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"mneme-ai","version":"0.25.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.25.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"b4e4a77357bb4809c6226f172df5fce959d3d6ce","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.25.0.tgz","fileCount":247,"integrity":"sha512-iGK7IHuRDZTYh6AQ2xPNTjE4ynnDXEgibNUhFBuGbgEa6giPfdtsm0uZsBNnXSwR59+cOeMRY/2JGkLt/M2y7g==","signatures":[{"sig":"MEQCIFIFlLgY04w7N97OrasWoGOqBn/rMODF4nU5aQqwMXYPAiBdTM+2Qdg5yj1RUkQ5mfT2TPpqB1fh5Dgbk/kVqv1DTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1253162},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"0542b2386d0e92da9b2425eb8f3eb0ae9f12d256","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.25.0","@mneme-ai/core":"0.25.0","@mneme-ai/correlator":"0.25.0","@mneme-ai/embeddings":"0.25.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.25.0_1778123102615_0.49936262430990586","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"mneme-ai","version":"0.26.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.26.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"2c4ee05de9919b887904ff61bfa05c8502371491","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.26.0.tgz","fileCount":247,"integrity":"sha512-f9zEZJm9lqhOug5NhgE08iqhfRALME3vADF0DuMETuKb6EGZzDmcEgAuT1mtuEHNoYizgQjL3aRdIkxlKZHtGA==","signatures":[{"sig":"MEUCIAoMRyMrra5yGGv3o8h8ecbhno2Xopd9Sj+NLuqTXFQ8AiEA/k6wEvTc0H7vRzYLi+3wsoWMKdLQx1E6rv6RyRnIGSs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1284068},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"47a9ad3d783fe622db6e17024b2c6d1ec3b0fe8b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.26.0","@mneme-ai/core":"0.26.0","@mneme-ai/correlator":"0.26.0","@mneme-ai/embeddings":"0.26.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.26.0_1778124176828_0.2946289352379339","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"mneme-ai","version":"0.27.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.27.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"2c8000c5a4f69095d1be1d275ff769f4d62efdfa","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.27.0.tgz","fileCount":255,"integrity":"sha512-KYLpA5o8o8QRpSmILNZGo44yJoOKFNI0odmjvp29ZsmdHK2b0TxDs9wGYMRBYBCjcn5kE462A+jM8sl1OeQmGA==","signatures":[{"sig":"MEQCIGHbRPAV8XewBo2O3DEPdrzV5+O1bGKgM1woMlsX44DpAiAOT7b4Mm9ykMMxFq2aq9j3MqUq6ioWML8OW1IZWsECMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1340409},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"c3cf3c9bb8ed86e4abb53a0078f28630df26bb52","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.27.0","@mneme-ai/core":"0.27.0","@mneme-ai/correlator":"0.27.0","@mneme-ai/embeddings":"0.27.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.27.0_1778127355746_0.46490575368169007","host":"s3://npm-registry-packages-npm-production"}},"0.27.1":{"name":"mneme-ai","version":"0.27.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.27.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"95f9e2ff3ce589c1f210c979ad29fe3a45ccdd1d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.27.1.tgz","fileCount":255,"integrity":"sha512-VgzUtcnYhWa5pf3HlT0OJMo/demnEgyxiI0y9l2oyYm3mmRyAqnrU0yPz0dS4LWULBeXvZ0IBfdSvLTw32j9hA==","signatures":[{"sig":"MEUCIF6gEusEw08zhsQ7E14MVOoEvyAJE83kZqpoTcZarXt6AiEA7k5HmAx+g8BBEosCOR1yQWUo4WpZ3797gdNF7DLbk80=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1340409},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"4ae075f54c5035076ee629c65985850dc5767d60","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.27.1","@mneme-ai/core":"0.27.1","@mneme-ai/correlator":"0.27.1","@mneme-ai/embeddings":"0.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.27.1_1778127823589_0.08357338793401126","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"mneme-ai","version":"0.28.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.28.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"beb28cb21d91dba549255389c7a8a031d33aed68","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.28.0.tgz","fileCount":291,"integrity":"sha512-5iJuPHyY23Y0cYYQZcpnvcExaY52hQbkmziqFDKNxLpdz8qvGXLraeY89B1/6qhk82rWuE6Rgq1rCj6GOs0nRw==","signatures":[{"sig":"MEUCIEMooaZtl57uhk0uLuKa/8aHPNp7X1/fvRA9oI4EWPYdAiEAwb0QzJWjUbw6zx9D+alKqnxLwPPODQouq/EuuqnONpk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1587928},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"3468e301797391d6af25ec9dba1364f1d1cf8306","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.28.0","@mneme-ai/core":"0.28.0","@mneme-ai/correlator":"0.28.0","@mneme-ai/embeddings":"0.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.28.0_1778138411193_0.814924066121921","host":"s3://npm-registry-packages-npm-production"}},"0.32.1":{"name":"mneme-ai","version":"0.32.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.32.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"26878e91612f046e728619f2e698966c8d58e06a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.32.1.tgz","fileCount":339,"integrity":"sha512-rw8soZDkouJIeMhvSNFFRhvx3BmboJ3gReeO3w7gTp98hWt8TB8UHyR7c02OvJroZrlOjVS//YDKm3pWG3IwrA==","signatures":[{"sig":"MEQCIHRec/eHaVeWHk9efentJIgLcN0vl9DmOs1mpjoZmE6MAiBSkYnU7yH5MI3+wwdeNw1dH+6n3deLHwzd/a2LRgW8ug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1825101},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"2990de6a0361607fdc3f3eb93c3f46d7ee3cbf4e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.32.1","@mneme-ai/core":"0.32.1","@mneme-ai/correlator":"0.32.1","@mneme-ai/embeddings":"0.32.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.32.1_1778149970125_0.3801577714979427","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"mneme-ai","version":"0.33.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.33.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"70d287b83f27cc8fe9600a5cfb5cb42d04e7d46f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.33.0.tgz","fileCount":359,"integrity":"sha512-ygbm6Fdw1ZeE/JBffsRQab5IL4muV8Ef5V+45+gD2jQuzrUgG2sjtFjctDI7WwFrdjldVKoZPWLMiAbzzPY10Q==","signatures":[{"sig":"MEYCIQC99Az4UBlR0kh7qM8TSkjiwtS6hz06fH252LT7FeO6fwIhAOEYO2A2MvGiYZfI6+Mav1NdGSl2BQT1UyepVnLxByev","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1877584},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"71ed74ebae1efba138e3f3e11c1821136579a546","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.33.0","@mneme-ai/core":"0.33.0","@mneme-ai/correlator":"0.33.0","@mneme-ai/embeddings":"0.33.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.33.0_1778151216396_0.4902424375560397","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"name":"mneme-ai","version":"0.34.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.34.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"e798ca9bccd6b5e5438543fce876bad297203c0f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.34.0.tgz","fileCount":359,"integrity":"sha512-krXmzbHWsZHyQ4u0oQ099q530GLvHuXvAatCO0x7b5i8yvbeKH6tnhpTKCrTguX0+8EpZbszjO1WQPs23GB2Ig==","signatures":[{"sig":"MEYCIQC5M2F1f9nuI+bdhMEk8ZszIoyDWNL+IYEpuI/KOT4qIQIhAOLkWKxEj48wIkCU2oWJs2zIk9b/x/0FzpJ5Cwha5T23","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1878873},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"35acf89bbc50f2a89df3474de220234ba0344947","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.34.0","@mneme-ai/core":"0.34.0","@mneme-ai/correlator":"0.34.0","@mneme-ai/embeddings":"0.34.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.34.0_1778161288008_0.9325378197724943","host":"s3://npm-registry-packages-npm-production"}},"0.35.0":{"name":"mneme-ai","version":"0.35.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.35.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"b9751e891bdb2a26767b51672d991f0ba93ceffd","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.35.0.tgz","fileCount":363,"integrity":"sha512-PU4b+ucShIJxgAk5a0AfNZ78Y/ClpiTRQF21TfoB7nyhPrJNMWxukerLgweuiqpCz5JdP1W6ppDVuhpfF3oeJg==","signatures":[{"sig":"MEUCIH7uNfxlRp20BDtxeq0KWqTTX91/jK0G/sUaP3CCbu2pAiEAuipz8q2cCzwF1rrtIpSHsDmQ9R9J3BNIuYLncIW+FH8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1915321},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"935c0a9edb57de9b980b66b4ac32b54bf2019fe8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.35.0","@mneme-ai/core":"0.35.0","@mneme-ai/correlator":"0.35.0","@mneme-ai/embeddings":"0.35.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.35.0_1778162869664_0.3783324623174811","host":"s3://npm-registry-packages-npm-production"}},"0.36.0":{"name":"mneme-ai","version":"0.36.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.36.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"c0e4f2ed159b9c6751dd6269f3afbd4655214961","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.36.0.tgz","fileCount":379,"integrity":"sha512-pKuampRJ9jEH+r0X2dReNEaZ2MnWKXZ3c98/OnSxPkUb4cCiaH3va7obVoe1k+Rsz8hLIvboX+nBK+8w6nBpeQ==","signatures":[{"sig":"MEUCIGDKPtc/f96MBb+mnPlG2P48EoQKJyM/UMt3Gxk5BxMFAiEA2IM7llDH2/YdsiMnxEWrUfzlbpthJamcOiXJCoDfICM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1995815},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"16cb5eedd1b94b991b02486ceba88e6880ff0127","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.36.0","@mneme-ai/core":"0.36.0","@mneme-ai/correlator":"0.36.0","@mneme-ai/embeddings":"0.36.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.36.0_1778167263806_0.2990344967743632","host":"s3://npm-registry-packages-npm-production"}},"0.37.0":{"name":"mneme-ai","version":"0.37.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.37.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"b9ae12fb7876d65cf1b9d1b74857bd28989dbf98","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.37.0.tgz","fileCount":391,"integrity":"sha512-pQFho3MtRrwxaP33KenGrLsPGopbggHtGAocEcsnd9ofKQXqMUUeEDU/H2F76psEDP5YRtS23ZYhn/P3uJSccw==","signatures":[{"sig":"MEUCIHkpu1lZ47BRCXlC1V7B3/WB5hZftU4cJxyZmRmCmlLCAiEA5alk4vzwDEeZ1otX+ZzChQrhek9+35O3tQeYOusU0fE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2039674},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"dd9c13e28f2311cc2486b3586ed5fcdef534d4fe","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.37.0","@mneme-ai/core":"0.37.0","@mneme-ai/correlator":"0.37.0","@mneme-ai/embeddings":"0.37.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.37.0_1778211599965_0.47905920785681544","host":"s3://npm-registry-packages-npm-production"}},"0.38.0":{"name":"mneme-ai","version":"0.38.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.38.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"73df8a9a88f6d2827ef4a8ac536333ea613de22a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.38.0.tgz","fileCount":399,"integrity":"sha512-HHz3FIf2aB46LlcZYe70mzuEfNaDYx845D0yVeMaMUjWbeCdqkl3Yly1zyR3SlgQTh4IU5cHC9moAs/HEzd4CA==","signatures":[{"sig":"MEUCIDxyMA/CezU5MT9DRds/a7GGUFq+wazTDBVLT4SZLO0LAiEAsOsClIqbUEInCc8phTG4ZcHWAoyP/DJBC6Iwjkh9DTY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2069985},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f8ecd624faef65ed60604eb9fcb3afa6ac542170","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.38.0","@mneme-ai/core":"0.38.0","@mneme-ai/correlator":"0.38.0","@mneme-ai/embeddings":"0.38.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.38.0_1778213481331_0.9567412880964667","host":"s3://npm-registry-packages-npm-production"}},"0.39.0":{"name":"mneme-ai","version":"0.39.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.39.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"5f7636af823b7c9d1aa8c0c662ea024bdcb0ff48","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.39.0.tgz","fileCount":399,"integrity":"sha512-Tr8KWfuy3s86ATDwDkI1kEnJfRi2kSQql/MheCK6R/wdkkxrxF1/+BHIvDOPhH/Ru7Wl4g7JZPNyUFarvjbfeA==","signatures":[{"sig":"MEUCIEzVw8uiuvPVTSFVLlDBBlgOB38gnPBpP+eeDqEf4iEVAiEAhk8wMf9u+J6/GeoMXhtoUeNctQkFr451R8FDQK+6Z4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2069030},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1551cb2a00e5105d716cff647c9f394cf8268e9e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.39.0","@mneme-ai/core":"0.39.0","@mneme-ai/correlator":"0.39.0","@mneme-ai/embeddings":"0.39.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.39.0_1778216178546_0.8940083592391768","host":"s3://npm-registry-packages-npm-production"}},"0.40.0":{"name":"mneme-ai","version":"0.40.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.40.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"aa394ffd6337e5facaf7575e4ba5c90df1e744f3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.40.0.tgz","fileCount":403,"integrity":"sha512-vX8wO02+alT7HZTNsPlZttlz16+TiXm9TL80F+n6J3oNVeXwg+n1y7XBeZvMTx6lG9ueGtl/HKfxd56FPybwnA==","signatures":[{"sig":"MEUCIGN8FEp+ecToDfjDr2qjPcF4lIQ7DB5uqFeSW74Wt0dMAiEAkG+c07NNNsKVaHoaIg/+MejRP1ihdDeu/DOjM/LHfRM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2087072},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3a169d5c908b47aa1451601ee5ff4ad88c16bb09","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.40.0","@mneme-ai/core":"0.40.0","@mneme-ai/correlator":"0.40.0","@mneme-ai/embeddings":"0.40.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.40.0_1778218311593_0.703493274645707","host":"s3://npm-registry-packages-npm-production"}},"0.41.0":{"name":"mneme-ai","version":"0.41.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.41.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"da88ecc976733e1d5af891d9576b603ea04203d8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.41.0.tgz","fileCount":407,"integrity":"sha512-vhCFuJXtb0HDFT7JfkUN0HzhknwOfdbvg4QESRpzsHigWHaiPKVdw9mQcMIuBkBvtzkFr8jqGe40ys00yYgauQ==","signatures":[{"sig":"MEYCIQDgqKpyl2aeaXnS0CgwJ3JUDjCCbFTUrabp6HDDsFKmLQIhANb4tjfiosOUY64rKRfNe38AAG/Teg1iTO1Unn8xB24r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2108340},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"cacdceaa3ec2a0974814ec5cb1ceecf10cb9066f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.41.0","@mneme-ai/core":"0.41.0","@mneme-ai/correlator":"0.41.0","@mneme-ai/embeddings":"0.41.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.41.0_1778220851962_0.5742042549840867","host":"s3://npm-registry-packages-npm-production"}},"0.42.0":{"name":"mneme-ai","version":"0.42.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.42.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"8fc226d8cde9e7b0600a82a925f4eb09269a4190","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.42.0.tgz","fileCount":415,"integrity":"sha512-PgeB8nK9d4Syda7wajWpzlS02yrKHsNYvTAqCtTIx5k/qov3JDE7aRtqWcHPPMyavBt4d12yLlz4AjTOSX6p4A==","signatures":[{"sig":"MEUCIQDntdOdx5fd60iYmSl2RtQglx6wckZx+ljAWbQkd7sWlQIgTSBYtlwMDjqpWXI3dSdLnwckDTXwX9slkAuIiD0lcXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2136395},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2ec391c58fd26af531e85752b9fd89f8f9d96817","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.42.0","@mneme-ai/core":"0.42.0","@mneme-ai/correlator":"0.42.0","@mneme-ai/embeddings":"0.42.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.42.0_1778221358733_0.8493543289462411","host":"s3://npm-registry-packages-npm-production"}},"0.43.0":{"name":"mneme-ai","version":"0.43.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.43.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"cee14c0c6a7aa02a0973ae8575878ef4a70bf386","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.43.0.tgz","fileCount":419,"integrity":"sha512-G7tZFSjc+3YEc4Dnm7tJPnpvUi32T1D5omE2AmapZe3yclf3RucS7D4a8nfNkM0r0/aML/8WNkiNSCVQxNVhlQ==","signatures":[{"sig":"MEUCIEH3KZ7blOxZpvKv3eaydUQJzkXCi0hrIlcTIl4EnEfCAiEA96rfks3eyAGIWDGapIx3SGRztOIpQCQwj6h5otHeqqE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2163671},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c5da913893b7ad97f7b9abbb7731700d9c450cfd","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.43.0","@mneme-ai/core":"0.43.0","@mneme-ai/correlator":"0.43.0","@mneme-ai/embeddings":"0.43.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.43.0_1778224433622_0.5275517779158387","host":"s3://npm-registry-packages-npm-production"}},"0.44.0":{"name":"mneme-ai","version":"0.44.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.44.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"a49b20f278c663e74edb0c35f9f45037b5ca2c3e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.44.0.tgz","fileCount":419,"integrity":"sha512-+JpFIsnmv1gL9C1qEdSJlwFRuq4dJzXTcMn969CKNEkJyo/WpOa7WhDkYIxp2AsdjbPVwDbKHTtWpu9krbaLCg==","signatures":[{"sig":"MEUCIDhh4g01iwzkddWnWzU9IBeKlSGDBGDQvurJGTxdtNM5AiEArgxqoWMo8KZkEXO4eYjoCAyC67VXTm1OjrjzNOCSlYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2163671},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7dcdf455eb57436bdbb9e883d18ef2793314b78d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.44.0","@mneme-ai/core":"0.44.0","@mneme-ai/correlator":"0.44.0","@mneme-ai/embeddings":"0.44.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.44.0_1778226275970_0.322393173715537","host":"s3://npm-registry-packages-npm-production"}},"0.45.0":{"name":"mneme-ai","version":"0.45.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.45.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"0c66e2f082c1f2ff126f0cf659b103675cc81dde","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.45.0.tgz","fileCount":419,"integrity":"sha512-ot9wmmq4Yxzjjb3iKVjWZagvl9tU31Z2hnhC0MAioz+L8E1hh+pLGtfQH3EVoZWzxN5Cu/FdVSONtBybwxBBNw==","signatures":[{"sig":"MEQCIFv44m8vSXMFMlosuuRM7p2H76xiffUh7HH/7PH19So0AiACuDCYTg6ofpwnbj6/B8SPfTaVWZFONIY4G7I4/x0nHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2163671},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f5df93b293f79e96d016b2bab63206515919ba9a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.45.0","@mneme-ai/core":"0.45.0","@mneme-ai/correlator":"0.45.0","@mneme-ai/embeddings":"0.45.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.45.0_1778226656393_0.043122802512655545","host":"s3://npm-registry-packages-npm-production"}},"0.46.0":{"name":"mneme-ai","version":"0.46.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.46.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"86ae1d3781737b39ea5def844c50cac78093c80a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.46.0.tgz","fileCount":419,"integrity":"sha512-Rnpa25HzydkbXGFUtG4UT/VJ5SHkPbYzBvEJF26xpneF5bUO3mINyYaJVd8bD4m/pvcyqDashBk4t1Jgt16lig==","signatures":[{"sig":"MEYCIQD6uYk2BePUhoD8HDMZYrA+xEF7XCFWV+V8DZ72/TGVsgIhAMgjeYsl1QNsiaGHS0sOHHvlc1iJX5GYbn4D4rIZ5c/V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2163671},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"974c83e5b935b7e19dbdd18658cc2745201a3d9b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.46.0","@mneme-ai/core":"0.46.0","@mneme-ai/correlator":"0.46.0","@mneme-ai/embeddings":"0.46.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.46.0_1778227341865_0.4550922152261747","host":"s3://npm-registry-packages-npm-production"}},"0.47.0":{"name":"mneme-ai","version":"0.47.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.47.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"18dac0bdaa7111ac15e3ff37c62c4cfad7e189a6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.47.0.tgz","fileCount":419,"integrity":"sha512-1ubLerWgR3Ylid07LpBT/bKZdgKY5L/QXGpCjPJiiSTCPhNjpOO9CNkF9sJFAqeMVibItJVxLGX/AgL8Qz+ncg==","signatures":[{"sig":"MEYCIQCAouIcbulDktuvG2T+XDvgd93zMWm0vmx5Rg562xUNiwIhAKcuqO5u1fBWCJOmwB28BoLXk8lvejecKrcDtdk8u6Gl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2163671},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"13ef67167a4f6f9111739f89071cd28562c8b8e1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.47.0","@mneme-ai/core":"0.47.0","@mneme-ai/correlator":"0.47.0","@mneme-ai/embeddings":"0.47.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.47.0_1778227609556_0.3143983215559043","host":"s3://npm-registry-packages-npm-production"}},"0.48.0":{"name":"mneme-ai","version":"0.48.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.48.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"817493c2ae73ea58bd319d165469392039321159","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.48.0.tgz","fileCount":419,"integrity":"sha512-fr1c1/wXoubrQ+gmxD4bCeWA///QMMdhufDD72QnVAQvU+3oYQcBZsgWiH+xzTszNRw0xsi/W3+0VIunz6QuSw==","signatures":[{"sig":"MEYCIQDT0MZC5uD1BmFg8P8UKQEm8V6EnAjl9kYab+Rwi6xDxQIhAKdsyDAIfIRLAb0/ARlWOrdpyr1OIBQUo17LDVJfaujT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2163671},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"38c7b0ba5f80bdac57fafef5363c62293aa03255","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.48.0","@mneme-ai/core":"0.48.0","@mneme-ai/correlator":"0.48.0","@mneme-ai/embeddings":"0.48.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.48.0_1778227921082_0.8606195418862834","host":"s3://npm-registry-packages-npm-production"}},"0.49.0":{"name":"mneme-ai","version":"0.49.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.49.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"db0e1b3b9a7b0a081d330660949ae4cbaed22599","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.49.0.tgz","fileCount":419,"integrity":"sha512-0tjjbtBy/dLh7b/iTxRqY5nuRfdZh6cbt1ywgGPRV23Fh5tJTULNkpTEEwg52mdLWC3PgrSubwphAqwcawJueA==","signatures":[{"sig":"MEUCIQDSsXlVN+QKvFH4l1C4RDKzd6doLReeBXPgYCh/vB7nzgIgL8hRi53vqjgCpDMmVTl6ZGuUk5g88dhNy2uHINVJN28=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2163671},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2f43f38896ca96ddb44c7ab025f8a628d4af2078","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.49.0","@mneme-ai/core":"0.49.0","@mneme-ai/correlator":"0.49.0","@mneme-ai/embeddings":"0.49.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.49.0_1778228177259_0.01113418640094932","host":"s3://npm-registry-packages-npm-production"}},"0.50.0":{"name":"mneme-ai","version":"0.50.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@0.50.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"f272e4425627d654d5440c0114f912443aa88525","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-0.50.0.tgz","fileCount":419,"integrity":"sha512-uOK07T+W6hK0XJSrcsc/jDln0nUh50CThTr65tL/SDMPe3q6cJkJWcG9EMTEwB1py5xvpM6LmAJlkYnxPP6T3Q==","signatures":[{"sig":"MEYCIQDSlfc83Tblub08r5ong77Gc1HVHZw5mRo5ZMHDkQy4RgIhAISRhdt8oWbJx50jD5mSkLAn1t0eYxpyu7ohQE/eQVGp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2163671},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4f598d4cc1e16a6e4ab2331f3f39486eb1ed9c4d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"0.50.0","@mneme-ai/core":"0.50.0","@mneme-ai/correlator":"0.50.0","@mneme-ai/embeddings":"0.50.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_0.50.0_1778228896185_0.849370592228976","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"mneme-ai","version":"1.0.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.0.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"df4cd05e604d609c0c8038e1acdad8d2c148b368","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.0.0.tgz","fileCount":419,"integrity":"sha512-/YjLEkl5UMCei1ns3EIfZHIq/uutDrRIaoYaSsBmPOGmjYnahajyQgioO2yAUTa+WTI0qihILPnuDXIiEBAd7Q==","signatures":[{"sig":"MEYCIQCgR5W9oQeGkDqAU/y/OOIssRaRQOCAR2siyXkNGh16IAIhALrXKvuzNdnTCg3l4EL+9WXCq9v+QAQVrrfIuFv5fVte","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2163666},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6e0daabf466aac1c2df50ed83b69940bd4841eb3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.0.0","@mneme-ai/core":"1.0.0","@mneme-ai/correlator":"1.0.0","@mneme-ai/embeddings":"1.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.0.0_1778229168506_0.012410862897459518","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"mneme-ai","version":"1.1.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.1.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"8bbe8be1f5c95fafca4528a0a0bb5fb5301e9463","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.1.0.tgz","fileCount":419,"integrity":"sha512-dcQjrPvL/7tU65kQVrbbAX7Bn7TjpdaNYPQNJfUrO4nlglsymvTeO2CJHoTOwZy/03OB4di4ZwdWPdA8hzQiMA==","signatures":[{"sig":"MEUCIQD1Faz5bIj4mYltt3pCxBHS1ZnKHHLvTBEek8Geq299zwIgNaycNLFqFrQUGl9M0i3wuM9JhMl74p3wUK0DJj4j1yA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2163666},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d1505aaebda668eb6667f9b4e06d13613ac6533e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.1.0","@mneme-ai/core":"1.1.0","@mneme-ai/correlator":"1.1.0","@mneme-ai/embeddings":"1.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.1.0_1778230335799_0.164498874409011","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"mneme-ai","version":"1.1.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.1.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"6a24745070065a2b253ffd94d73b030bd014b797","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.1.1.tgz","fileCount":423,"integrity":"sha512-RRQ4KsFIl/8UIZspRph+vf5/Fc+0SxGnrNWY3yhx6b87P7wZVjWZWSdfOI8l1ouRaszpuf+9mSvOMsLKNsl89Q==","signatures":[{"sig":"MEYCIQCjDYlz3ofD8igDia4Xv4RmIJM8YeCwuEsV+KRQysTVcwIhAOwH9pzYMR8sq37XnYl4Ro4NGFl1XLs7nDw1w3SsZ/z1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2173211},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1cb22ee4ae263363e9bc258557f73ef8bcc1b68e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.1.1","@mneme-ai/core":"1.1.1","@mneme-ai/correlator":"1.1.1","@mneme-ai/embeddings":"1.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.1.1_1778233913687_0.4298284299011459","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"mneme-ai","version":"1.2.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.2.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"3c82ee91112987c60fe6f39c187dec160bfe5ba7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.2.0.tgz","fileCount":427,"integrity":"sha512-+L9vfgfKnYlQ1BKXPrxYzGVwlyhdRcRNKv7oqYju3VbuejQFTKiWLvZWyS7t4FFaLnMvNiVTRuHzb7GPSvnYrw==","signatures":[{"sig":"MEUCIQDugpJOhheLEwqnRpPW1xPrcXLnLbb13MnPAOe1iPdo1QIgUfqG/PA2hcwEdWwpY5+S8xj0H2N9G+JtSmIY7sAoyB4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2192368},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7091d34518a508a4b3d25067d6cf7cc771917efc","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.2.0","@mneme-ai/core":"1.2.0","@mneme-ai/correlator":"1.2.0","@mneme-ai/embeddings":"1.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.2.0_1778237366395_0.21035973504262717","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"mneme-ai","version":"1.3.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.3.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"379a46f73ab7df4048f1c102ec04e2b8df044727","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.3.0.tgz","fileCount":427,"integrity":"sha512-50PpgZcL2Atmag4o0vDePVfjadebuHUGvad9U3QCJNAgXG/tAgxt/0MhJjSqUH4+MlV/CNTiB/FbNjhB6DpbjA==","signatures":[{"sig":"MEUCIFgcoasz4Mhk3tcsRugZgFXkLiLfqVwyya0PmYrR2VToAiEA4WtLbY6lSsTKnaqhe13CfQsX+jJfK9IMm5aqPnj1+k0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2192368},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6c997f7f11fe6ebbaab95f9ffc602d91ad41d8e9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.3.0","@mneme-ai/core":"1.3.0","@mneme-ai/correlator":"1.3.0","@mneme-ai/embeddings":"1.3.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.3.0_1778238645993_0.6927100220382836","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"mneme-ai","version":"1.4.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.4.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js"},"dist":{"shasum":"199c74f4dbbfec6fd120c33b5754e15b76d8c7dc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.4.0.tgz","fileCount":427,"integrity":"sha512-vWciKNFrPagoBBbvyb/zpZu0UU/ISrWUHNbibNia9ewRXiCulNJjWMZdwfvLX5kkTiZonAKNQTgo1LnIPN2OUw==","signatures":[{"sig":"MEUCIHOULBpcr9d8WCU0MN47lxqf0wvPl6npbht7zr4hcVUGAiEA8zUQsQqOo4QqN36RuuCTtiw6W3w+pbEOouUpFuQ6pdI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2192368},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6dcdbd76f719c9729f3d7edbd1bdd44d95950a7a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.4.0","@mneme-ai/core":"1.4.0","@mneme-ai/correlator":"1.4.0","@mneme-ai/embeddings":"1.4.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.4.0_1778240428090_0.9900145334717281","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"mneme-ai","version":"1.5.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.5.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e1eac2a252b8a59491eda2a8ab8ebe6e3adcbd16","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.5.0.tgz","fileCount":436,"integrity":"sha512-yoNHf5oyJ+BqSw7FyhQF7A/q/o1X2ygQ7pgKw4WEPNB6W/+fvyaTxfClRz1uLCmCukvRZlpBD3R3Xeo2td2ntQ==","signatures":[{"sig":"MEQCIFmnWKqnCqWToMH/uTQFvquwhKMCz1BYnAyfxrzJC+RoAiALED9/PEw1NfLG59oWUGPUqdPJp1wf+vGqogo0qh84Fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2233164},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b15eecc42b6d3f1175d1072c32d84a57babe7bf6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.5.0","@mneme-ai/core":"1.5.0","@mneme-ai/correlator":"1.5.0","@mneme-ai/embeddings":"1.5.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.5.0_1778243632330_0.7918717953880667","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"mneme-ai","version":"1.6.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.6.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f2371392016cc5e8665b752ded6cf1ea12007387","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.6.0.tgz","fileCount":468,"integrity":"sha512-+d5UZN9oc8zLUQ9Dfm61OcA1G0NyIILyAbRgzApJ75U2Be+wX3mecbh2RVwf/Ia1evJt+wtQaJTtfGlX1fmGIw==","signatures":[{"sig":"MEYCIQDPpHL1zL3moW1CaSPzJEZa1efwMn0Q9t+0s4oGIXvHzgIhANF8hfHFMjvZcS5XkwBmOcqQ52m9RxX8jhexphASv0Hf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2346240},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"50e493b36fe1bb803713c70c52eff5f70cf5cd67","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.6.0","@mneme-ai/core":"1.6.0","@mneme-ai/correlator":"1.6.0","@mneme-ai/embeddings":"1.6.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.6.0_1778244811947_0.7353380718221358","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"mneme-ai","version":"1.7.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.7.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"086b031562f0e815d2db6eb5ffa8c4d73a181101","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.7.0.tgz","fileCount":480,"integrity":"sha512-HtAx6OMdmykbpkODePsTzXWg2FWJKomwZly8CTb8DyMQFByVFOk8Np8XetjWfF2UjVwY0TXVmCXCDojamOmA4w==","signatures":[{"sig":"MEYCIQCZbpLcw+lSAkIFdxpVscEi5c8OAFMOz/PaNDTpA0h8QQIhAKJKzrb60KVWvBsOiznkduzJbkU2zdMUc6DYRuRewRMe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2461987},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"dfdf0f55b0759c9129edf431579fe2f6eb8cdd20","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.7.0","@mneme-ai/core":"1.7.0","@mneme-ai/correlator":"1.7.0","@mneme-ai/embeddings":"1.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.7.0_1778245831891_0.21699644922612937","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"mneme-ai","version":"1.8.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.8.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"64f6326856e729e7cdf65ba9225d35d612a9564d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.8.0.tgz","fileCount":488,"integrity":"sha512-1FF29f9A3fZyaVDJDHhrKo8WnXgVlk0AdiEG2aiopScdTrVdem+jftcdjA/iUIx7dSICXtloTpGn7/Ra0oWlag==","signatures":[{"sig":"MEYCIQCxDkmjyCJxdR0gEGsUIv9ev2eQ0vYCErx9DSI6HD3x1QIhAI6DBypfqza0yDRU+42QvQw+YaR+g+jpDfRNSf30ubRX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2491285},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0a1f7f381f50ec942bf97fd8fd41c0eb3cd49d62","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.8.0","@mneme-ai/core":"1.8.0","@mneme-ai/correlator":"1.8.0","@mneme-ai/embeddings":"1.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.8.0_1778246766739_0.002230494959569951","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"mneme-ai","version":"1.9.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.9.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1f57571973b72f67cda957bd46d7a9a4722d52f4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.9.0.tgz","fileCount":496,"integrity":"sha512-elExBJebzv6m3Cwb13ZvXKJcWyFJO7L6lYYXm8+1EiiqIQ/cw7ys1J2JsoKs9oy0Xk2zkYfNTCHJ12g5YizaiQ==","signatures":[{"sig":"MEUCIQDBRK16dS9LDnuL2JvHIImYzHfLthOUGIMV1Ht96ueJ1wIgbzfkBdbB2B+61pCdZ5Zjo+8tZrn/OYiZBWD7Lz6xOoE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2513846},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"089ba6cd58af3ec91f173a5c7973ccf88f03dd0e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.9.0","@mneme-ai/core":"1.9.0","@mneme-ai/correlator":"1.9.0","@mneme-ai/embeddings":"1.9.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.9.0_1778247739608_0.8331088967240865","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"mneme-ai","version":"1.10.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.10.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"59cff4984aa00c035004da06e38f807065c39b59","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.10.0.tgz","fileCount":516,"integrity":"sha512-Hq5S4LDBN4+xMLEz6k8khNUSsOtwsN0vdN+YnlMof0Les05rjVissNc7zXJ/M9I8/4sqe+Ij5gzhosAn8SqxAw==","signatures":[{"sig":"MEUCIDH+BnD4OHvHlJVCvdWCWzsAFJLMybBMEiIqI4nF+GL1AiEAqtgX5iIGTdMSAVspWK6VkJkx/zBnHglhAP6Qy/ZIbAk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2622196},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"15134ae1a6a31aa151635d1d8ba1f4cf8c40e377","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.10.0","@mneme-ai/core":"1.10.0","@mneme-ai/correlator":"1.10.0","@mneme-ai/embeddings":"1.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.10.0_1778249564166_0.6551680880224566","host":"s3://npm-registry-packages-npm-production"}},"1.17.2":{"name":"mneme-ai","version":"1.17.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.17.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"65d053a06bfbb2d2104d7b4437aa0eec910fc8cd","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.17.2.tgz","fileCount":536,"integrity":"sha512-Vmr7uv5ndAAFxy3MAIkj/5IIyoEMKG+AKMDPvzlgFq0tAgCeCPjBA/wAdpcAt00toMdRi0kOvHL3CaUwXGfnRQ==","signatures":[{"sig":"MEYCIQDML7slZaI9IEIUzTNmw3ifT+RGU+wuofesddY1zOO2awIhANv9Cmna77ua9l/lyXu7eOZsV/7psVDNBut/JToowKDa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2692301},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"22ba9f8fd63fed59cb05ae5893243eb2ea21fbc8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.17.2","@mneme-ai/core":"1.17.2","@mneme-ai/correlator":"1.17.2","@mneme-ai/embeddings":"1.17.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.17.2_1778268371372_0.5159789150336944","host":"s3://npm-registry-packages-npm-production"}},"1.17.3":{"name":"mneme-ai","version":"1.17.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.17.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"210afbbb77347bd5003cb03c414360f0230d69dd","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.17.3.tgz","fileCount":536,"integrity":"sha512-sBrCGXHsDhdvL1wck4hAG8rmxF0TxF6OrhV4yx5hntMndBGDIKh1cwdwmgGzE1bxIX6BUgDtpy8oCIHAY4EXRw==","signatures":[{"sig":"MEYCIQDgAyy9WB4jQX+LBuzpWxr09+yPLdbaYRJAAJUvOR1DuQIhALvaeENQBojhB3SJ+10geYGso7ZcESgva9/Snh1FamhY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2692301},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1f3767aef57fb8bd90c5193f2e493db002639a2c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.17.3","@mneme-ai/core":"1.17.3","@mneme-ai/correlator":"1.17.3","@mneme-ai/embeddings":"1.17.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.17.3_1778269612104_0.7302548731645444","host":"s3://npm-registry-packages-npm-production"}},"1.17.4":{"name":"mneme-ai","version":"1.17.4","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.17.4","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2f0de3e132ba7967ad303b94dbdd908294cc59b0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.17.4.tgz","fileCount":536,"integrity":"sha512-/1cymjhl3aGb8g9fNszMs1egI2iKISDxLwWCr+d8njmhgqZdiqapJC8Vdz8+K7T/8lH4aVZ71Kzju0aO4r/nEQ==","signatures":[{"sig":"MEYCIQCVDP7FU5fvZM8X6qCZdr3Z/MluknvgFmlZR2HkleJ+bQIhAIKU+C87SpHuGIAb/L4MvUueCMfS3WQl3TVGoSJSA/3K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2692301},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"77c1427abc5a015b10e704eb4b8130c1ddd23196","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.17.4","@mneme-ai/core":"1.17.4","@mneme-ai/correlator":"1.17.4","@mneme-ai/embeddings":"1.17.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.17.4_1778270851395_0.5555745627084465","host":"s3://npm-registry-packages-npm-production"}},"1.17.5":{"name":"mneme-ai","version":"1.17.5","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.17.5","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d783b8dac3be03d614e59ba00b74639dc8df3bd5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.17.5.tgz","fileCount":536,"integrity":"sha512-oiqAHrPM5rGPuEgsMUyAdA/ATxXMPqUHog2OK4uUluAROQtDprHkO8sutYZ9XB/gfvrqDQO/UEpLI+D7uT3j7w==","signatures":[{"sig":"MEQCIFYuIKgMHtnbDyQ3a59Tb6I7NLSbfevg5TFFaVR9iY96AiBm7AoccWza2x8KoVjQprhF93MoxyS/vtrGYYmwhim0Lw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2692301},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"77994d3fe9297b9fe73b984fd626dd096ec04744","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.7","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.17.5","@mneme-ai/core":"1.17.5","@mneme-ai/correlator":"1.17.5","@mneme-ai/embeddings":"1.17.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.17.5_1778271631656_0.17046027176774747","host":"s3://npm-registry-packages-npm-production"}},"1.17.6":{"name":"mneme-ai","version":"1.17.6","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.17.6","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"25d55f4e28df424d5f447e80545c399ab5a2dc0f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.17.6.tgz","fileCount":540,"integrity":"sha512-wstlRv39yQYhTN39gSSut+LW78Mb+G5GlUYcMNHH8wfCBvRQonGh1AkF9S6ROsMNX+ZmkZdztK0eLP2TXTRakQ==","signatures":[{"sig":"MEUCIAxoeH8rFzXcoT7fV0lIwj87WKWS97RbRuyZ6rUxbNtHAiEA07up8FuJTmnn/VNvHIJk7BvzjdRpKr9sRr2AW5x3QL8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2701846},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"016f65c5b1a2a34a9eba556ed92f8020016a52a2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.17.6","@mneme-ai/core":"1.17.6","@mneme-ai/correlator":"1.17.6","@mneme-ai/embeddings":"1.17.6"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.17.6_1778272783680_0.5032332327703817","host":"s3://npm-registry-packages-npm-production"}},"1.18.0":{"name":"mneme-ai","version":"1.18.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.18.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9d7d30132c8b64087414342ec274fc58da903d84","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.18.0.tgz","fileCount":540,"integrity":"sha512-5OqdTNFwQDdcGvlorlD/pAPXoSojFdjf03WmkX67Tz45hXUTYJdmRh50bcAfjmW08dDOdEChDjRGSPeHShyTmw==","signatures":[{"sig":"MEQCIHhJqmfbAgnx2MxF+16+mkIwvUnjnLvzjDGcFbhT++BwAiA4cSS7PfZDLrsoSG3t7/DxbwevfEGxahEtw5EJQU8cBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2701846},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a2ea3aa290ea5127864466ea86aa4fa4e52a79e7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.18.0","@mneme-ai/core":"1.18.0","@mneme-ai/correlator":"1.18.0","@mneme-ai/embeddings":"1.18.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.18.0_1778276437706_0.6536258519564462","host":"s3://npm-registry-packages-npm-production"}},"1.19.0":{"name":"mneme-ai","version":"1.19.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.19.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"df7dc6aa1698c1ad3d85c3695fe653d60aa8dced","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.19.0.tgz","fileCount":544,"integrity":"sha512-oCWgEu3F16e+x7QQgj4RF2VhBZSPhTmkPnPSrEL8bRwWA439R2v/LY9CuEH4v6M1LdFn4ZvHFWfD0zT9QISMWw==","signatures":[{"sig":"MEQCIH/IQC7+RGhWp8BiQDhTxVDPrqRb+lZlxEBC7W6M8ypHAiAe0FqUsf36QJn3RQKwwgP1//AZb3YPpeqcbKABm+5CeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2732611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"73ad57e82dc5e55301396b0f2ac67796f26fce28","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.19.0","@mneme-ai/core":"1.19.0","@mneme-ai/correlator":"1.19.0","@mneme-ai/embeddings":"1.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.19.0_1778298850608_0.07126849719143746","host":"s3://npm-registry-packages-npm-production"}},"1.19.2":{"name":"mneme-ai","version":"1.19.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.19.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"be75c0c8a9ff6252abce4d65a337e59dd4fe199b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.19.2.tgz","fileCount":544,"integrity":"sha512-lc0Ip7sTrIstirVb54gM11NkQ/Rfe2akA6Ww9INVog/WVrGhXD/zKLWtHh/Ft1ME9P+y7PzeuxTld4We2VzWRw==","signatures":[{"sig":"MEYCIQDyFVOwK+3JJtpqp7sswPQhYWa7XTu0uFb4MVo3/wjp+AIhAP3hZxZv84Fr795cq2kcr/npJBH/j8bfvJxaseZoYvRF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2732611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"bf0dfa9cb7b36ed7a140699359427086337cf1a1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.19.2","@mneme-ai/core":"1.19.2","@mneme-ai/correlator":"1.19.2","@mneme-ai/embeddings":"1.19.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.19.2_1778302056648_0.8190951114786418","host":"s3://npm-registry-packages-npm-production"}},"1.19.3":{"name":"mneme-ai","version":"1.19.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.19.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"161fbdfa831c0eecdd071ceaf19f855bcdeb9790","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.19.3.tgz","fileCount":544,"integrity":"sha512-CE2fYNbKaLutYAYGGky9xmmq8o4pXwV/BQ/Cv5yR3kKGjajxtgWH8dn2sbUaG22KHgbN2iEe2z7f00pbxk7h5w==","signatures":[{"sig":"MEUCIBVj0z2xlPoy8jK20FK0qYwO6cyaNMl1S+wSg0uXOyAuAiEA1p3X48XScfLbkNze8Bo5W4jJ/pFxOB56undnuTgX5xA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2732611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b7434a9bad92a99168d9586fa42e0001d483c180","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.19.3","@mneme-ai/core":"1.19.3","@mneme-ai/correlator":"1.19.3","@mneme-ai/embeddings":"1.19.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.19.3_1778302648055_0.4804686189297531","host":"s3://npm-registry-packages-npm-production"}},"1.19.4":{"name":"mneme-ai","version":"1.19.4","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.19.4","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"fba7022984cfbde83c9d8b29581f6fbc807b8d0c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.19.4.tgz","fileCount":544,"integrity":"sha512-JH6x/Y070imEqQw8eExNmmMLMq3WeAgSUH3DQWi0xJohaTXXkk1JTTMElx8h2IOGH6O+M9SSQUM6sBuVQpcK/g==","signatures":[{"sig":"MEUCIGidw4Ala2Aix70uABiIlN6oaXQn0rWqhje+i5XV4KYdAiEA9eZ5iMESzgsMl9uErnhbtCCfrI2AqZWK2lVFOJkibYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2732611},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"21ff8b67598b0835d148a67e5e4b107c1d72d34e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.19.4","@mneme-ai/core":"1.19.4","@mneme-ai/correlator":"1.19.4","@mneme-ai/embeddings":"1.19.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.19.4_1778303682297_0.12121696591186626","host":"s3://npm-registry-packages-npm-production"}},"1.19.5":{"name":"mneme-ai","version":"1.19.5","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.19.5","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2e5de80834093ed61c80ef1a00158c2aca5bdbc5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.19.5.tgz","fileCount":544,"integrity":"sha512-vLnO4+pkMihZSTs5jaO2P8SPXyhTsK5wyOJrckF5U3mMZWlyHLtxboepMaIUesR/QmX8PQdmwva9wfq9ANjn2Q==","signatures":[{"sig":"MEYCIQCJBq1MQZCLt4Qx890qRYULaK3hgcjqGaIKXWFc21TA7QIhAK+jI8rEu7VrlaMY+LsyDjd54uLZIQTZ3muMj/xSipPd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2732816},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e7efbb770793454ed128e9854610d673bbc9129d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.19.5","@mneme-ai/core":"1.19.5","@mneme-ai/correlator":"1.19.5","@mneme-ai/embeddings":"1.19.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.19.5_1778305126489_0.3882566308566535","host":"s3://npm-registry-packages-npm-production"}},"1.20.0":{"name":"mneme-ai","version":"1.20.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.20.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ebcefeead4835877f5f8b7df16762f808988ddc1","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.20.0.tgz","fileCount":544,"integrity":"sha512-ZlRMBNwt6k0vwYD+w8WvYPBS08ojQNAK0vEczyEEL7i3E4oaYKSLlr1d16XFiksiPMlM6qzkDFGm8r6Z57P50A==","signatures":[{"sig":"MEYCIQDWGTIceVUfi6GBCQ0oulgeicJwrcx9Y3Kx7DawDwQNEAIhAMW34YkgFb11CVcY9dwcR46lMecBENYbchck8FDU4evl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2733847},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"67607adec4c35416f379f373a9e17213e3bb66a2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.20.0","@mneme-ai/core":"1.20.0","@mneme-ai/correlator":"1.20.0","@mneme-ai/embeddings":"1.20.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.20.0_1778306544987_0.05127406054172634","host":"s3://npm-registry-packages-npm-production"}},"1.21.0":{"name":"mneme-ai","version":"1.21.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.21.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0747d24e79e50ee460fe2ab701ea17d1090f4135","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.21.0.tgz","fileCount":544,"integrity":"sha512-KlWbOGNdIRi3oGtM584MOSJdiYR+gqqVsdMtZrRbMMD9lj4JLKBqU3bMl5pn/W79ElcNWQrTDqcfH0lK+k1UGQ==","signatures":[{"sig":"MEUCIQCS5bCS3SvJ4xK4ESg3CLA6LucnNrNz6yFhaofWhf4dnQIgPR3y9jy7pPRcSfKjMI1tyVqSjtnVYzXnrRk1J8SEp9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2742050},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"76a3f6ad05222e507e9f978315e49fdba0b19ff0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.21.0","@mneme-ai/core":"1.21.0","@mneme-ai/correlator":"1.21.0","@mneme-ai/embeddings":"1.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.21.0_1778307419526_0.9901807486656597","host":"s3://npm-registry-packages-npm-production"}},"1.22.0":{"name":"mneme-ai","version":"1.22.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.22.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"53012eef72713a56d60182ddbf5e54352e87c510","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.22.0.tgz","fileCount":548,"integrity":"sha512-+iATX7Xr3n82fgepyN05b8L0vcfBDCPdkaoso+CXgZG1+bhzmnlchXZCyePTTVz+Ry71BGEISbTDyZNMCdSIfw==","signatures":[{"sig":"MEQCIBp32tPVltPbBF48+mx/Pe6wQD1piVZjdr25Awt21GvyAiAjfe2i0tjEJKO+40nMB6f+b6O5Dn/GEXikMTPfiAnwlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2768972},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b65c26327e2a8bc0cb4c2a39fbd76f2b6fcf2fd6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.22.0","@mneme-ai/core":"1.22.0","@mneme-ai/correlator":"1.22.0","@mneme-ai/embeddings":"1.22.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.22.0_1778308371898_0.660314166527963","host":"s3://npm-registry-packages-npm-production"}},"1.23.0":{"name":"mneme-ai","version":"1.23.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.23.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"dfec163cbf45245c92900b7314136f0aea623ee3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.23.0.tgz","fileCount":548,"integrity":"sha512-asCePO8mR0qdWj48KL9BNe+qmOHUHvZUdxCdnO/pRwjro8kpjBZZz78/oIBZq7GY0NeIvUBvAiaEIZyNjWgsDg==","signatures":[{"sig":"MEYCIQDenAhJtfMjIsmav6EKO3VE8Aisrw+2LR8ODecGjXxlRQIhAPqM2zkWPpAPk9ipGWWqJ8qPC9N8NCZ4z9Wkk14jDADV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2794155},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0b3c92c8614cb0d55cc99d89f4ac01fd334a3caa","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.23.0","@mneme-ai/core":"1.23.0","@mneme-ai/correlator":"1.23.0","@mneme-ai/embeddings":"1.23.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.23.0_1778309502677_0.7448921339441086","host":"s3://npm-registry-packages-npm-production"}},"1.23.1":{"name":"mneme-ai","version":"1.23.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.23.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"98025e7a29af43262580b848be5b20d2219f648f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.23.1.tgz","fileCount":548,"integrity":"sha512-M7DrvFTYL+EA1Q83h3wCgUg1+YSxgN51vB6LCVzGB/3n0XIgQm416PS50hkHk8gDrojc6fKssGuGQz0lsIT/4A==","signatures":[{"sig":"MEYCIQCxvYOAkqayWSTuGh4mP75mHrFEQoW2805JlZoeAGOQXwIhAN9Q5MmkmU9i+l3oKT6hcEIo5frI45Ub3J8NqQdBjyHn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2799618},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3b0de522ca8d5c2d5b4510ba4ec2dc7ea0fc44b1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.23.1","@mneme-ai/core":"1.23.1","@mneme-ai/correlator":"1.23.1","@mneme-ai/embeddings":"1.23.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.23.1_1778311001110_0.0807302987489924","host":"s3://npm-registry-packages-npm-production"}},"1.23.2":{"name":"mneme-ai","version":"1.23.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.23.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ea68ebec99de2bccadb2912582f071c0695b6944","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.23.2.tgz","fileCount":548,"integrity":"sha512-H6RaAs1No1wPtKEso1uJSgks/CTLxa4sk98ad42pKnc7ZylWDJorw7A88aQlrPVp3qYDIe+QUUESJeYp/P6ODA==","signatures":[{"sig":"MEUCIQCcl1am+yD/EY7k1UrbggK0iXfhA2NwJDwMr5jUQPumvwIgGP2Fov3kvNs9iNBvY+GGnWi1RKBKpDThbRBDs2hOOTE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2805186},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"454e60add0dc3a05d1115e4b1379fb8798966caf","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.23.2","@mneme-ai/core":"1.23.2","@mneme-ai/correlator":"1.23.2","@mneme-ai/embeddings":"1.23.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.23.2_1778311941775_0.8080080731689223","host":"s3://npm-registry-packages-npm-production"}},"1.23.3":{"name":"mneme-ai","version":"1.23.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.23.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"bdc933e1178dc9744a3954010bf01df6de1875f8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.23.3.tgz","fileCount":548,"integrity":"sha512-gBPH6VkTLbVkZ5sqT5BCW+qLtPzyjvet80nkBOxVD1dPO8NILxCGnF3A3aL2d84vZLtHPAFttgBNAEdQyn2ElQ==","signatures":[{"sig":"MEUCIEpcjIq9920pHYpohsYVPf+j/H5LqKUVddq8RUDjIm09AiEA+AQPfQp/iy+6ekoQFSMJ6TEjpGRJymsoYRVEiJcLfJA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2806854},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ae245b1c5b515528c086c787495f476114b478eb","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.23.3","@mneme-ai/core":"1.23.3","@mneme-ai/correlator":"1.23.3","@mneme-ai/embeddings":"1.23.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.23.3_1778312713964_0.732676807069599","host":"s3://npm-registry-packages-npm-production"}},"1.23.4":{"name":"mneme-ai","version":"1.23.4","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.23.4","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7b016f713895d21890b33a3f9a4b8cc4cf373ec5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.23.4.tgz","fileCount":548,"integrity":"sha512-/Ud3DK7zReV0Ftb+XzIKZXzcSlhX4/DKRWzbTP0fTEje8wNSd6i7nFRpNbqmSyVHp4BiJSMYnAc2Uh6pxmPF4Q==","signatures":[{"sig":"MEYCIQDQb1F6jKK3IFZng+lmsrI8GnMHxV4g6cqyLvewhBNkoQIhAJc5BzAFr0SSAunlWvztZI9KlQrMYYN8SIvSMykGdwsZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2810432},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"69873d3805cd744549fa56e81f28eeeb3614799e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.23.4","@mneme-ai/core":"1.23.4","@mneme-ai/correlator":"1.23.4","@mneme-ai/embeddings":"1.23.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.23.4_1778313847506_0.8845557313501209","host":"s3://npm-registry-packages-npm-production"}},"1.23.5":{"name":"mneme-ai","version":"1.23.5","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.23.5","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ae9b5338bf936cf92e7bddd356788d1c8b38efda","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.23.5.tgz","fileCount":548,"integrity":"sha512-Q5nqhae0/BDeGI1gY6ZqE/ZP8BNT3iMyac+7Xmo+TwTa9J0uxTyOK4P6Bsm0Uxyhha1yofQaopIN4PpFb1CWDg==","signatures":[{"sig":"MEYCIQCo1X8gVi6pC0vbTsUEuD6NV5x0dhoE3SiUJ5KK/Zw4wwIhAPPDzCwTO77xdGAI1tQyaK37mb+rECKJkgIQgQEsheI6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2812993},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"570f19e10ce562ce2c78dc00e35d376caf2b3124","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.23.5","@mneme-ai/core":"1.23.5","@mneme-ai/correlator":"1.23.5","@mneme-ai/embeddings":"1.23.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.23.5_1778315579089_0.7579917956210296","host":"s3://npm-registry-packages-npm-production"}},"1.24.0":{"name":"mneme-ai","version":"1.24.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.24.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"39fabe6d00140a053425c2a9dfb3e649c4907518","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.24.0.tgz","fileCount":552,"integrity":"sha512-XmqGkVcLzJlugDGLPcOD9vK3zXIUz0xvYX/s1ixsLo32dae79mbzuE18NZqL81V19cd88ct5rddxf7q7xUdEmQ==","signatures":[{"sig":"MEYCIQDd3i/QTbKG80NaBeQp6rF2NhlBx9OA10BXKMavIT4MZwIhAI6hjr5Oi59wqF9k1SC5HJDvrPxbIC4Ba+hVnagpIeJn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2830461},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a92d1b7e6ee3f2a47e99b861501eed41310c884b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.24.0","@mneme-ai/core":"1.24.0","@mneme-ai/correlator":"1.24.0","@mneme-ai/embeddings":"1.24.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.24.0_1778317982824_0.9807858500658753","host":"s3://npm-registry-packages-npm-production"}},"1.24.1":{"name":"mneme-ai","version":"1.24.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.24.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5ecf65e1ca56651e5a0738c86ba71055b4b9628a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.24.1.tgz","fileCount":552,"integrity":"sha512-0rzQitJL4S2kG7JkQc1EG+WvM/i60yucYupBfcAokJKsoJfrvwDA03We0tmmrCHRqUHNy4xOJcwPTzrL+Gy/OQ==","signatures":[{"sig":"MEUCIDtQBLtlGjsX8QaiiSliDaGJmhwfVdgnZCJc0zUMY1GzAiEA7qzoqeBTN1vfSHKW/VYJW3MQ6cA1gRAhgjy1lIZW8tQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2833661},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9b00844361d5a33f5f75966e962967146e893260","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.24.1","@mneme-ai/core":"1.24.1","@mneme-ai/correlator":"1.24.1","@mneme-ai/embeddings":"1.24.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.24.1_1778319406962_0.418129707041361","host":"s3://npm-registry-packages-npm-production"}},"1.24.2":{"name":"mneme-ai","version":"1.24.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.24.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9cdec35b1d1f803de33855c2d5798a1364b652c0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.24.2.tgz","fileCount":552,"integrity":"sha512-91RFglmWny9eBEOhmO0VyH0GkYWd0bHAzn20fR6eR4vTMxtizDf3gC5N8OCZA2qVMtKDKBRlST4Yp0UAbmRp0A==","signatures":[{"sig":"MEUCIQDDoPZhxYK6+3fqmkB3VnJvrOTpPLWeVwWhsLehamNYCQIgA1Yyn8NEvAy8drhI41wdVFPcVy+X0FrR/birMpYCgxo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2833661},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f6b1447bbe9819524f37015e124b3c6a483a6cec","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.24.2","@mneme-ai/core":"1.24.2","@mneme-ai/correlator":"1.24.2","@mneme-ai/embeddings":"1.24.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.24.2_1778320646480_0.3026519948864437","host":"s3://npm-registry-packages-npm-production"}},"1.24.3":{"name":"mneme-ai","version":"1.24.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.24.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"387b480b4a62733341961c2eb0e6b85be158d24f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.24.3.tgz","fileCount":552,"integrity":"sha512-fVaansx9tntcubZaKw9+Hf9wXM1snq2cA9w2Wq8lMqvF9sF/UsI3MaeZ4BIV6bbhgQvOJneTm0vtUwQXUufoSw==","signatures":[{"sig":"MEYCIQDZ3V+Oi3ye/YKau3pJinvPKufntPsQ3uol/sPxzcGwmQIhAPYlcGO3QBWlsCxSB7FyDWpM67eK+jy7mQG1F90/uVQc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2833661},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"05fd51abdb9a4152be80fb7061553f6ee5d5f12f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.24.3","@mneme-ai/core":"1.24.3","@mneme-ai/correlator":"1.24.3","@mneme-ai/embeddings":"1.24.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.24.3_1778321078185_0.047764773328960564","host":"s3://npm-registry-packages-npm-production"}},"1.25.0":{"name":"mneme-ai","version":"1.25.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.25.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7de92976c8cbf8735560ade235db2683cb980439","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.25.0.tgz","fileCount":556,"integrity":"sha512-HI99PVkN91qGK/7QBLzgBlu4XqXUt2c7pvCWYl9Z4KL9T45Z+EWWq8kRYGPImLGQe+48I99tdBwEq6ZYtIYV+g==","signatures":[{"sig":"MEYCIQDI4T7qtVZ8jaEp+dZkyQHByvOFZZMhK4w/vv9cm+1GxQIhAIgFlSKIr86ZbTSN/tvwKhICjuPqEhaNdBkwKRPIghzm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2847997},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"643c41f3720bc76062f477a42cdb8629562d5429","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.25.0","@mneme-ai/core":"1.25.0","@mneme-ai/correlator":"1.25.0","@mneme-ai/embeddings":"1.25.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.25.0_1778389524515_0.9320677111852147","host":"s3://npm-registry-packages-npm-production"}},"1.25.1":{"name":"mneme-ai","version":"1.25.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.25.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f814f67730c3adca6f83af8cae9d1cff2e08ed2b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.25.1.tgz","fileCount":556,"integrity":"sha512-Ygvol/+Rc+i4fmn/tgofDGiRUZB6YK9HnA41NlN4H5wXtxnKDtUF/4tCPu/2NmCpbrU/FnNF/P+aNcC+LybQPg==","signatures":[{"sig":"MEUCIHjML5XCBVoG1jGJ8okRlH7KkER58g2H25GYGq8B++h4AiEAh3SHPLK0Tr+I8Pf4rPhap4jwnqkmKA/oWNdiQbNUeWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2847997},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"73a294e7d6b4cf9b754449827b0da300755084c9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.25.1","@mneme-ai/core":"1.25.1","@mneme-ai/correlator":"1.25.1","@mneme-ai/embeddings":"1.25.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.25.1_1778390829023_0.345816742290433","host":"s3://npm-registry-packages-npm-production"}},"1.25.2":{"name":"mneme-ai","version":"1.25.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.25.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f545cad95c4a2350e78e8afff230566e03957d61","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.25.2.tgz","fileCount":560,"integrity":"sha512-4i6gcXpKTstMIxKMurh/TVsFNGYqQPSdUar5Qvxbu/mOgC2i7s6aMmWd/KxJeUKIVl0HjNEPuuiQpGQtncAnIg==","signatures":[{"sig":"MEUCIGYU28fa0xE1q9KT3q4RecMp4l0/kIn2k87UC9p7z1Z6AiEAzTytPPwo3ypuU0X2g4mBlRPqXfyVKSUSQPC9Yie7FyA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2863915},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"65ab5b6094fe31d310f6ed681c8cb69ed859f2f2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.25.2","@mneme-ai/core":"1.25.2","@mneme-ai/correlator":"1.25.2","@mneme-ai/embeddings":"1.25.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.25.2_1778393467376_0.8253907641709108","host":"s3://npm-registry-packages-npm-production"}},"1.26.0":{"name":"mneme-ai","version":"1.26.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.26.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3f401bdc533dd11a2b382c1c9c7c64e3becf0249","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.26.0.tgz","fileCount":576,"integrity":"sha512-bCt+lojTQcvwh7KX1WtVu6RlpTWC5qyI+qrJtVp+cB01ABzVf0nJ87CP4UQe4E2/VnaZfvesDzzd0wUUd/yK8Q==","signatures":[{"sig":"MEQCIGUvaZa9OCipY04I8sh4vTRczFyrPmU0VWirnedhumlzAiBFT7OQJWYXK6tCMVQivWIxex6SUun3uWS59XY6wd+qYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2891667},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"dc9c87a26ab8ccd79f0a1c3e5420aa69972afb68","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.26.0","@mneme-ai/core":"1.26.0","@mneme-ai/correlator":"1.26.0","@mneme-ai/embeddings":"1.26.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.26.0_1778397785759_0.7949839181203022","host":"s3://npm-registry-packages-npm-production"}},"1.26.1":{"name":"mneme-ai","version":"1.26.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.26.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"de6567a03264da87bd9cf77c23b6782593a4d976","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.26.1.tgz","fileCount":576,"integrity":"sha512-AH37o6hWCjtBBPYn3JoauUjfORpZnlu6Ux51uJjNeZabdin9/CmvSToWrKSxSaIauMu6OoQY+Y2q9m6j25d25A==","signatures":[{"sig":"MEUCICkevpyljcHRuGxcBZwKPN72HZcYm23cqjjUSw7qX8GnAiEA6ODLXgnFH2KyUnHj5jSc5hw5ZOz8CP+wsPo07tQSGO0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2897246},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"26f23f8077fe01b51ce6edd55a9f85573dc3a5ee","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.26.1","@mneme-ai/core":"1.26.1","@mneme-ai/correlator":"1.26.1","@mneme-ai/embeddings":"1.26.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.26.1_1778399000225_0.263069846096746","host":"s3://npm-registry-packages-npm-production"}},"1.26.2":{"name":"mneme-ai","version":"1.26.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.26.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"18558e12d2b648693b9d17f14ad5046b1edf9f99","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.26.2.tgz","fileCount":576,"integrity":"sha512-/yCHQoR09pwUI+dnNh4SZ61jX4n5LVcgNyJBn4U7piGGfA37F4gKHMnKYcFNIW7+bXP6xGH+Xy8xOPz925KHIA==","signatures":[{"sig":"MEQCIF6ulslZwkvqFtniBkOotKSpPcGhWNPKVtUv+f6GNBwPAiBPRkVmmjYliwK4h0YXLckGsckHECheWr1zNtLyezAeWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2897246},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b9ff94481904e3aa606c78365da8893b79216cbc","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.26.2","@mneme-ai/core":"1.26.2","@mneme-ai/correlator":"1.26.2","@mneme-ai/embeddings":"1.26.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.26.2_1778400256086_0.5552333106055487","host":"s3://npm-registry-packages-npm-production"}},"1.26.3":{"name":"mneme-ai","version":"1.26.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.26.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c9e049543d28bc2029762462bde869c76657700e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.26.3.tgz","fileCount":580,"integrity":"sha512-mL0UPfdh/OV86VI+MKQ5n0PGUq0OrBonYEmTzjq/l/6ziVWi5CVAczK//O3evjR3IqLjkdFIOgG+YL1/XQxVJw==","signatures":[{"sig":"MEUCICz4AVbQxSZyJtQrJ0wkzQO6idM4lQGj+Sjtok5jR/DuAiEAgb8JhnUGImsyCw8edbBY5ml/3H3lYxUKCyCroHAvIjQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2915384},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"12228573cce225175c4fd375481792dad0f499dd","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.26.3","@mneme-ai/core":"1.26.3","@mneme-ai/correlator":"1.26.3","@mneme-ai/embeddings":"1.26.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.26.3_1778401895376_0.3441442937705146","host":"s3://npm-registry-packages-npm-production"}},"1.26.4":{"name":"mneme-ai","version":"1.26.4","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.26.4","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"72fe06a7f988dd57f838ebf983902efd4de854c2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.26.4.tgz","fileCount":588,"integrity":"sha512-0dBgF8JSRlMZ/lUxVxUgF0QcQfjUkdw3I+pyn8ks7wa9GYNGnjKjzxljZi6N7ZLrJBmSpk0Ho2JkUQ+/zvXguA==","signatures":[{"sig":"MEYCIQC1EZ9Wzxw/zRpQQhzqrO5HDdBU/crYKRkQE0qGC/DyzQIhAIoIMhjrnOE6JgRL5ggdkBvY1AiQShLhOtIdScwVkWEZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2933680},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"aba61dd5bb258bca5b6acdef7e6b32dd921536d9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.26.4","@mneme-ai/core":"1.26.4","@mneme-ai/correlator":"1.26.4","@mneme-ai/embeddings":"1.26.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.26.4_1778402923702_0.13866586034658934","host":"s3://npm-registry-packages-npm-production"}},"1.26.5":{"name":"mneme-ai","version":"1.26.5","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.26.5","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"321273c7f5ab883d826a504c17a624cca2556734","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.26.5.tgz","fileCount":588,"integrity":"sha512-L8UB8GBoYcPY6k74FfUqzTMq3YqfnDtQ81E4bvASTnuxP6FC3RTk7xO1ZqfUQnFmVHx+aHF210j6hAVx8qpmxA==","signatures":[{"sig":"MEUCIQDT4HBg2d8K4fWrYNDWdKkVWC4xkK6rF/79/LHtkqzcQAIgO4dkS56R8pjHjx3SjYX0Yn/2D2VGmKBX//zPfgVL4ME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2933680},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d888d44233d0745df1ec6602a200e5b77b8d301c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.26.5","@mneme-ai/core":"1.26.5","@mneme-ai/correlator":"1.26.5","@mneme-ai/embeddings":"1.26.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.26.5_1778405620696_0.45159574998712326","host":"s3://npm-registry-packages-npm-production"}},"1.26.6":{"name":"mneme-ai","version":"1.26.6","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.26.6","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"11212c743cdf57c5f48c5fc0aca84bc6d7f8aaa1","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.26.6.tgz","fileCount":588,"integrity":"sha512-UEiQRIGxN4nGuCdeabPXmOsSQ72Q2WZQIBGw9cA9ZchQdaFA7vwinBK9d+IhQrmmBKguHFu6FJ6EeSK32ygPaQ==","signatures":[{"sig":"MEUCIC60g1vc2Nw4vzcVhHJJDFiFY7lM6F87lQFLItsiN++bAiEA3C3lkVg1DdPRGnhu70i0ClDZtnR0AIdFQLy6WU+dhiE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2937220},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"069aecfc34541f19fb04415c6dd605849d3d6e1b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.26.6","@mneme-ai/core":"1.26.6","@mneme-ai/correlator":"1.26.6","@mneme-ai/embeddings":"1.26.6"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.26.6_1778406881227_0.4406618694387965","host":"s3://npm-registry-packages-npm-production"}},"1.27.0":{"name":"mneme-ai","version":"1.27.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.27.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"937533ee3a65eb8866a0727c5797adb7fd2cd6f4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.27.0.tgz","fileCount":588,"integrity":"sha512-bOwzlc3Nwgzb7vHCQaW51ARUz/9TuTHJgIqOkylA9IbIiADmGg/dTYMS9q4/QT3IfoDYT8zJSO2R8UUE8nU37w==","signatures":[{"sig":"MEUCIGDAFJxJ4QEiAIbctCO3wEELA9rldPjfMvV7cTVSddK0AiEAoqemte5J5bqN12d+FOdvPc84hUp56tHihbl0Hz+Wdvs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2944560},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2cba2c8b49dd794d585aa372ff5593ead1fe8726","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.0","@mneme-ai/core":"1.27.0","@mneme-ai/correlator":"1.27.0","@mneme-ai/embeddings":"1.27.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.27.0_1778407927771_0.5736043199177965","host":"s3://npm-registry-packages-npm-production"}},"1.27.1":{"name":"mneme-ai","version":"1.27.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.27.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4cbcbc1222bcac50fc6eca03f1c293982ba5840e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.27.1.tgz","fileCount":588,"integrity":"sha512-zQ5yZQpLn6HvvSstHb9lQ8x55Ie9Qtj5kPBRzIItHBxcUN+fv0kBK9je0zr5l4/4YoF8UetDOCVpwv9yMj0iPw==","signatures":[{"sig":"MEYCIQC3ZayGVcQ0oVvKvjo2z6PRhg2EKARAN59DG7pgQ1xOhAIhAK5bDUyWGN0tPy8lTw54kRcgv/L+hdi6JCT3/W+QnzJy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2944560},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"22fbb31e6ecc4bcc26cad06f6f5e47223f7e87a7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.1","@mneme-ai/core":"1.27.1","@mneme-ai/correlator":"1.27.1","@mneme-ai/embeddings":"1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.27.1_1778408572960_0.35559238620000144","host":"s3://npm-registry-packages-npm-production"}},"1.27.2":{"name":"mneme-ai","version":"1.27.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.27.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6ba8f1ace40241eef85965eaeed0f79afd7118d2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.27.2.tgz","fileCount":588,"integrity":"sha512-ZiCEdlyNjj1HorKZzto2LcPRkB9qrhn551A0aAszwbQm+II4Idqye1soMsjiTyiLjsD396wuZxbJGMzcz7tXxg==","signatures":[{"sig":"MEUCIGbLnf1xKJkIfFUHKP0TSpxMybKwzEqwF6JiBtxoGQKnAiEAr6Vvyhc4gIkSNt8/q/I9SYqJQd04bVVVxgd423dk6sQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2947138},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"50995fb161edb3ddfa3e024b3cb5980c412e23ab","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.2","@mneme-ai/core":"1.27.2","@mneme-ai/correlator":"1.27.2","@mneme-ai/embeddings":"1.27.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.27.2_1778409372002_0.2524874206283525","host":"s3://npm-registry-packages-npm-production"}},"1.27.3":{"name":"mneme-ai","version":"1.27.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.27.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"28f5b7a66f5ddeb2ca0c6fc4de1c921211c47127","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.27.3.tgz","fileCount":588,"integrity":"sha512-XiL2QLQSHGxIP6a++wBI+EHzhMVQI5ZhjiDPk7/kGmJHIPQXlnK09jD/ooJ5yKc9NgJsC7oaJXX4Lw34VWthzA==","signatures":[{"sig":"MEQCIH6tThtH57Ez4ttCAIjQtxRFCktByzh7OuCVlyatxHjWAiBD+Y1cqJzVO0jlr1Z104RZ0gU20aSUnhXQW7On+jNXUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2947138},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"294d55525e1b89b4b95ac02a6642b8ac50ff0927","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.3","@mneme-ai/core":"1.27.3","@mneme-ai/correlator":"1.27.3","@mneme-ai/embeddings":"1.27.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.27.3_1778410438939_0.13297664160345124","host":"s3://npm-registry-packages-npm-production"}},"1.27.4":{"name":"mneme-ai","version":"1.27.4","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.27.4","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"68a800184ad8d8b3860f12afea85f80d509ac965","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.27.4.tgz","fileCount":588,"integrity":"sha512-BNw18eR8r2MCFh99kIJ+aPn+HM3X80up2X5OtNVDfsYyf6jyqbsBHxByd6je1UAiEGNrCpcC/Ntk01rPENyg+w==","signatures":[{"sig":"MEYCIQCIH8r6ad0rJg5IVU6yyiz4M6g9hWTlhNAu2OCImezQogIhAMeqUJQ93l8Wc7o9yiiKM2EVZplz87CgaDHu7ZVvyjoM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2952918},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c4f7a88bec54c86c7cc0f7a1e4d633490737203b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.4","@mneme-ai/core":"1.27.4","@mneme-ai/correlator":"1.27.4","@mneme-ai/embeddings":"1.27.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.27.4_1778411612000_0.8797189166015624","host":"s3://npm-registry-packages-npm-production"}},"1.27.5":{"name":"mneme-ai","version":"1.27.5","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.27.5","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c8640613bb0b2bbc2c297457a7eb3c8ba437fc8e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.27.5.tgz","fileCount":588,"integrity":"sha512-Wm9LIxAo1gi1oC2wThzMIlro0Wtw8q8mV0LF+mhaOxnIqo/a+RJ/cf5ausP5QaijQbR0ZOFWTwwKbKKZfCZeKg==","signatures":[{"sig":"MEUCIA3OM1QDi2ISsAfpSwQGtfJq3p+ZhjKow6AwBoSciHniAiEA3FZApj3dQRhG6Rf2HHCcgLDBqLbHY1yBmDDWJ/kZQu4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2954190},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"530a916f8cee57ff21745b5fbeb3f6154dc436a7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.5","@mneme-ai/core":"1.27.5","@mneme-ai/correlator":"1.27.5","@mneme-ai/embeddings":"1.27.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.27.5_1778412818711_0.7325720826037974","host":"s3://npm-registry-packages-npm-production"}},"1.27.6":{"name":"mneme-ai","version":"1.27.6","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.27.6","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4f15b478d00b8ab0d7701faeb3cf49be2a38be55","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.27.6.tgz","fileCount":592,"integrity":"sha512-/Rhe6L7FOMhCYVGih4EyEOdRnWR1MhHhI7nyN9Hnw6R/1EDS6qUfcTmg2BVI79KVKb8woY8XqFEBLM4kqDC5gw==","signatures":[{"sig":"MEUCIHhqCG1rHiD27lar5TQ9/Z0GMLebZvIQmn8fY2iEaMHGAiEAhUgkh3vueUA+d/O43Z5o2//eE1xfIXhUMbJVT9eXIpw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2968505},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"532832f1aad2e9e6a52eed1c7d180c858007f03f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.6","@mneme-ai/core":"1.27.6","@mneme-ai/correlator":"1.27.6","@mneme-ai/embeddings":"1.27.6"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.27.6_1778414438856_0.4161269559717129","host":"s3://npm-registry-packages-npm-production"}},"1.27.7":{"name":"mneme-ai","version":"1.27.7","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.27.7","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d3fb5845abae053eeb588ddcb7d9899de6cf9c2a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.27.7.tgz","fileCount":592,"integrity":"sha512-9/IZpSo3PEi79yFmc8bVAiZEAgxBTfGHFs/4PTpm5B0AaC0JNd5ye4GNgm2/mB2ADcWYdUPPClmt/9o2yDHKWA==","signatures":[{"sig":"MEQCIF5iyPtrP/KRYYyRU2EOsynVcUgcS1QMs2wFVmXeqZUfAiAe5HLSLV9W2xhjPDosY4ANPTcByWy/GQSwhQUR95hVuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2972562},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"dbd4204b49d93131c7f8c4600a3a18d79875dd00","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.7","@mneme-ai/core":"1.27.7","@mneme-ai/correlator":"1.27.7","@mneme-ai/embeddings":"1.27.7"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.27.7_1778418766014_0.12490304945915587","host":"s3://npm-registry-packages-npm-production"}},"1.27.8":{"name":"mneme-ai","version":"1.27.8","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.27.8","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"13cf0cf140bdf14bfd2efd1bbce6dbaa411ccddd","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.27.8.tgz","fileCount":592,"integrity":"sha512-gGomlJxzzzY7InnmbiYNomUfBO7qUIEQ1zqkSdMCjeAkfdygUHTd7Mcr8hZWNi4D4p3TQTP7tOQttgsIlcl2qA==","signatures":[{"sig":"MEQCIERliS+fwJBcYuSfZqCRTRM8XQDYCnPbzvoHyaNTvu7vAiAhmyQg38Kb0GY6RjqRk9UU4u0qKbihZAdYhwrt9WMxng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2976170},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d5fe7021868627485cdb9c1f920c31b71fd961a2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.8","@mneme-ai/core":"1.27.8","@mneme-ai/correlator":"1.27.8","@mneme-ai/embeddings":"1.27.8"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.27.8_1778420644273_0.43252922739212774","host":"s3://npm-registry-packages-npm-production"}},"1.27.9":{"name":"mneme-ai","version":"1.27.9","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.27.9","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"857d09ff1c9a942d3bf461b3a8e70e2aaa80b9bf","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.27.9.tgz","fileCount":596,"integrity":"sha512-dLzckHmgEP6cSt6rnTV9Ql7GXVWppZrhVVyGYMWqdDkjf9STH3GCx8SnMRW43sgJ3lIth/spJ4nMy+jTAhFsSg==","signatures":[{"sig":"MEUCIGv2ohymu7u1+2KIy75QxO9NdpE1txz6T2x21DNJtqUFAiEAsmkRLYhrcVtmtA8mnVUfdZFJN+aWUrpDrOmWv9oweU0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2984505},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d7a7aac6b85bdd35cb343131ada760e3135227cf","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.9","@mneme-ai/core":"1.27.9","@mneme-ai/correlator":"1.27.9","@mneme-ai/embeddings":"1.27.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.27.9_1778424012520_0.28043007987282365","host":"s3://npm-registry-packages-npm-production"}},"1.28.0":{"name":"mneme-ai","version":"1.28.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.28.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"00442b1f2d7bd4d4534759ad96c13cb87aad8b8c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.28.0.tgz","fileCount":596,"integrity":"sha512-4AkmmeKwFZfaU/oZKH/26CUDh4QES3aWX4gptW7UqIEf4xbfFdALfUGmbL7lZnmvE2sGryGzk+YX5GXFxzvX8A==","signatures":[{"sig":"MEQCIDCkTAF50AJJWThdvtfdtAJ1e/ldkn1QVViRbKMIq0/xAiBcjY+n8y/oXAIj34VgV6XYa8+p2UC0DvlX4gBOKDrELw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2989839},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5e58d1a6301e4155e40a64eb75948b878f7e1dd4","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.9","@mneme-ai/core":"1.27.9","@mneme-ai/correlator":"1.27.9","@mneme-ai/embeddings":"1.27.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.28.0_1778425969515_0.36659083280602145","host":"s3://npm-registry-packages-npm-production"}},"1.28.2":{"name":"mneme-ai","version":"1.28.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.28.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"bfcdefe5cf8480896ce3f0b23c249b286706e4de","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.28.2.tgz","fileCount":600,"integrity":"sha512-SixyG/XMwcOr20EiFcCmCQ1uV9EOFqt/4ZZE8Z/OXnWjdbM0aCgwxRQZOjDhH5rgnMTXbAze48rlSuugulZgLg==","signatures":[{"sig":"MEYCIQDfwQXzj042p3clNZD/rACgGejNmKZISB/RgOfdYRrq2gIhAN2xfiqH12f3GxjHRkbdiWVPNNFGXoLmzMYG90imootG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3008185},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b6c814ebbfc991b3e8a3724ca56c994b0535d97f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.9","@mneme-ai/core":"1.27.9","@mneme-ai/correlator":"1.27.9","@mneme-ai/embeddings":"1.27.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.28.2_1778462336945_0.055585601684922326","host":"s3://npm-registry-packages-npm-production"}},"1.28.3":{"name":"mneme-ai","version":"1.28.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.28.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"dfcdfb1bf29af36bd86fe4f9d53fcc46defa1968","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.28.3.tgz","fileCount":600,"integrity":"sha512-K/+TYMPfLm2gbDusA2/M/2yMDrllwPOpj44NM8/be5+4CHd8l+7G/fje8Ys8VlFFi2IkinItA76SxFdKlH+Nag==","signatures":[{"sig":"MEUCIFWGK1cqmp9Caa3j1aWKmtufyrZFnXnZzkEGq9n6geptAiEAut3DtdFkFx2QJKE6eSu5iMAVHHRGrBI1fwnnYcNUG5k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3008185},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e557b8cda8ea6a94992d0c38dfa88e09df00189e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.9","@mneme-ai/core":"1.27.9","@mneme-ai/correlator":"1.27.9","@mneme-ai/embeddings":"1.27.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.28.3_1778463037900_0.11659203843889165","host":"s3://npm-registry-packages-npm-production"}},"1.29.0":{"name":"mneme-ai","version":"1.29.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.29.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2a1b7ce9a44841b2ef615983dc116aa812eaed52","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.29.0.tgz","fileCount":600,"integrity":"sha512-+WBjoUZDSC3Z78YcDEa32OAi6MoB1Rl/xShSzr/8FShqDTNYpNeCNAcxyYJ+qsOaYjgOa92rWh4y0Phmc25mcg==","signatures":[{"sig":"MEUCIQD/Jy8bmpdOwfQLox2aGP8O1lTPBvCeOZBNMNR/xbI6hAIgIaG84UD8fwPEfR8wxDqfLBFyIsih8Y4SQIDEU8sW9zE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3008185},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3da344e874a835299699b092733a579fe551c0c5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.9","@mneme-ai/core":"1.27.9","@mneme-ai/correlator":"1.27.9","@mneme-ai/embeddings":"1.27.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.29.0_1778463637916_0.07065264436235519","host":"s3://npm-registry-packages-npm-production"}},"1.30.0":{"name":"mneme-ai","version":"1.30.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.30.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a4742a720f43c8118c2d05a7fa84dca028677b5e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.30.0.tgz","fileCount":608,"integrity":"sha512-4B42LNpZpLN8vQoKs7ZndDiRLFc3fXU5Gppre3HunksMtO1/emj9ou9hguy0sKrlWoLgQeM8/kmy/AMLJg4+AA==","signatures":[{"sig":"MEQCIADPCAC44mmQhxJrPgIHm2VozKMJ4NN+ImSSTWIGfXWtAiAtZRlhqASIdQcEdvlDHsyCPOM8tlEm1Q5DiNjC15C/qg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3047166},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"27a13a8bc631ade29684f1363513360dd140d224","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.9","@mneme-ai/core":"1.27.9","@mneme-ai/correlator":"1.27.9","@mneme-ai/embeddings":"1.27.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.30.0_1778465941824_0.19740322295158275","host":"s3://npm-registry-packages-npm-production"}},"1.31.0":{"name":"mneme-ai","version":"1.31.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.31.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e38d52dceaa7653de5cc64c1f352ab49f525b148","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.31.0.tgz","fileCount":616,"integrity":"sha512-kd5osl8IF4UJeEaEYfpsR5VKX05rCzg+lQpGJkQfHee6puzgaXhEkK1cdUMGMxpWNzGsdSkh/9XYoq4O/JtXOA==","signatures":[{"sig":"MEYCIQCulWUeJGCoRq47fqkRfyY7X0uQDo+re5dp0EucyIsOugIhAOOXLJTFRmw3+1w/eFtZK5j+DK2zYIat2R9KrhIu+nHu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3072903},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a1e6bd431c2df1aba5496fca2ec2532271111753","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.9","@mneme-ai/core":"1.27.9","@mneme-ai/correlator":"1.27.9","@mneme-ai/embeddings":"1.27.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.31.0_1778468089473_0.42567596175944455","host":"s3://npm-registry-packages-npm-production"}},"1.31.1":{"name":"mneme-ai","version":"1.31.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.31.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3b78c1cabc8d15c54409167ba2df7335efa7115e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.31.1.tgz","fileCount":616,"integrity":"sha512-2LHfJ1xYOmHwanO9LKTrE+o5DCtnxYcBOnLj49zuRBl0q2nILnD5IWJNuP6zDmL7V3hyC+uPw8koH3L9lTIvrw==","signatures":[{"sig":"MEYCIQDMviSLVEoiLBog6Zv9dWH5lkJeuv7vifmjdVMLuZX+9AIhAI9cvJdd6uvTb9KHOIDEWBcMNAJPruph/bkE7v+hzAOR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3076681},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"471280fecd1b15d8962e275a9970f2068e87b3a2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.9","@mneme-ai/core":"1.27.9","@mneme-ai/correlator":"1.27.9","@mneme-ai/embeddings":"1.27.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.31.1_1778469527269_0.263929425895578","host":"s3://npm-registry-packages-npm-production"}},"1.32.0":{"name":"mneme-ai","version":"1.32.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.32.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"418cada4984c16567852d37ca53abcda032633d5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.32.0.tgz","fileCount":616,"integrity":"sha512-DWTqqLgFW0RMOHEtjWAXt3aXyfVk2UPxveN+mNCluTY+L8gODCxoV4YHkY1t+mgnQ8+j5Bcd6hg9NkQluf8fOA==","signatures":[{"sig":"MEYCIQCpP2wYvKhrrHgo7EGIZKZHFUgfXSvhEQI/GJEbJMFsMwIhAKlT5u1+pqFXOivIjyOVF2Fh5kcQmiH82bXkHs+7StEm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3077606},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"85cef5cd0fd6a3cae1d70766c55f269e245defd0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.9","@mneme-ai/core":"1.27.9","@mneme-ai/correlator":"1.27.9","@mneme-ai/embeddings":"1.27.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.32.0_1778470269257_0.16727618983467418","host":"s3://npm-registry-packages-npm-production"}},"1.33.0":{"name":"mneme-ai","version":"1.33.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.33.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"76b25927deca10ea8bd896d1149b8d15cb08a940","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.33.0.tgz","fileCount":620,"integrity":"sha512-0PP0sgjEtQUbvQvyFMwK49+t1wajSktQF5jrzGUAy1B8m8JHyOfn0vXdrZY3ttrkqbRqAxz6gKpwhN/mZtD70Q==","signatures":[{"sig":"MEQCIGXSMvfAHGmQ/rrjfPnjMSMnTn5Kkjc/WRZT/lCtxmjJAiAA+jvIZw3MIsPlE6JbotfMeHiwlVTMnwKgSoWihtwicw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3090818},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e3e6d922f6e266be7835bdf85fb887a37ed25ec8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.9","@mneme-ai/core":"1.27.9","@mneme-ai/correlator":"1.27.9","@mneme-ai/embeddings":"1.27.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.33.0_1778470843171_0.5023697284023916","host":"s3://npm-registry-packages-npm-production"}},"1.34.0":{"name":"mneme-ai","version":"1.34.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.34.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"cf9a5bb1b80d1432e899af633428993cefb2eda4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.34.0.tgz","fileCount":624,"integrity":"sha512-s2RywoQdfgDsnwcrh1xjFbqEEnag4y/ioSuE3y4IBuEOxVWziRohO0cTzbynio07QSQSAyVgjQBbGEmOd9CyCw==","signatures":[{"sig":"MEUCIQD/MDOXW06rJMQtFED3vTjtdkb9WpFPW+2xg6xlRVjQIwIgGAYqi3mgJda0icWarD0HRjPeDXE29TWOpMuvPDR+Tyc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3108133},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"865e46956dd0d49574dd1154d59c89680c64428c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.27.9","@mneme-ai/core":"1.27.9","@mneme-ai/correlator":"1.27.9","@mneme-ai/embeddings":"1.27.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.34.0_1778472238644_0.6229976389657084","host":"s3://npm-registry-packages-npm-production"}},"1.34.1":{"name":"mneme-ai","version":"1.34.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.34.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ba59f2c3b3f09956b7110f6cac2982450e626320","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.34.1.tgz","fileCount":624,"integrity":"sha512-HeuW6KTnCQjAVD8vWX80OeAnm4XoxB9NwbNxY3PKbVIB2pJ6JT+o+YOPzalHd17B5ApgX+8IaaCoa6cWo92fhA==","signatures":[{"sig":"MEUCIQDwlYoJOys/TOyD9X6Sba5/+lPPJZ5toFh7Bs9qgPVUWgIgFoWuv/xllaQu0D03dvkkBj7p7bHeg5z0CDkCJlk+C3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3108133},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a379a67d4f4a759f9dcdec33e9cf9ce15a2e6622","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.34.1","@mneme-ai/core":"1.34.1","@mneme-ai/correlator":"1.34.1","@mneme-ai/embeddings":"1.34.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.34.1_1778472749618_0.2717288926639363","host":"s3://npm-registry-packages-npm-production"}},"1.35.0":{"name":"mneme-ai","version":"1.35.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.35.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e94246f9ccfb5bb57acf645ecd95bf8b987a5bc6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.35.0.tgz","fileCount":624,"integrity":"sha512-qI1NhALsUd8rhMj/dzLT5cIY8NjxSscO+paSHXGV99fM33JyNvx/zJRfIWqwSoY4oshSasYJvubFAvSDbvd61g==","signatures":[{"sig":"MEQCIDbyHVruBTY2wMeDtCScY89XK/v9VKLomllloQ67HylCAiAL2NONp0h3nKxmfZyYy8+dUcutv/CoQn7yCghK1QnibA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3108133},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8a828d9f5c5a4b7f0906f47aecd87f665b1d9156","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.35.0","@mneme-ai/core":"1.35.0","@mneme-ai/correlator":"1.35.0","@mneme-ai/embeddings":"1.35.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.35.0_1778473662314_0.4292680098563695","host":"s3://npm-registry-packages-npm-production"}},"1.36.0":{"name":"mneme-ai","version":"1.36.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.36.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7a67e34a0239391fe17ce05352b5ac641f949055","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.36.0.tgz","fileCount":624,"integrity":"sha512-r5e2NxhEicUM6KPd8k4I/VEsUgGtox40mRzfF0o5zN3mE33OzF2r0Ed1cWPjI/KvCvBHYcbSaoEyM4VFcQXlbA==","signatures":[{"sig":"MEUCIAoYPx83nstQ8DxdJ2D14rS3cgSwy1QGEIJ0fajpKB5yAiEAiTh2BdW5EEl9t2eddtoavfC34kNpSTiKKklg6Tro76I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3108133},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"48498d649b5d79118418e1a5a8ea036e2005fa9a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.36.0","@mneme-ai/core":"1.36.0","@mneme-ai/correlator":"1.36.0","@mneme-ai/embeddings":"1.36.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.36.0_1778474328568_0.5295670100681389","host":"s3://npm-registry-packages-npm-production"}},"1.37.0":{"name":"mneme-ai","version":"1.37.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.37.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"14fd5fe518b918dbc52e21044ebdd88439ece97c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.37.0.tgz","fileCount":624,"integrity":"sha512-MXLItHjeAdYtDLJqE9ehUYraYlYne/pYW5WggfEr69lQAmfcw820JaTFzGXwttqhJ99BtPejjEgAKAcs6VsF3g==","signatures":[{"sig":"MEYCIQCDIXIXrUXd0w/beBJdrk2EAy5w8Z6GJwNZMi7ObSVKoQIhAKb/Xv60dXn+IeKk6g+/E6L7ifCTjK9gcvDDRcZCOYN9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3108133},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f8b8a5e8bdc1313d48380716ac161135d8233467","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.37.0","@mneme-ai/core":"1.37.0","@mneme-ai/correlator":"1.37.0","@mneme-ai/embeddings":"1.37.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.37.0_1778475696147_0.9029068278923127","host":"s3://npm-registry-packages-npm-production"}},"1.38.0":{"name":"mneme-ai","version":"1.38.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.38.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"40170dd1ed342dc2a4688b3390b6044cd6dde363","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.38.0.tgz","fileCount":624,"integrity":"sha512-k9zztd5rPsRn+nKwMYqHUWaxaJmfGWlmearJr2W99BtLVnGBPlstqPqMrKjdRREUbyEWoHeTIJLUtOz9A4OdhQ==","signatures":[{"sig":"MEUCIQCS+V17CGT3kF7g0VS1oIw9EidDWSMhV/f3m4y03r+OQwIgQuNxiB4DFZZjq1trWdeTBMMi25rJKl1ucrWXU8NTTGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3108133},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9c6ee983087681605ef61fcdec0f83f27dcb3b4b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.38.0","@mneme-ai/core":"1.38.0","@mneme-ai/correlator":"1.38.0","@mneme-ai/embeddings":"1.38.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.38.0_1778476204189_0.6522250167544574","host":"s3://npm-registry-packages-npm-production"}},"1.39.0":{"name":"mneme-ai","version":"1.39.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.39.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e093aa5e7479acbb1a08ca930ea0b98edabfd6ef","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.39.0.tgz","fileCount":624,"integrity":"sha512-RZ3jZgdbehfD8JbIiVW5hcH6ZPJFKakyIschXw705/oYKurZGKZq3xnXaQSseHH4kDCrVuOCDtXQe5tVPii83Q==","signatures":[{"sig":"MEQCIDLi6FLNbIsMGqxmxJj0s/6grcu+KnMneCU5F4Z1bcpBAiASIP2TPJOF2nlWist7eQu+jaE8FvdcbqUmI36uzf/FyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3108133},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9bf5482b09983487c75d4238dc7fa89310b79b84","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.39.0","@mneme-ai/core":"1.39.0","@mneme-ai/correlator":"1.39.0","@mneme-ai/embeddings":"1.39.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.39.0_1778479675780_0.8410810291277202","host":"s3://npm-registry-packages-npm-production"}},"1.40.0":{"name":"mneme-ai","version":"1.40.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.40.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"48b329c69ffe82c454416991e67f40df18397d2e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.40.0.tgz","fileCount":624,"integrity":"sha512-Zoea7Q6QtrkKHrvraBetkh6gX7nVvKeWmA929CBTvSrM09hTqV5+TIpq+Rf6dUSrE30LMrxdtgAjuUmfuoD5+Q==","signatures":[{"sig":"MEUCIBGBHbuLwXpv/bYI7zwCbWaoGHJ2WySRFIJ7GpEVh7XWAiEA18B5L5PZYe+8r+NZadHSldZiapIlQEabBwdsxgVO+v8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3108133},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ed3e42b4772fb01317da55b05fdea0c94071b53f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.40.0","@mneme-ai/core":"1.40.0","@mneme-ai/correlator":"1.40.0","@mneme-ai/embeddings":"1.40.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.40.0_1778480357905_0.5918895108503568","host":"s3://npm-registry-packages-npm-production"}},"1.40.1":{"name":"mneme-ai","version":"1.40.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.40.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"72a5a3ad21d02100260e335c82f6d7cc54130d7d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.40.1.tgz","fileCount":624,"integrity":"sha512-qiRdfnOg/NvSTbPQSSMkfVqzrEgvn7Zidp5reHCeVruPAbkVpyIdCyVA6EF9hFPCC0vDKhk4b7UG+Wq/w7ZGMQ==","signatures":[{"sig":"MEUCIQDghJs5/3Uj/FjgOrjT6W+HHJIVsxb2yPXqw1ylf+PuBAIgdpYpvykAXjXZdRhwN9lQHo3YReJ83ogs316AMIS/ScY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3112725},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"077018bf2d0b2a4846e9c7cd59326dae14e47b56","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.40.1","@mneme-ai/core":"1.40.1","@mneme-ai/correlator":"1.40.1","@mneme-ai/embeddings":"1.40.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.40.1_1778482041084_0.8414521225283829","host":"s3://npm-registry-packages-npm-production"}},"1.41.0":{"name":"mneme-ai","version":"1.41.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.41.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a6ceb1359a572e6b80276044f6e77d01c113275c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.41.0.tgz","fileCount":628,"integrity":"sha512-Q3rjy/wM0IBYTwYmSQnBSeMe1r8XtUM9/zgrBUo68dpWTblttO81ITB32rX46fi0dtSKlY/03avdw7oR8aA8GA==","signatures":[{"sig":"MEYCIQC4R1dejt/boK2jOymHMNpISX1N0Dg63cWYsTKwGV/VQQIhAJgh8fXGs/efmP74jsVjCAjBTxXLHWdP2v9rZC7y6ujM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3126161},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ed23070a4506fa6533085fef13c12521defd89fa","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.41.0","@mneme-ai/core":"1.41.0","@mneme-ai/correlator":"1.41.0","@mneme-ai/embeddings":"1.41.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.41.0_1778483578871_0.6180914379218752","host":"s3://npm-registry-packages-npm-production"}},"1.42.0":{"name":"mneme-ai","version":"1.42.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.42.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0b14934831a9e82267ceab36613bc8b526132033","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.42.0.tgz","fileCount":632,"integrity":"sha512-iZhEeXSE0FQVX1ew4Fbq+Px5gVToqpPkQdl/YQ64zII4THhc/+mVRh2TLwHvzKL6x8Yw3moZFp5qDQSAJpA/Ow==","signatures":[{"sig":"MEQCIFF7KGicfKGdl6YKkWeJYmli0QrUVemsbuoZZjePHSXdAiBkHRwGKM5keGfgUG5SLOdF8rZ8jKWzquCHvrgLBvrDMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3159142},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"aae6cc9f3350366c0d6e1f4ea9fc3f1889fcdd25","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.42.0","@mneme-ai/core":"1.42.0","@mneme-ai/correlator":"1.42.0","@mneme-ai/embeddings":"1.42.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.42.0_1778485068668_0.16963210138030682","host":"s3://npm-registry-packages-npm-production"}},"1.42.1":{"name":"mneme-ai","version":"1.42.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.42.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"24a316ac133363fad88ba5eb6ec04e8f18c99ad9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.42.1.tgz","fileCount":632,"integrity":"sha512-Gf4lNOk/9vSzgjCZgKcBZMCWHQH2hmAdEL2Z13kRK2zf0WAbwucfkfHufGQaezFwSiueS3JEvcvnr1EhhYAFmw==","signatures":[{"sig":"MEYCIQCjTfNNA5eazghf+HHyWRrTkXn7bNCU01zkK/V7OM1FmwIhAI2elOpzAWAxlSBL8aWWy5Rr3+3C3ewHsY78nmM6TAil","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3163561},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7f867617e455e857058af6ff820b085efbceaf6b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.42.1","@mneme-ai/core":"1.42.1","@mneme-ai/correlator":"1.42.1","@mneme-ai/embeddings":"1.42.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.42.1_1778485709025_0.6263633454788353","host":"s3://npm-registry-packages-npm-production"}},"1.42.2":{"name":"mneme-ai","version":"1.42.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.42.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1231e95406fd838c061dbecfa943cdf050300c85","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.42.2.tgz","fileCount":632,"integrity":"sha512-wZymvrsN9dKD5mw8avxEBqzGFvAsmNcmpv5TjfoFEQKR9RmrqnZGy7dZNlseweDKfp/ZBmCnqKT/kh7555O7Mw==","signatures":[{"sig":"MEQCIFQTPVjAWcwVJpwBVJMp0c2+tMOI06ceJiGIL4+35PNcAiAftBhWHgalJzo+iwcdTapH16oofw36gxKsQy5hRhFnFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3165883},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e566795d068ef039afdec8461f3002656c868d02","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.42.2","@mneme-ai/core":"1.42.2","@mneme-ai/correlator":"1.42.2","@mneme-ai/embeddings":"1.42.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.42.2_1778486766536_0.8320316089908226","host":"s3://npm-registry-packages-npm-production"}},"1.42.3":{"name":"mneme-ai","version":"1.42.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.42.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"298d0ed63181cdc2c92b5a6ac6a1a80eacc0f0ac","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.42.3.tgz","fileCount":632,"integrity":"sha512-71cI/8mpOkbBbwni6wHy02GSt1KI8HMZNV5H/wKqwcwmTmfALi7d6VGB+lqCxLtdwFLQAQmTt/bkv67vl7kOzA==","signatures":[{"sig":"MEUCIH/Z8Zd8HeZei2DjEPil7pAFON/lYwgI68VYbEsPd+IqAiEA05XgprChP6rEsp+ThGqtutEOH0fQsdhH7DicGf33Jww=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3165883},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"16e76d9089b2bc529f6030aaa3ce5ce353126db7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.42.3","@mneme-ai/core":"1.42.3","@mneme-ai/correlator":"1.42.3","@mneme-ai/embeddings":"1.42.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.42.3_1778487536739_0.6656473719328886","host":"s3://npm-registry-packages-npm-production"}},"1.42.4":{"name":"mneme-ai","version":"1.42.4","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.42.4","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"79a8a70cf48d3afb657a9039311715de2e7da23b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.42.4.tgz","fileCount":636,"integrity":"sha512-whzUElrR8f5Wga2fZ7rpCJZG41WcjM+uRhuha8b8MBGMGe7DDLB2io2vzAKmAIQE/A/SRo4+tE5Ikpp1Q0Z9iQ==","signatures":[{"sig":"MEUCIG8kSp4N2Et4LPEORn3MwboNZRVZxFcGrk4KOrYV1wuOAiEAykDSAxj2xSq1JDrR2Fr029Ynrr2ghxvrKhae1vLmULM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3176568},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"89a3fa992b8d7ffa5b79ed22926f61e79382b541","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.42.4","@mneme-ai/core":"1.42.4","@mneme-ai/correlator":"1.42.4","@mneme-ai/embeddings":"1.42.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.42.4_1778490089295_0.24653224738636292","host":"s3://npm-registry-packages-npm-production"}},"1.42.5":{"name":"mneme-ai","version":"1.42.5","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.42.5","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c5539037aaa3dda882d88c973245bbadef278f9a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.42.5.tgz","fileCount":636,"integrity":"sha512-TbELpqUG3eV3AZhFvMWgJiDtHoN6QxUcjGhshwyi8KDVp2wqLoJcUOUAWkUclt5sd4gVGIX4Ruq5vyK/kQaolA==","signatures":[{"sig":"MEQCIH6zWYidQYJL0GfvNKz/gW5jYlx+P5RJNugsXQNvjXPaAiAFOqHnSUC2FtyG4ZW78UHbyJvlt66L3O04vEQp8lSRYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3178956},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"917ba1f27361247de635207aad8f30676d4c3758","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.42.5","@mneme-ai/core":"1.42.5","@mneme-ai/correlator":"1.42.5","@mneme-ai/embeddings":"1.42.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.42.5_1778490886066_0.08107163175440846","host":"s3://npm-registry-packages-npm-production"}},"1.43.0":{"name":"mneme-ai","version":"1.43.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.43.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5d7a951dea8b81aab2e100ba790e6f93a9461709","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.43.0.tgz","fileCount":640,"integrity":"sha512-JFSk9SnNIQ1xko77x19T2DSPo6Bu6x+S/ruOKyLRSeLJ2KsQqnqgxz9wQTEGJq7kAtoKGAZxrA+7suR+j5C5Sw==","signatures":[{"sig":"MEQCIAhN9itbBj4WN+QSx3GSsiThl1QJm+fexclc0NA9K7THAiBN+L4CWMenMqlDZVNWyI1PD5+P82djaTHAZbuihP8SAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3195833},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8093d4040b9e1c775b874369dbde8e0102cbc1cb","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.43.0","@mneme-ai/core":"1.43.0","@mneme-ai/correlator":"1.43.0","@mneme-ai/embeddings":"1.43.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.43.0_1778491783864_0.694441779283177","host":"s3://npm-registry-packages-npm-production"}},"1.44.0":{"name":"mneme-ai","version":"1.44.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.44.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"da2e651ee8b6494596ceaf73193deaff9362b32f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.44.0.tgz","fileCount":644,"integrity":"sha512-ERv40oP0/cvLOkYuyUvpIUU74dzi4Qgps9ktG64XF6oGWEjzMjIFDaWx9ET0aHmU66JwW7gmiu2IzLawDi+1gg==","signatures":[{"sig":"MEQCICgdP3hn9wQ5flQaEEkPLNtkKsrxG8Ik6tOuKbQLSIlnAiA9ozEuztaWdVmKRSuq5qaZcBXrGsCPqUIfISwIDr8q4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3230561},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1735cf0361be6c71ad588b4e5909a51bda1dcb52","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.44.0","@mneme-ai/core":"1.44.0","@mneme-ai/correlator":"1.44.0","@mneme-ai/embeddings":"1.44.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.44.0_1778495522956_0.666306026962304","host":"s3://npm-registry-packages-npm-production"}},"1.45.0":{"name":"mneme-ai","version":"1.45.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.45.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"21112ad7c672d5e7d13f97d99d03c9a65b4d2784","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.45.0.tgz","fileCount":644,"integrity":"sha512-A4vLn6QrZO/nRTuvy+FZEF3R48zz1tFDUP4I63LBf2W9f+64ZX0WEC/XYCBsA7/HBaxIgw9zZLW3Xh/3xsqyVA==","signatures":[{"sig":"MEUCIFkcXwv15F9fIKvMihI4m8Qj3gn5dJUEqadvanubIAd7AiEA7Wn/XSTS7uFRJ4igWSKIsc2gKeKkY9lZMRvmKLq6zCU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3231290},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"911c5ef3875bd7f60b344698d577142bcb93b3b5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.45.0","@mneme-ai/core":"1.45.0","@mneme-ai/correlator":"1.45.0","@mneme-ai/embeddings":"1.45.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.45.0_1778498309416_0.6775251884289093","host":"s3://npm-registry-packages-npm-production"}},"1.46.0":{"name":"mneme-ai","version":"1.46.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.46.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f09052594d7a74908536131433a5ffde161fb5ee","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.46.0.tgz","fileCount":648,"integrity":"sha512-ttCxfQYD5KkxIVY3zuYPH6Pm++ws8bJrvTcDYEDkyg3qI8Y48Fma2gLFgUSikiK66hFnPvBjg2pYcoUZxCncbQ==","signatures":[{"sig":"MEUCIHXt3S0NhbGe5Lz9lmQxXOB7qTqx2cptAR1qWlWWvjejAiEA+UQPItki1l9K5++lbiX2fVUaTaU2pZ0RHGbaCQ9ohHc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3257532},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4dbfb36421ac16dc03bfadacb24399a822041427","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.46.0","@mneme-ai/core":"1.46.0","@mneme-ai/correlator":"1.46.0","@mneme-ai/embeddings":"1.46.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.46.0_1778500610002_0.1440395853238543","host":"s3://npm-registry-packages-npm-production"}},"1.47.0":{"name":"mneme-ai","version":"1.47.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.47.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"78d647ee704042b54353beba26c8846501dbb4e9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.47.0.tgz","fileCount":648,"integrity":"sha512-g0rmXKTd4hTl4+tIVg0yDKTpzHvOgs4FlOOmVTCnUT8L+QCM6bL/N/cpVy8CnAs9dgGYp9RqodG7ogrGy6ZmqA==","signatures":[{"sig":"MEYCIQCjJj1HSv2RIYGcEvoLReZ/UVViwyyL9QThUUS+5QiEhQIhAMFo1KvDNamtWMm29wISWRIiMgA++4u8TGecLqEGPFog","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3257532},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ae49449dfed58cc8ad0de32b28cdb3b1ee552246","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.47.0","@mneme-ai/core":"1.47.0","@mneme-ai/correlator":"1.47.0","@mneme-ai/embeddings":"1.47.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.47.0_1778502919153_0.30381431662152725","host":"s3://npm-registry-packages-npm-production"}},"1.48.0":{"name":"mneme-ai","version":"1.48.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.48.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"af56c2fcfc718634ff58094b6c437db920f47139","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.48.0.tgz","fileCount":652,"integrity":"sha512-ToRckSggimS2Kc/gE43jJnyUxjWMH/nzIl5wCWruuHhukojPV3DqaID0ve0lBce0rDd8xzuoSzm6G5PEk9yE0A==","signatures":[{"sig":"MEUCIE1RxJfRQ8QZExl9fA6Vya+OuJPq93Ykdv2LqeuIoMRTAiEAt64BGZJlEFiCqth1AxY/RSRBPy9c4w5gYq2pmRNk0ug=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3278752},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5d3c01461cf79857d5bad799c6b8c582d3b17357","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.48.0","@mneme-ai/core":"1.48.0","@mneme-ai/correlator":"1.48.0","@mneme-ai/embeddings":"1.48.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.48.0_1778504516394_0.23588945538173345","host":"s3://npm-registry-packages-npm-production"}},"1.49.0":{"name":"mneme-ai","version":"1.49.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.49.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"649addf06bf4afc7943424bea3e8a58825d0073e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.49.0.tgz","fileCount":652,"integrity":"sha512-JEjb8Ecb73EkiIV9z3s5fTwZPBynyeUF00Ud4wdRuGp8PFgK9RTj3MnleoW1UxeDMDKPq7I+9c2dDw7YQyAFYA==","signatures":[{"sig":"MEQCIGgzHGb7tWFzz+LHFLno8Q0d35S5/+G5404rtwtG3I4dAiBgKzT3SvMqRl80sLw7aHleXRzTxbjtiEc9mi5xo/mvmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3298964},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4fe7cce6fa80a79fb7272631b3eab520f6912a2a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.49.0","@mneme-ai/core":"1.49.0","@mneme-ai/correlator":"1.49.0","@mneme-ai/embeddings":"1.49.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.49.0_1778506817473_0.9992765103313486","host":"s3://npm-registry-packages-npm-production"}},"1.50.0":{"name":"mneme-ai","version":"1.50.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.50.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f4a1dde815f4bd3018bec58791998f032d4eea4b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.50.0.tgz","fileCount":652,"integrity":"sha512-p42bnWTfv7jdkEpUP+/O9Ei5tMHaN8nuDmfsPpBvxw6WgaRmrAmloti83y/xHOg5y7XpBWGTEs04g3PuQdeuwQ==","signatures":[{"sig":"MEQCIEBJ+9b1GIp2eHtagrLzj6yc5rOkthB+VTJeHBx0gCLnAiB4G+kn/zUqvKgkitrsrQbZaYFAguSHxjiMhOcYV3vZbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3299352},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"12862dd5e1d89a6b89cb8c6a0fc625e8040487ea","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.50.0","@mneme-ai/core":"1.50.0","@mneme-ai/correlator":"1.50.0","@mneme-ai/embeddings":"1.50.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.50.0_1778508406328_0.06938506576787518","host":"s3://npm-registry-packages-npm-production"}},"1.51.0":{"name":"mneme-ai","version":"1.51.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.51.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"80c99e5fc2c6d49778e042e41d1e0610659145d4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.51.0.tgz","fileCount":652,"integrity":"sha512-xsveyMmBZ9pJAuMU3QqeXzmwJMtmsfqiE0XMd2FOXejNmtMruZTCbYHVOYiTGf3XQ0KdF2in54Q1yU/YrbXKJA==","signatures":[{"sig":"MEUCIQDoaJafQu0gZjc2J/rPoE1qT3+PaGiBnz+RCpktB08CbwIgD2qkv6xKWQficz7VpfiZviWtKfUvV2hLeQe4vlFiMAU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3308872},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"fa7859776ed39f9e241984fb031cdf4bd13ebc86","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.51.0","@mneme-ai/core":"1.51.0","@mneme-ai/correlator":"1.51.0","@mneme-ai/embeddings":"1.51.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.51.0_1778510887887_0.8525299546550542","host":"s3://npm-registry-packages-npm-production"}},"1.52.0":{"name":"mneme-ai","version":"1.52.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.52.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"65b85bd10fec36a36b86aa3e62d0c51b1ad9269c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.52.0.tgz","fileCount":652,"integrity":"sha512-bRnfW6gdvKWwd90W0+92DibOnRK17bIPUcF6PBywFOPkijOsS/+s6ciS5RzT5xop/ZXStMiEPijqWtNgoK1kyQ==","signatures":[{"sig":"MEUCIF9pFFBlfTsKBsHEHpTYswnEwQ47ruDgz2cHtV9RMfhuAiEAygrFNukfG0aM/DhLf6TkU/Yt/BaMyowhIsnVo8vBDls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3316839},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"dc7dfd16d936b865bc0bb9469dc3281a102a593a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.52.0","@mneme-ai/core":"1.52.0","@mneme-ai/correlator":"1.52.0","@mneme-ai/embeddings":"1.52.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.52.0_1778511789402_0.9877471004709135","host":"s3://npm-registry-packages-npm-production"}},"1.53.0":{"name":"mneme-ai","version":"1.53.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.53.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c6565555dd44ee509607a2d80270e9ec81382da3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.53.0.tgz","fileCount":652,"integrity":"sha512-eiJSMuzOGg+zHtYayyv1C5C8qfq3NjwaFr3GOiu/dy7K+FFQFZZUS2WVSFY4j3fUVAj87FLuX1gsLj/GDx7Lkw==","signatures":[{"sig":"MEYCIQC2lIwT99lHbBMzVIYDMPmyYqN6WI2yyjiI9M4xxvnwBgIhAPnoQiwRoJS3meowBrZ45ax4F97YIIG3iEeFPIr3pXWi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3316839},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"aa890676cd2d21da4e0a1743cc250b9dd97ff824","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.53.0","@mneme-ai/core":"1.53.0","@mneme-ai/correlator":"1.53.0","@mneme-ai/embeddings":"1.53.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.53.0_1778512857357_0.4974130089762949","host":"s3://npm-registry-packages-npm-production"}},"1.54.0":{"name":"mneme-ai","version":"1.54.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.54.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b75e315961021dcc02b470a20b2e80140eb372a5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.54.0.tgz","fileCount":652,"integrity":"sha512-tWtoMHarGTFbaWRmXvq7NvBgwyph9XbsmfJhulxI60j6lHyN2WfkEtkqytpP5uTRxqYXEVr7oxTjN2D/OE8VZA==","signatures":[{"sig":"MEUCIC2ZEogPQf37wIEjJ2B2jN12WdlzFDQfGrhtDSMjNk/cAiEAuUqBWjnUWCCnowS9GavwsTQSCBaukCFyKgQnP+jY8tM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3316839},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"02a71e0eb12f936e6bcbb54270c10acc31efee42","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.54.0","@mneme-ai/core":"1.54.0","@mneme-ai/correlator":"1.54.0","@mneme-ai/embeddings":"1.54.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.54.0_1778514024061_0.8980374738857526","host":"s3://npm-registry-packages-npm-production"}},"1.55.0":{"name":"mneme-ai","version":"1.55.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.55.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1273ed253741f471e81e056436ad3b97650187a2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.55.0.tgz","fileCount":652,"integrity":"sha512-prFR+8oUkQ4z8C1Jc7qqICBRnuPmxiIcSuSS/ptU4aMiyhLXhQTwIeXyQ7Oqty9POU4DiXD/D0IQHJZMS8lb0w==","signatures":[{"sig":"MEYCIQCp6fHe7PRfpXIY/hV4GMUUP1qELJTcnd60VPJEogwapwIhAMoGMLmzbSz1zyAQOt5bztTwiI0obSnpHyTnaXuZuKJD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3316839},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e8400474aa76f9d0487ebdecaa1ca1a0d78a92e8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.55.0","@mneme-ai/core":"1.55.0","@mneme-ai/correlator":"1.55.0","@mneme-ai/embeddings":"1.55.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.55.0_1778515533392_0.33614456715423713","host":"s3://npm-registry-packages-npm-production"}},"1.56.0":{"name":"mneme-ai","version":"1.56.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.56.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"278d2595e3485cc874d49f154c6c4805644dcadf","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.56.0.tgz","fileCount":652,"integrity":"sha512-7gDmHyGQLaRfGou625JcE3rIKu9GxEt3Pc8zChAT1hO8MLDIXxgH0g2OcraojCpmBKK22W3vW4nLjIV0CWED9g==","signatures":[{"sig":"MEYCIQCGep7YI0BdD8+VFzXWypEB/I9fWNDu+9deJTvLYDMTCAIhAKZtuEc0yWiFoF5LCFZIR7E3k05z/SrLdFztVc93TxQ6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3324966},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"77440d0220420a3dfdd443b73c09b1e0e3ae222c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.56.0","@mneme-ai/core":"1.56.0","@mneme-ai/correlator":"1.56.0","@mneme-ai/embeddings":"1.56.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.56.0_1778516850189_0.618882771041517","host":"s3://npm-registry-packages-npm-production"}},"1.56.1":{"name":"mneme-ai","version":"1.56.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.56.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4c39cbe2da514c5c3003743f901a7b2529554d2f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.56.1.tgz","fileCount":652,"integrity":"sha512-r56s8iG3n0N5LY5awI7MAl5krnCyddhEZarehzPGlpOfUpvbmFgoTgB0Q0Lmf7w8BouqStJB9BgBKHR5A/MxNg==","signatures":[{"sig":"MEUCIHIC+HKJvd7jzThCLPLKMtIU4I+HJb4yrSBeV83EupXNAiEA34ARqJoyLvKUVgSFOyMBsH9ZwN49NfP+1go8TP0dgEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3324966},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f4810318fc7c3d2b2fafacdf2d295e33e0f01c3e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.56.1","@mneme-ai/core":"1.56.1","@mneme-ai/correlator":"1.56.1","@mneme-ai/embeddings":"1.56.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.56.1_1778517190247_0.3929921689032352","host":"s3://npm-registry-packages-npm-production"}},"1.57.0":{"name":"mneme-ai","version":"1.57.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.57.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7dfe53ee214a807ddf1c94dc01333272c5d2bff2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.57.0.tgz","fileCount":652,"integrity":"sha512-4tSmGa3vvrE0RCvz2bYbTFgtBAdMSTAs5K8YqTMeHQ+7VO7wd5lTYRkuD6mNGt4fAGligljLy04ugBVGows+XQ==","signatures":[{"sig":"MEUCIQDpAtBTLB2FwnGDJ0ZdOK7owGOJ1YdxzcaobC1wwXKGNAIgNPJvCxFCpOo6VppfDDmeKjEANNDThujfVhZRFfChdxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3330058},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0742a9c99dac78636186fe170045ccfbbc7f487c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.57.0","@mneme-ai/core":"1.57.0","@mneme-ai/correlator":"1.57.0","@mneme-ai/embeddings":"1.57.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.57.0_1778518386599_0.3225158985495793","host":"s3://npm-registry-packages-npm-production"}},"1.58.0":{"name":"mneme-ai","version":"1.58.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.58.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"eb2b75e8fe33f09d60e76ae4597a9b8b5326f0f9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.58.0.tgz","fileCount":652,"integrity":"sha512-F3dSniR8NXLL3y1NqtzVGaWUdVF18g2i66VGjTqqip3MoIXBjdFHBikim0GZ3sLaP49SL4qC+VOlSPefLcopnQ==","signatures":[{"sig":"MEUCIHGPIpjDbhY3FaIxGkv9VZ7j+05O7m5rXJzBYoyi9KW6AiEAuVYPjyAN2PcvFxHPGJATChymBgZ58XI0XiK0Y7Q63hw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"93f80280f2d4f5a014a61c33da618cc5c570af52","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.58.0","@mneme-ai/core":"1.58.0","@mneme-ai/correlator":"1.58.0","@mneme-ai/embeddings":"1.58.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.58.0_1778519047695_0.6687850943380298","host":"s3://npm-registry-packages-npm-production"}},"1.59.0":{"name":"mneme-ai","version":"1.59.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.59.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8d0f7d0c9bdd23550916692eda4f2442951f9853","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.59.0.tgz","fileCount":652,"integrity":"sha512-DSOa5srSKe/VK+80muTj/zeQ4VsMRl4EkEd+QLTksucKMWrcSI8Vs/nu08orxFNlholrJfqw8OSngjGcLUhHYw==","signatures":[{"sig":"MEUCIBOl8V5A/jPvFztWY0KnTvysIwhDLTecKJkvWvVwL64tAiEA+GswMpCRufpVNDn/MrI2Uo10f1LhqcwkYVV6H6rLSi4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5474f9023ef1115811356c2a4bc5b50777589e26","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.59.0","@mneme-ai/core":"1.59.0","@mneme-ai/correlator":"1.59.0","@mneme-ai/embeddings":"1.59.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.59.0_1778520027710_0.09424101924999673","host":"s3://npm-registry-packages-npm-production"}},"1.60.0":{"name":"mneme-ai","version":"1.60.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.60.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"be910f14cee34edecf805916534e9d3ea9172eec","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.60.0.tgz","fileCount":652,"integrity":"sha512-HgjVPxIf9Vzwl7tnmYC5QX9LNMmDwswtCFf99nNUYEQFunzbDWMrqX70xyl/rbNd4qcBhnQhsWr9RHChd/WJpg==","signatures":[{"sig":"MEQCIHlj7ma1BjFNY70e7/4VE7uFIIJQQ1ZIzpuu622zvS5LAiBeTB9VBr5oEVbxdzDQJkh0vbmq4k/6UhgPEV88jMBg7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e180d85892f097c2115777754d8480b47054f991","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.60.0","@mneme-ai/core":"1.60.0","@mneme-ai/correlator":"1.60.0","@mneme-ai/embeddings":"1.60.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.60.0_1778520749213_0.8410502558729753","host":"s3://npm-registry-packages-npm-production"}},"1.61.0":{"name":"mneme-ai","version":"1.61.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.61.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c31f0cb1aa4f412614cd736d75aca1400bf8b4fe","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.61.0.tgz","fileCount":652,"integrity":"sha512-jgZLnCtnv0sezrwKz75DTN5qz3kDch4wIpIuBqUDy7UGCVy0w1vJtLPed/jnRheK5VRNMp884geD0I40SC1Z4g==","signatures":[{"sig":"MEMCIEeNdE86hPb90XqRW1xIbPzAnxbla9tdNLZby8xDE30KAh8+Lv3qNqunXxyE5S7BWodMCv1YtPXjKOYrvwhGQIWJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5d4b5cf0fa5fb160e25a91a9f78437d58c031527","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.61.0","@mneme-ai/core":"1.61.0","@mneme-ai/correlator":"1.61.0","@mneme-ai/embeddings":"1.61.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.61.0_1778569448670_0.6478452477237193","host":"s3://npm-registry-packages-npm-production"}},"1.61.1":{"name":"mneme-ai","version":"1.61.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.61.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"edccd189e2b341a25bc76fa3b9a1d7a0b4261309","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.61.1.tgz","fileCount":652,"integrity":"sha512-PWMZI2tbh+34/CMAmsxlnj9Mv8fmO5HoJTFPf9iJZ56gUktUU2rItMqRY8WIId4eaVsgHF+/il3FadpgIAqN2w==","signatures":[{"sig":"MEQCIHKkH3zF57CfbLoHEbApqBnWC95MY+0gTgsfj6HI53enAiB/Ow0UXp0imjogfGgqtDZEZsM71hQFMloEL9COTSRf2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d4bdd553a1690e8e5a997658d2200a29dd53893a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.61.1","@mneme-ai/core":"1.61.1","@mneme-ai/correlator":"1.61.1","@mneme-ai/embeddings":"1.61.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.61.1_1778570526969_0.6426614674624942","host":"s3://npm-registry-packages-npm-production"}},"1.62.0":{"name":"mneme-ai","version":"1.62.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.62.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ab61678589fb693bfebddc9f342cd68a5b184b55","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.62.0.tgz","fileCount":652,"integrity":"sha512-R81rsmw+P/jSIJ8ruR4NXEkvXBbK9c9ETC1/xEBQ75ruvNoCOIJhB80sYk5VTqSLK5584rrdVDykojCGI5bgKg==","signatures":[{"sig":"MEUCID2mPNY/TkUzv0fK6JAVW6MU7l6c/p6BkcyLk8yuq6a2AiEA7Q4rqOgRlij2+OKKQQIMNixoiVNNWKm2zJExg0K6t5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6fc862cddc6a1afa7ccfb2c39d7c9d33dde92a8f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.62.0","@mneme-ai/core":"1.62.0","@mneme-ai/correlator":"1.62.0","@mneme-ai/embeddings":"1.62.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.62.0_1778572329715_0.059782382888448726","host":"s3://npm-registry-packages-npm-production"}},"1.63.0":{"name":"mneme-ai","version":"1.63.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.63.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"531d947950b40ec931b646a6dda03edad454f37f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.63.0.tgz","fileCount":652,"integrity":"sha512-EvcDOOtrxZBlziT1yVtE//SNMuBhveN/Nlmxc/JRiPr3eJRJprRXCfKhX3loP1pKHKc++RrexhYcDTrte6k2kg==","signatures":[{"sig":"MEYCIQCCSz/uOjDTnXK8T6MRDgAvfD1fRmjrat6qVghf0TCLjAIhAOVCILFEgX0u/KNNtEzvfSmSCVeVFTNAj9VBEvTPj4/Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"938c1067346b5d93895aff5ca3d58afbcdf7ddd8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.63.0","@mneme-ai/core":"1.63.0","@mneme-ai/correlator":"1.63.0","@mneme-ai/embeddings":"1.63.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.63.0_1778573778899_0.7101060471708456","host":"s3://npm-registry-packages-npm-production"}},"1.64.0":{"name":"mneme-ai","version":"1.64.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.64.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7450ba421348cad3370d98cbd3827e18e4e98c59","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.64.0.tgz","fileCount":652,"integrity":"sha512-EP00+5DaZ0Zqi/348JjsYqBgl4AZcm4u7UC8oCVdj2tJA4K1MmODlX/8GwdOfN4qjNKRGyIA3oeOStIiGC82lw==","signatures":[{"sig":"MEUCIQDogKxHEW/A2c9wFG0KZqOTHrz+ghSKd8BfL+iYez5q8QIgMZgRFKdO/KVpVSiOVOLNqoXZPIcRhmSwxlSGmA3TWfM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"76368d749e0d44cd9de7e51294e6b0aa8f67b031","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.64.0","@mneme-ai/core":"1.64.0","@mneme-ai/correlator":"1.64.0","@mneme-ai/embeddings":"1.64.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.64.0_1778575594167_0.38631063423094125","host":"s3://npm-registry-packages-npm-production"}},"1.65.0":{"name":"mneme-ai","version":"1.65.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.65.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a4de3f9a079d22bbc21a49b25c5ae23fbf71da97","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.65.0.tgz","fileCount":652,"integrity":"sha512-l5NXxS6iBDaZELjK6HqZeEGVApBWs5uYmg1FW6IM19Lhxrbl9M4jfQgyReVpamhel6FLpScg6R9VCjO8Vki0ZA==","signatures":[{"sig":"MEQCIBhhqmnUYP2YcsOsnGeSarbUXp6/maVHIkgHjl81FGV0AiAIHNdi8lqZ3qtdMmtzMEKo4bBATvNZUqCbpiMOzDFnCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a1fd6f8e0c1c5c49072418355b0be369fa78ee0c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.65.0","@mneme-ai/core":"1.65.0","@mneme-ai/correlator":"1.65.0","@mneme-ai/embeddings":"1.65.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.65.0_1778578535618_0.9335277476446171","host":"s3://npm-registry-packages-npm-production"}},"1.65.1":{"name":"mneme-ai","version":"1.65.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.65.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"14db73adcde46c76d76e56ebc7de8ba36dc35945","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.65.1.tgz","fileCount":652,"integrity":"sha512-m+tOpwTWSfBRSOfNlsgp+ow63Nz02EtTmHwklnT1sL0WGsXUpo9clMfrFfssKZWH956LI/J3Ww8JDOYmL63Q0A==","signatures":[{"sig":"MEUCIQCdMKA2CY+WCwo0o1I3lrrq2Tn70SqVOj5ZVZptUhqjRwIgH8eMqYL6ZuwZGsRVF5FJyfiLdXzQq96OKzG0pa//LbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b69965a95369589bcbb5567e8a0bd0517681f62f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.65.1","@mneme-ai/core":"1.65.1","@mneme-ai/correlator":"1.65.1","@mneme-ai/embeddings":"1.65.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.65.1_1778579992795_0.08266252640202931","host":"s3://npm-registry-packages-npm-production"}},"1.66.0":{"name":"mneme-ai","version":"1.66.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.66.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"fb16477dfa0378cf70b565c975b7ce59c38a7a50","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.66.0.tgz","fileCount":652,"integrity":"sha512-AwHpr1HkpIoEVrM42OV+4T/ZhmB5tbiInoNGv11cVT2RuvdJFLsk0DUEtvok9s8kPoaeQ+tny+xfA3Yf5z3SVQ==","signatures":[{"sig":"MEQCIG+FXHYr+dCggvNSszIKKWtMfhYvSvEfA6k1a4J6yeITAiAoLZb5TsvRCZWpOZxpSpkkv4Ht5KF3cATgdr4Cj9BUGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0bfe6522d222f39823698200fa77e254299a5d5b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.66.0","@mneme-ai/core":"1.66.0","@mneme-ai/correlator":"1.66.0","@mneme-ai/embeddings":"1.66.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.66.0_1778580918949_0.8819440358677679","host":"s3://npm-registry-packages-npm-production"}},"1.67.0":{"name":"mneme-ai","version":"1.67.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.67.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"860a4eedc4ee370f9c1ce425f32d09d65dead4e6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.67.0.tgz","fileCount":652,"integrity":"sha512-iyXrbdDi2GhqwcVzGMqEYAII+lNusCDyAE/VLVrfDe1mOMUVVti7PX5AekBrzPJDeRVwWWaaMdRhB//DEM+sxQ==","signatures":[{"sig":"MEQCIAUZTvypOBgCcQ8RRI6YylBWdyH+2bfU05GQEFwncTs6AiAdVS4znt+ugUJbEdj+Ckpshh8VrWK4SPl2FhPofR2leg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ff0ce1b5ae0791fe9f7310cc02d5996e7ee4db23","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.67.0","@mneme-ai/core":"1.67.0","@mneme-ai/correlator":"1.67.0","@mneme-ai/embeddings":"1.67.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.67.0_1778582648089_0.3599522274640279","host":"s3://npm-registry-packages-npm-production"}},"1.67.1":{"name":"mneme-ai","version":"1.67.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.67.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"bc87bbed7a4637258ac6a73e725e2cc7e609df4a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.67.1.tgz","fileCount":652,"integrity":"sha512-9WpKBD/mqmTkWxWg8CW0K4E/Aqo/HUM1k2PRbjtLZv2sgVOR9UCBDgKthu8p/TsLV8KkUBuZ13vfRExoQf79AQ==","signatures":[{"sig":"MEQCIAQWu/rZ7IMFk/iFONHZ9LrPxlzFpszyfQfrOV6QqgYIAiA7nxKjYu7bxmHmnCEexf3l4WnjkpQmagbsdTpVy7TEzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"678488f4d002a66756f8aa9841073a1f8cdf4145","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.67.1","@mneme-ai/core":"1.67.1","@mneme-ai/correlator":"1.67.1","@mneme-ai/embeddings":"1.67.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.67.1_1778583437649_0.8421958525317634","host":"s3://npm-registry-packages-npm-production"}},"1.68.0":{"name":"mneme-ai","version":"1.68.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.68.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ad1debd02e38a57514515ef1d20e54c7a05a874c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.68.0.tgz","fileCount":652,"integrity":"sha512-EykzaBIk4uaChkNv2QqjvW3+rRDS0QFagzM5+QKl3GGkESlfgvzUzTNQfs/5rpA6u1bCDUzaIDWBEPXnSLYPrg==","signatures":[{"sig":"MEUCIQCXNaT2I9puagc0X0FAOoTbGeRAlf3HYwpbf1dxFfY5gwIgbfPC4463cILe2YN0xK5SGSXDgjbkagitqa1Zg50gOSM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"13e8df6899e9c9f2c670e8466133444eb40df701","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.68.0","@mneme-ai/core":"1.68.0","@mneme-ai/correlator":"1.68.0","@mneme-ai/embeddings":"1.68.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.68.0_1778584652361_0.6870480257379479","host":"s3://npm-registry-packages-npm-production"}},"1.69.0":{"name":"mneme-ai","version":"1.69.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.69.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"09b0ad73d19733ef8c95edb871bf39cd9af1efd9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.69.0.tgz","fileCount":652,"integrity":"sha512-Yk0oPAWfJ3WymdDGfoDhQl2WcZ1grw/EoX1iRuK/pBwsxrZxtAmGf7OmSOZlD9x7IeLiN+3C2NXUB7NJigx32g==","signatures":[{"sig":"MEUCIFGgJhM6jFRuG433eHDHok9Bjwc5DCEJUdU/kny5EcP1AiEAiS2zjP6JAD0bw+UlPDyQh+K8CCiXW1pjEDc0uLwB04A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1c4a15ef43cafdf159c2b3e42ede38356ddafeb9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.69.0","@mneme-ai/core":"1.69.0","@mneme-ai/correlator":"1.69.0","@mneme-ai/embeddings":"1.69.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.69.0_1778590334976_0.2034766813485236","host":"s3://npm-registry-packages-npm-production"}},"1.70.0":{"name":"mneme-ai","version":"1.70.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.70.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f357a6a6fb30f999424c6da9826067fe03a35e97","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.70.0.tgz","fileCount":652,"integrity":"sha512-aIdJ6B3+2OMifK8Rt2k+7pt3IkvXyNZ2dLVkECRokEKcOEsAWSHGk8idtpLf8swST6anv1pULFhKCpLLRHA/KA==","signatures":[{"sig":"MEYCIQDr+dAVXaUj4/xjvoIboUYg3zxl9M/UePrml8oPyBVYKwIhANxtenL5ccSfrMaRXeYGYjB6vgAAA6/SyOFFbsD4gtBk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a30a8177cd516c2d496a1ba967b83832adc6868f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.70.0","@mneme-ai/core":"1.70.0","@mneme-ai/correlator":"1.70.0","@mneme-ai/embeddings":"1.70.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.70.0_1778593296526_0.8100901080743212","host":"s3://npm-registry-packages-npm-production"}},"1.71.0":{"name":"mneme-ai","version":"1.71.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.71.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"37b6cb4bd44c3a2d07f2ccace9fdf7293a05f479","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.71.0.tgz","fileCount":652,"integrity":"sha512-oFONexjz0EmzfiMrWQueBIyZYuUthhpiDxfyrsEtoru1XGjLxgxOC74VnymwsVOtQkrMpZ6ZApTcv91H62Sz9A==","signatures":[{"sig":"MEYCIQDktU7/GvhWDHZh9M8fdlNwYFtIwJVwwjTunnOKWt20hQIhAJEdUetsv6wfaf99RnkD9jkG8/KHVJZF+qL7QltRm17h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"10e3cc0260d879dcf8f15f925960def1fd3f5f4b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.71.0","@mneme-ai/core":"1.71.0","@mneme-ai/correlator":"1.71.0","@mneme-ai/embeddings":"1.71.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.71.0_1778597569296_0.1656321091709223","host":"s3://npm-registry-packages-npm-production"}},"1.72.0":{"name":"mneme-ai","version":"1.72.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.72.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"719ff5c954d59950d9c460c0515d4f7e01a52a8d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.72.0.tgz","fileCount":652,"integrity":"sha512-diMAxcj2L+Y032pQt2fXDeP6c/k/q599Naod3c1rHUbKsFSR93vVAqJjXfIE6iEKRvjUAinr19lt4qhHOMItrg==","signatures":[{"sig":"MEUCIQDt6ASVWuweRqusBVBEou8pXxgxr8LCh5SUuGUSmejp7AIgErfONShBhVUuYcNNyzdkansnWUCa4AMkrKh8PYLAsfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"77e78c497b8d40ca7d4591d35243a077611d1822","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.72.0","@mneme-ai/core":"1.72.0","@mneme-ai/correlator":"1.72.0","@mneme-ai/embeddings":"1.72.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.72.0_1778598388879_0.29492086150070196","host":"s3://npm-registry-packages-npm-production"}},"1.73.0":{"name":"mneme-ai","version":"1.73.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.73.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"bd6a1fd6f1aca1bfd6f968156a824d19b946df4a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.73.0.tgz","fileCount":652,"integrity":"sha512-SRVeNTpXdNgJPLlaQOe8SdhbKiPPWktrLxSwQt04leKm0fNAOZ2NCThBWxBM35bIACHEgF7ofl+KD9wyUv+t8A==","signatures":[{"sig":"MEUCIFC/mx5Iq0+NDa6rVhPspVo8B7h10y94LmUCw2ELhypcAiEAiL+H7h3JNfvp+RHfPish5q0e63bVaMkYUPLOqxqBjNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"491737d1621cf8bf83593d6bdbdcaf8f7fe86667","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.73.0","@mneme-ai/core":"1.73.0","@mneme-ai/correlator":"1.73.0","@mneme-ai/embeddings":"1.73.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.73.0_1778599100194_0.8454712359891063","host":"s3://npm-registry-packages-npm-production"}},"1.74.0":{"name":"mneme-ai","version":"1.74.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.74.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c4df37510e268b11ebbde23414edf7a7a3236ca0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.74.0.tgz","fileCount":652,"integrity":"sha512-vCoPVfzbyAsyRDvaOftQUKRyIHdksr4vTnMkkzaba42ixjVcn33NlwnFzsNT109BJvSLx1A/zY5F4Lr9uiDymA==","signatures":[{"sig":"MEYCIQCq8t97cctDRg7vuP5QMFaOhiTA36lsBREPlg9d6X+wtAIhAIdFXAczP48Tf45OZaV74MWEUnf/kM82sBSzQS9y1sWD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"241b93260921315bbc125156d33f7b6418e11095","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.74.0","@mneme-ai/core":"1.74.0","@mneme-ai/correlator":"1.74.0","@mneme-ai/embeddings":"1.74.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.74.0_1778600202607_0.15043874929969836","host":"s3://npm-registry-packages-npm-production"}},"1.75.0":{"name":"mneme-ai","version":"1.75.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.75.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"00877cf2bd0dfbb8792242efc86cadd70f1862ac","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.75.0.tgz","fileCount":652,"integrity":"sha512-OO1zqVUwE9lk/INtz3r7qDwcgbamDy+NP6uPlwWuIR+9hcteqK0d6E+MVrEMAgQG980xe6sx0spvzGCCSNgMpQ==","signatures":[{"sig":"MEYCIQC+xLnMs4UqtVoLdef2V3CjGpwywHK+11zAddTuO7/B3wIhAIu5WUieO0afKag2mr/7zfZbeiPrsxAMHR4WWjvupI2U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"fe24efeb1c806071e09cba97c916ca5d41e8f94f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.75.0","@mneme-ai/core":"1.75.0","@mneme-ai/correlator":"1.75.0","@mneme-ai/embeddings":"1.75.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.75.0_1778601549940_0.677852678287026","host":"s3://npm-registry-packages-npm-production"}},"1.76.0":{"name":"mneme-ai","version":"1.76.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.76.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6ab6b55b7a15d18b4aee4e9d4231a6696310db0c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.76.0.tgz","fileCount":652,"integrity":"sha512-5jTy3KVcOH2HBUyuBVT7Wzubrp68ZbxTIx8HzGu+k3D5O4XXMMA3AM3o+poh0CJVwGU9IuZFw4wKyiMtaJzLSw==","signatures":[{"sig":"MEUCIHViWbkFE8K7X8VIJXAchclN05qj449cSqg2Grb/cwRJAiEA4HarEqFuJamsb19OfiJx6yKAk2SjHJWQML0Qe0pMiXA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8263a9cb5de1938b11bfb35be27ca3bda70d0181","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.76.0","@mneme-ai/core":"1.76.0","@mneme-ai/correlator":"1.76.0","@mneme-ai/embeddings":"1.76.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.76.0_1778602399782_0.7582133498580079","host":"s3://npm-registry-packages-npm-production"}},"1.77.0":{"name":"mneme-ai","version":"1.77.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.77.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f097cdd70c52cf9f3e2ae171d60153c867ff526a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.77.0.tgz","fileCount":652,"integrity":"sha512-u3azC1GldtKmfp8rYYq5rj8oQacawjvkk3tzNItgnDKcogCe58oo8yhusAl9/Ps1wuk1ZnCkjbhF6kvFvQ78Zg==","signatures":[{"sig":"MEQCIE8Q9FlO+m0aOz8Rt5y7PlS1L+RymCedhudr6pbBajBRAiASifrzTk8qiIcHrWtB4n2QazM/zcW/tcUi2ehmYyXcSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"282dcd4341ad115642bbcaeed656b3dda36b8680","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.77.0","@mneme-ai/core":"1.77.0","@mneme-ai/correlator":"1.77.0","@mneme-ai/embeddings":"1.77.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.77.0_1778603024527_0.6044283720685972","host":"s3://npm-registry-packages-npm-production"}},"1.78.0":{"name":"mneme-ai","version":"1.78.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.78.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5fd1fad88ef34fbc5a829d1cff92572fa1a59358","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.78.0.tgz","fileCount":652,"integrity":"sha512-WbGL16r+XUXHm+uyoo8IxMlmbldogfCTmcW2XKMwDB7YlV7D2XqzJ7QcGm6f9VTFRj32pUsV0vZCvn1EZDkx+g==","signatures":[{"sig":"MEYCIQCkAsiGKSz2vHufUPfSGSAHdCI5mA5t/sa48OITlLRV5QIhAI9zv2CH5caRwAiCE7tSL0VugcqHW5ueBxqWiU/euMRA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ecc6be642bee6b7703f8917570753e6a65605cc2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.78.0","@mneme-ai/core":"1.78.0","@mneme-ai/correlator":"1.78.0","@mneme-ai/embeddings":"1.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.78.0_1778604287927_0.5756113277591413","host":"s3://npm-registry-packages-npm-production"}},"1.79.0":{"name":"mneme-ai","version":"1.79.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.79.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"50d5754e961435afeb02369d90ba722ab2550968","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.79.0.tgz","fileCount":652,"integrity":"sha512-n4zl+eYZBxOs9P5r/uZBPt9g39KQasmNXYKkgs3EXb8rUF9/VOknykuvboLp/UxcqJ0q0UxaWu6nsZvWm8Po8w==","signatures":[{"sig":"MEYCIQD2QquLDpVca/oGb9k1tXqsa2ex9DuGFSvN1gf1k1u+cwIhAJM5Pau+c/eD4oL8rJx76wKxeI+smuNdFco8v56u3hXU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"813b0c10e7b7ea52a23b5046660d3f2128eb8a49","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.79.0","@mneme-ai/core":"1.79.0","@mneme-ai/correlator":"1.79.0","@mneme-ai/embeddings":"1.79.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.79.0_1778604869627_0.6498102009180544","host":"s3://npm-registry-packages-npm-production"}},"1.80.0":{"name":"mneme-ai","version":"1.80.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.80.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4514bed3f359b6be213a4fb4725334a75dbe8e66","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.80.0.tgz","fileCount":652,"integrity":"sha512-aRUfBhPm+miHvH1tb48gksGs06G4uA0zm2gXPs1dnSxulqEbY7Q8QMD54wAMjkbGnEyosk5glA9Rm8Cv9iLRUg==","signatures":[{"sig":"MEQCIHwIiQ32egREZh0EU4bvdUEMFs6lobo/+LmjVwirYE9DAiAxuXeiEAdpW/gwmt/MtcQKkRtih/Ux0nfx9CIfEfHbUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ca20dc1392bfd9acbb5e59868b6992652fc136f4","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.80.0","@mneme-ai/core":"1.80.0","@mneme-ai/correlator":"1.80.0","@mneme-ai/embeddings":"1.80.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.80.0_1778605900501_0.181127930426356","host":"s3://npm-registry-packages-npm-production"}},"1.81.0":{"name":"mneme-ai","version":"1.81.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.81.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3f5c7d96ebc9c7cb8173aa9b0192add00d388e46","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.81.0.tgz","fileCount":652,"integrity":"sha512-7hU4oBO2TtYd9DUlQ3HNEY5diTYwCI8Upc81MN71jli8cKufS0PAte3Kj8/t4jW0dJsB6rzJ0fHM8JtYAhpADQ==","signatures":[{"sig":"MEUCIB8pGjM8f5KDCdWgYXpX0kzdXG5pq/tGI9En59WDtWICAiEA2jR1EeHPi9cVNa+OhN+JBtBeZ7mlpgutruN6f0/tqhc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3338020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e5cdaf678ddabb12701d2979fe21424e973427b7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.81.0","@mneme-ai/core":"1.81.0","@mneme-ai/correlator":"1.81.0","@mneme-ai/embeddings":"1.81.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.81.0_1778606540127_0.8810436101265111","host":"s3://npm-registry-packages-npm-production"}},"1.82.0":{"name":"mneme-ai","version":"1.82.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.82.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9152efb86116dce34b85c98d3ccb060b9a7213f8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.82.0.tgz","fileCount":652,"integrity":"sha512-GtIL0LrYbMsw0bkyB3BvcTCCsF3/mRbiVvc9K7xiZSbzLb7ahKj8B3ZDmvhCNW93jomfvVC+UxNjkWLR1yQDbA==","signatures":[{"sig":"MEUCIBW9mUZ9hz+pUXu1t5E8qFmVKgL9OgSMTu/T5cNU6UyVAiEAoNX22RTkZetpqcSpWCSE9Q5MveiXSQhf7bKhMBmz92Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339073},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"55916e441fe9d0b5b6c9f7ab0327d78d9de4a7a5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.82.0","@mneme-ai/core":"1.82.0","@mneme-ai/correlator":"1.82.0","@mneme-ai/embeddings":"1.82.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.82.0_1778607589195_0.17501759282647833","host":"s3://npm-registry-packages-npm-production"}},"1.83.0":{"name":"mneme-ai","version":"1.83.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.83.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3ea2fd93d8df28067a1d00ee851c8d6d46e4307e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.83.0.tgz","fileCount":652,"integrity":"sha512-hcSk2/JYB4AwmKKI1490LobL6a6jsUdfJlC+Ugt8DLo7y72bCvfWSkopUV+KpOxIo+lrapQQMTcEz2tFxepxwQ==","signatures":[{"sig":"MEUCIQCsX7N5qH4r2rufs0nr7fFKtHi7qmkCn5+Hhtw0AYC1VgIgRaRESa5M87lqizIhWY/4XmnpW5tKdsW6gJxsrJBlSqY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339073},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"15cd22590473f125c6f5e8c126b21ae802ff2d3d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.83.0","@mneme-ai/core":"1.83.0","@mneme-ai/correlator":"1.83.0","@mneme-ai/embeddings":"1.83.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.83.0_1778608918209_0.7992927375751404","host":"s3://npm-registry-packages-npm-production"}},"1.84.0":{"name":"mneme-ai","version":"1.84.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.84.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e56d2876026eed8d86c84e9ba58531b7c2c06368","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.84.0.tgz","fileCount":652,"integrity":"sha512-4gmJ8gkivd7VuFixONDroeftLrcbGHTNvTbI09pwDJbidT2hc3UpPecyI58yBjJxHLlAE8fx1kvpts/Fl8iPUQ==","signatures":[{"sig":"MEUCIQDtTPPdzfO8VVZctzsIscOcWxos6a1rm+uaVilJZxWn0QIgW0OyhJk9npdasFztg2O0rhFd1ic+fISxK4pNeh2TCMY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339073},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"44f663ff88f8e2eeebd9284529147d6e02dc5198","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.84.0","@mneme-ai/core":"1.84.0","@mneme-ai/correlator":"1.84.0","@mneme-ai/embeddings":"1.84.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.84.0_1778609622726_0.013341987539153832","host":"s3://npm-registry-packages-npm-production"}},"1.85.0":{"name":"mneme-ai","version":"1.85.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.85.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c56942bd846f9160037a10a6f495ab7074f2315a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.85.0.tgz","fileCount":652,"integrity":"sha512-3v8PNEaRUt32ncA01bimnpB8HYmDWT9hlnrzhn0upzaG5vXgc8vYYzJISRFL2CqFf0QppToCHTlNPD2uiOp5SA==","signatures":[{"sig":"MEYCIQDsaAqQMW4KIJj31xXo4xodoZJoFM7K7Gw2xmRAITUicQIhAKv5EIm7emkhLLjOnCTcCR7JdUppFUNkWISvwp+SqLoK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339073},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"391c104f07f5ca3f9ba3f871c572903f56350bec","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.85.0","@mneme-ai/core":"1.85.0","@mneme-ai/correlator":"1.85.0","@mneme-ai/embeddings":"1.85.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.85.0_1778610218902_0.8084612980189356","host":"s3://npm-registry-packages-npm-production"}},"1.86.0":{"name":"mneme-ai","version":"1.86.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.86.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8b43bf49589e6ab6ca0cd63ad831e373429374e2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.86.0.tgz","fileCount":652,"integrity":"sha512-kYukmBj4UaXS7NTT52W1bhlT1EM3LyZ0i3xR3Umazzu98FSYU/mapja9E8hXuXp+SUphKpxZpL8Neylf+/kGHQ==","signatures":[{"sig":"MEQCID5z6+hfJkVaCxz70qC0NF+J35BaxhXd2MQWwEf1kVpoAiA19riCZujc9rP2p5cEgugwgN2MoyVw+L/p4G59QJajvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339073},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"cacecd85699e129ffa239371685f5c1953010844","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.86.0","@mneme-ai/core":"1.86.0","@mneme-ai/correlator":"1.86.0","@mneme-ai/embeddings":"1.86.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.86.0_1778610889159_0.7793708527560488","host":"s3://npm-registry-packages-npm-production"}},"1.87.0":{"name":"mneme-ai","version":"1.87.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.87.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2081807621f14b2387489ffc21d9488ce845e111","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.87.0.tgz","fileCount":652,"integrity":"sha512-+gf9fcOxd+b829OGWmQ+ZU2MP/cdTKr0TBCb6i+qH3MZgVIAYtHvEBky+xJhxI/eIhPc8Tu3aGLdaKO662kNzA==","signatures":[{"sig":"MEQCIGvNCEMsl9EG0SdvGh788jPFLCTbO7pVCTFtt181bZ86AiBf+WPprL8kSIANcxBVKPmXC3ZTxNNIi/tPOaj5Je/6hg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339073},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"68299bb89766949cac46ddaa3efe80fe556274bd","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.87.0","@mneme-ai/core":"1.87.0","@mneme-ai/correlator":"1.87.0","@mneme-ai/embeddings":"1.87.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.87.0_1778612942381_0.23644840803880163","host":"s3://npm-registry-packages-npm-production"}},"1.88.0":{"name":"mneme-ai","version":"1.88.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.88.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b0e69577ab3fd0ece0649562bd031d2e1b11ce68","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.88.0.tgz","fileCount":652,"integrity":"sha512-jLObwOlEhoPjlNeqCp5rjucp7Y8a/hG2s+hkJ1vthT/c7gjDgnYGhEjQj/O04DFbGU43ZrmXuJND/Cjm/UwfSQ==","signatures":[{"sig":"MEUCIQDnvovvqlzmhNJ0jSssCwGodF5mp0DzbUWrsTduv5CiYgIgEQ2NdI7QqNBR1t+u4frBjxDczvZm7ccAmjR7GtMwziI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339073},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ffd09c943a46fd2a4e37a85092a802449106e38c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.88.0","@mneme-ai/core":"1.88.0","@mneme-ai/correlator":"1.88.0","@mneme-ai/embeddings":"1.88.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.88.0_1778613579845_0.8330328292047409","host":"s3://npm-registry-packages-npm-production"}},"1.89.0":{"name":"mneme-ai","version":"1.89.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.89.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d0e858af85865c8c8341847719c67cccdd991709","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.89.0.tgz","fileCount":652,"integrity":"sha512-oT0KxVgHhPWgprzc+0rjx9DrDmaXee1Cjml1IEUvGQ3wctTUhTqP2QdG4LT+yAFFpg0ns5Ezun67EJoSFWc0gQ==","signatures":[{"sig":"MEUCIFCHukBO7SHZIgC6Yt5BPuvcUH/uMAxkg68yiebJggs8AiEA5zJ7oxP2c8309Bu6CKw9KuN+DXBQS5THS6u8YsDaoTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339073},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c535bd3d252f71089b3e1539314498d5ee255fed","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.89.0","@mneme-ai/core":"1.89.0","@mneme-ai/correlator":"1.89.0","@mneme-ai/embeddings":"1.89.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.89.0_1778646624215_0.5798025353040197","host":"s3://npm-registry-packages-npm-production"}},"1.90.0":{"name":"mneme-ai","version":"1.90.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.90.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5f67795cdfe4cda9e153d7eccf31e1ab859f413c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.90.0.tgz","fileCount":652,"integrity":"sha512-NNT64MTTQqvhv1v82+3XEPkl0Sl+rJqU/i8SZKV6Nsq0SFKUxK7GvsJUM8PfAPpl8Ybhe2OmWhkLXyfmpZLgHw==","signatures":[{"sig":"MEQCIDg+qy0Q8xb0qbnSl1sEw7BqU2CaAxFbOX3n4SWJfRr9AiBEwFcUJ0k/dulE4sYyXxuaXA7TPZ8UKHfTpF9VuvwljA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339073},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2c549bf4bfb47965244a8252e5112e8738dc030c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme โ€” the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.90.0","@mneme-ai/core":"1.90.0","@mneme-ai/correlator":"1.90.0","@mneme-ai/embeddings":"1.90.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.90.0_1778647863245_0.4249403950156798","host":"s3://npm-registry-packages-npm-production"}},"1.91.0":{"name":"mneme-ai","version":"1.91.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.91.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"aed8fc3dec8e45e8cd9eec2b242f99f0856f5c7a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.91.0.tgz","fileCount":652,"integrity":"sha512-Y/3Lm2Nbbp0/ggtNlu73hTuH9iBc1qLf6ewb9Rss6/ceC5YiI/b/vNo+ftC1hbVoMvRYCnVfDryvU3qnxtpbOw==","signatures":[{"sig":"MEYCIQCfT4QGxFxjEU2FemOWR1iZXhJvchgLIrxh06Mjy6pnRAIhALcMrcfmQ+cjxG9Z9RALzqd7nLhglmJmRw55iKjbpflc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339091},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"498311cd7a023344970e3fe7ab44f31361f20e4b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.91.0","@mneme-ai/core":"1.91.0","@mneme-ai/correlator":"1.91.0","@mneme-ai/embeddings":"1.91.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.91.0_1778649806558_0.85002197142408","host":"s3://npm-registry-packages-npm-production"}},"1.92.0":{"name":"mneme-ai","version":"1.92.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.92.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d870e9858a91d86c22ed2ef584173a4bfaebc07d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.92.0.tgz","fileCount":652,"integrity":"sha512-q0CPA52CxBh9a8GrszLWcZ3U3qSwzrIi7fHdb9anUTLFza0uQCgjmAf0jTHQ2Ng7PIjTSmJTicmYdeGx97E4xw==","signatures":[{"sig":"MEUCIQC9+CyPmNubJDKJd3JSl0+tIBNfI8mAjK9BcPBigch+pQIgMqJD5SYFf/VPWzd9WCwxk5n1cHss+751jdZs7FYwAhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339088},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9b737be46295204172bba5afcaf1ac85048e6b35","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.92.0","@mneme-ai/core":"1.92.0","@mneme-ai/correlator":"1.92.0","@mneme-ai/embeddings":"1.92.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.92.0_1778651083346_0.2870600312787488","host":"s3://npm-registry-packages-npm-production"}},"1.93.0":{"name":"mneme-ai","version":"1.93.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.93.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"489edf54a89354d80495d137f62d75228a687f0e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.93.0.tgz","fileCount":652,"integrity":"sha512-bHjFcppc9teBgYu96kQKN6AB7B/tAqu+wtS5KtR9xkd66nB83d5lQMEceUJ9GzCsbvRhoa7fLg8D7yoo0uemfQ==","signatures":[{"sig":"MEQCICWhSYfafElHkZjoS5cWtYJBrTcfuzIN/wfg/lLDSLMpAiBAPqwSwX61dSNYIo68635/A1amoSV86TNaJT60GJ2GRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339088},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3e1a71b864d06680174d6bbbcb13419e61f9b625","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.93.0","@mneme-ai/core":"1.93.0","@mneme-ai/correlator":"1.93.0","@mneme-ai/embeddings":"1.93.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.93.0_1778653816137_0.02802910257592295","host":"s3://npm-registry-packages-npm-production"}},"1.94.0":{"name":"mneme-ai","version":"1.94.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.94.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"05b56521c1b6b7426ec8746ef74f805ee09866b3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.94.0.tgz","fileCount":652,"integrity":"sha512-i64YhfLzNOwk+lW2i3YsSjVOYjTTOKkvg3e4sISbRCUAlO0he/ITecXJ4BaBgOHeXmuqpQ9wdLbYpbjKD+cUAw==","signatures":[{"sig":"MEQCIAxWr1DmECjhw0ueYGmnIStPSNZKOVbz6m9nTJOjU4g9AiB6A34E6m6eZGHmV/l+rkUTlKmGOI4r1FIxXhCW6kcsYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339088},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d7f2abbba428515e3e115c334339c3e8451990b6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.94.0","@mneme-ai/core":"1.94.0","@mneme-ai/correlator":"1.94.0","@mneme-ai/embeddings":"1.94.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.94.0_1778654868410_0.7663612424764559","host":"s3://npm-registry-packages-npm-production"}},"1.95.0":{"name":"mneme-ai","version":"1.95.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.95.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"29f3155a14b4a7249f9c75a5b92bbbe602b724cd","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.95.0.tgz","fileCount":652,"integrity":"sha512-bjrBZFA1aWhUA4bTIJMMSvdh+VuMP7d+LoBX0u3fpCpghtT80TXuBqsMx0h03H/0Toxa/1zcPrAaKa9NPv1bQg==","signatures":[{"sig":"MEQCIEe/ZWFTDp4qzg0qiSw7FDIrq95+/n5RsQ9wt4ZSs33wAiARca1FAL8i7C/o7Mi7mVrrItau71gVs+sb8prjv17dMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339088},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5143fb484c70847bb5be83d200d6d54b300bc38b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.95.0","@mneme-ai/core":"1.95.0","@mneme-ai/correlator":"1.95.0","@mneme-ai/embeddings":"1.95.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.95.0_1778659291851_0.07415873678794171","host":"s3://npm-registry-packages-npm-production"}},"1.96.0":{"name":"mneme-ai","version":"1.96.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.96.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"25d644604d164b483f1564df9e3104ee1e544d61","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.96.0.tgz","fileCount":652,"integrity":"sha512-cahlpkSfqDwnQ3qz6DmieZ5SiK823nyH5O7jx1PzjHxYR8UUZUucjXHOEsmo+dPj0hQPgL8ReWNoq27Pxn4djg==","signatures":[{"sig":"MEUCIQDLoAxLoX00rqOklaGxt5lHAEpb2R7OVwU0DN72KS2jqAIgJwZMGyshkp61M3LNXxBRjBtYEBChMlBTH2YQSLgJ9fs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339088},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8509e8a7fb3a3156299517033ecedc5ea55ab01c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.96.0","@mneme-ai/core":"1.96.0","@mneme-ai/correlator":"1.96.0","@mneme-ai/embeddings":"1.96.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.96.0_1778660858631_0.5301072908710354","host":"s3://npm-registry-packages-npm-production"}},"1.97.0":{"name":"mneme-ai","version":"1.97.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.97.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0f51199eda7571d09bdeaecb272ef29f52feea08","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.97.0.tgz","fileCount":652,"integrity":"sha512-AJ97uoRbzFy4fBv1hpPXkDFdrWFZLI21vlS3EvFEumJJKX/2Po469yy8UuJr9OcT4NTtWGC19bxTYKVcCoeTiw==","signatures":[{"sig":"MEUCIBSSI/hQ96qc6kmTo5154PEsfJrgz+ZSy5c+FL6LfemQAiEA2lrflxUl4wFj9+PdsJivI+1DHj37SN3F0Sa3SSiJr2w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339088},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3dad4ae7d9b06e934377081e2711f0f54e0671b8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.97.0","@mneme-ai/core":"1.97.0","@mneme-ai/correlator":"1.97.0","@mneme-ai/embeddings":"1.97.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.97.0_1778662018398_0.3913227546422038","host":"s3://npm-registry-packages-npm-production"}},"1.98.0":{"name":"mneme-ai","version":"1.98.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.98.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4546463b58688f8cf95396d21fe66e68527e4a0f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.98.0.tgz","fileCount":652,"integrity":"sha512-IptTMUGPU/84C0/7YL67LbnhmMWPEOucN/UhgqhJvEhRKDgqSDyCdvp8HL1iGnP2hd8W7LkxJeEYcn6N4+JyFw==","signatures":[{"sig":"MEYCIQDE0RLBfDP6qxZecqyFk4uOAOlRrU9plam9iQsWIOUb2QIhAJSFv8usUTMdpLNXC9D+KkhXYOIhIBJnzn29hhVsgyQe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339088},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"99c803a3461a15a677e4e8f56dc1c02184ebbfaa","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.98.0","@mneme-ai/core":"1.98.0","@mneme-ai/correlator":"1.98.0","@mneme-ai/embeddings":"1.98.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.98.0_1778662855033_0.2222799323892295","host":"s3://npm-registry-packages-npm-production"}},"1.99.0":{"name":"mneme-ai","version":"1.99.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@1.99.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"339dfb73aa669462f9a4ee8fa7130b77b24eee24","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-1.99.0.tgz","fileCount":652,"integrity":"sha512-h0kxzbmw6haOTIYE35XcfsBgurNOHO8aGe6+QG6AQfe+C9b2M9BY9IKvf2O36ZJeJ8kPJ/7egDcJjNLmH7tX9w==","signatures":[{"sig":"MEQCIGESuSBDqvH681wm6v36sGQh8NIYbG8MdI63PkrvE1jPAiAGxumCrvCoGy1zDp0alolwVnaRbc1fyxbOIT6RagN76Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339088},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1c808bb203b3fe718cfba6317b45e7ef699b5c19","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"1.99.0","@mneme-ai/core":"1.99.0","@mneme-ai/correlator":"1.99.0","@mneme-ai/embeddings":"1.99.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_1.99.0_1778664189996_0.9399148059654967","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"mneme-ai","version":"2.0.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.0.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c1fbd1bd9b49d37277b25fae16a260e888fff386","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.0.0.tgz","fileCount":652,"integrity":"sha512-gubzGyO8X8lF5cA9S+eUU8/iJyb7uw2r1uZu0iixFgJItUNv9JdAUa4GOmJNmv2ohnmT34NMpZeUxGWmPEFbCQ==","signatures":[{"sig":"MEYCIQDIyRvX+edOgMkMaGdNsXBNiLHUjnQoXJqPe3DccQDC8wIhAJ9+OfOQeolH+0iRwW0cBNQ7J591StPyJMnRCccdP8wj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339083},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f4cfe32f0cb1acb9e6eccf1ac8e920510db8976b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.1.0","@mneme-ai/mcp":"2.0.0","@mneme-ai/core":"2.0.0","@mneme-ai/correlator":"2.0.0","@mneme-ai/embeddings":"2.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.0.0_1778665974669_0.272880179642804","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"mneme-ai","version":"2.2.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.2.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2e55ff5bbe5bb8537569d8bccff22582e894cdea","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.2.0.tgz","fileCount":652,"integrity":"sha512-kn2+08bq1vrjmV0CDTr0VbVTLX5WfaGniRvDYWUa3z0eyGbmb/8RGAY8plLjACZmtYYKU6YV0qSqIqXFK5VmxA==","signatures":[{"sig":"MEQCIBcpaArgTi3s8VRZsTeyyN05zTxu36Y4B6DjMh+2ajSzAiAFVqz5gqKShAoT4d6q6HhrxAKC5Jbiy8S9eYuAEWkGIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339083},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"216e86c0043cd9c030a08ec377c1ed5e2b7e3f5e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.2.0","@mneme-ai/mcp":"2.2.0","@mneme-ai/core":"2.2.0","@mneme-ai/correlator":"2.2.0","@mneme-ai/embeddings":"2.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.2.0_1778668222725_0.8592502773501538","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"mneme-ai","version":"2.3.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.3.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9c68e3a9e414ffa215a09e80de5dc6e5c68d33bf","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.3.0.tgz","fileCount":652,"integrity":"sha512-NYjj45VGHb1/YCywKkgJip0N5EKyU9e7f/P4ZwXJP/rifX111ui+/wu+fsjH9UxEI1FBWtVZvha9t2UpHklskQ==","signatures":[{"sig":"MEYCIQC1oLLo4mC0MqWqH5VF2ZEAWT/Lb2v8krvrSUNpvdcFMAIhAIe06hApklcTM5cCA45PPm5nWPwA3TDhimnPPaLPI8nf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339083},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"756e71a0afc6f78bbbadfbd8d3c0932e9e7bb328","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^12.2.0","@mneme-ai/mcp":"2.3.0","@mneme-ai/core":"2.3.0","@mneme-ai/correlator":"2.3.0","@mneme-ai/embeddings":"2.3.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.3.0_1778670339750_0.6596499702010439","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"mneme-ai","version":"2.3.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.3.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1a7d699c6fd1edc66652eb8498751bdfde4eedca","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.3.1.tgz","fileCount":652,"integrity":"sha512-a2yw0XaTIMYV9gSG1x67rybtkgwaGQWMZNPrrukdZMaw/6OF7/tjffujQorw73+KBA10SvnvguRrZJDa0+Le9g==","signatures":[{"sig":"MEUCIBWCvXsawr0xi3P6o2S9iBMbo9fH3UghjtjVp0rgA5/iAiEAyMalr0Kvmk9w+unwYCLfredT0mqCanKtV5TGxkWB7fk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339083},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6225c5453814f73caf5931d938e007dd29b98d1a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.3.1","@mneme-ai/core":"2.3.1","@mneme-ai/correlator":"2.3.1","@mneme-ai/embeddings":"2.3.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.3.1_1778671185734_0.07244968758832426","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"mneme-ai","version":"2.4.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.4.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c9f8712098feb9c2e1cc5a91fe54d4fc0cb7d0e3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.4.0.tgz","fileCount":652,"integrity":"sha512-wustoP7d/2rxsyKxcs/lMMA7YCXmlq02kqCNKPu6KepAGgeIAvuJ+plaMrxh4pmgNNfJa3edDH2pdHyoHObk1w==","signatures":[{"sig":"MEUCIQCE0vGXqohKkWx44KasuBr6T+ZyHcEBEnFI+p8YM9ftXgIgQndAXhRfPgSvARnSPqPOEieozzRr87vuqQU4mdkIZ3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339083},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6d10a0c143019dc8e3e7de8bfbc8ca6128055379","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.4.0","@mneme-ai/core":"2.4.0","@mneme-ai/correlator":"2.4.0","@mneme-ai/embeddings":"2.4.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.4.0_1778673090926_0.9410315624581223","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"mneme-ai","version":"2.5.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.5.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"df4301b992abcc2d4651f1ec97d1bd50878eec16","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.5.0.tgz","fileCount":652,"integrity":"sha512-+VxW/fpbzXOz8tSOPGi2JLGNj2naGO7+ddGDFshSUQDfH2cPIEZgRmqptnbchMBrC9F9mS0pm1clgVLPahJRhA==","signatures":[{"sig":"MEUCIQCKbEI7IXgBtVtmO205Kym6cxVlajHZjPJrhKNDzFqEPAIgTV3ADMd8Lc1J5N0b7z4iliwxyve53vw0kaWF7Cy/eLQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339083},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b227687d6135883e9d330d27e228610847051c21","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.5.0","@mneme-ai/core":"2.5.0","@mneme-ai/correlator":"2.5.0","@mneme-ai/embeddings":"2.5.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.5.0_1778674874291_0.31915814201774007","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"mneme-ai","version":"2.6.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.6.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1c13cf0ea72c60a1093889dffa9a863c68ce4b3e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.6.0.tgz","fileCount":652,"integrity":"sha512-yWlUWSvq/Q5IWaxlZIoF8STwnbmjakNb02q0ZAb2kuATQvv7SzTpF1bVmqujnf4pSe2fjWnc1AALJG8L8lIiyQ==","signatures":[{"sig":"MEYCIQDe2eukymcPAyCbayKYySztMfKSP85E6Q0LXbBmAjjq8gIhAOf6PawendKEYtQQ93O9DOC+WI5nXD3nIFVu6RAypDWc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339083},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1a4a864af109d12194b03e078174ee13c1d46671","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.6.0","@mneme-ai/core":"2.6.0","@mneme-ai/correlator":"2.6.0","@mneme-ai/embeddings":"2.6.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.6.0_1778675604948_0.5612039785886496","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"mneme-ai","version":"2.7.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.7.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a849f51977879662f912b8bff2815e83937aa34b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.7.0.tgz","fileCount":652,"integrity":"sha512-6wydH9+WAwfEx9UvvqbBtp72eG/dXzkJ1QABHRQIQng53jOE5J8xbLZFCFJiqizdYb0/+UqQxXGJwxnRUhaq9A==","signatures":[{"sig":"MEYCIQDEWqcVhbsQ09OSVFlKOFSpPA3oAXm/mpIXz7mApu3BQgIhAMjJPCT25fUYozyaGVbFfkQUaWXwacH2qgxECKzh/MzV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339083},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"707bd07a7b0dcf4eb0965725694c9a492afa8667","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.7.0","@mneme-ai/core":"2.7.0","@mneme-ai/correlator":"2.7.0","@mneme-ai/embeddings":"2.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.7.0_1778676691692_0.5889757572494898","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"mneme-ai","version":"2.8.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.8.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"53334d928d04f4d14cc8514f0f2a6845956e5daf","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.8.0.tgz","fileCount":652,"integrity":"sha512-vKikS9sclT+Fk055e7VOy3yhYl/CTpERlx+/Qd3o1Sy3kwbOYwZUEoh6nCCgPFocIJ9kAk8H5xvo4gy2LG0wsQ==","signatures":[{"sig":"MEYCIQDMFFG2R3djFnuGhHlKorL9mG+Z2OPGzELLwJUVZAOH5QIhANwjL63lKAJ8gsTTSAzkYoJpWDfu5CSK1UsHTle2OX85","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339551},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9a2b09a7f4c841d9f6d0b1007bc19e2662bb3c8b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.8.0","@mneme-ai/core":"2.8.0","@mneme-ai/correlator":"2.8.0","@mneme-ai/embeddings":"2.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.8.0_1778678833219_0.21866727378816408","host":"s3://npm-registry-packages-npm-production"}},"2.8.1":{"name":"mneme-ai","version":"2.8.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.8.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1823876c8cd852542682219165c1e1e556b27720","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.8.1.tgz","fileCount":652,"integrity":"sha512-jnB10uKJuMptXFSKkPBQ8Ql7XSaKujxJLFOziVJyFd5/Jg4hZztNT9XSn7xsrBHGCUXj1wyFkdZMiNy5sEvvwg==","signatures":[{"sig":"MEUCIGAR2cBAEjWUAhT7nYWhDxVr2n9FQJU2mGuzYg1x/zxYAiEAw9Sszk+hUea3wdJfyqgZVMxduFAfsp1k5oonK7S4hck=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339551},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5dffa555f750abc6c5b8a1c0e1b7c72dc88afaaf","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.8.1","@mneme-ai/core":"2.8.1","@mneme-ai/correlator":"2.8.1","@mneme-ai/embeddings":"2.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.8.1_1778680113734_0.8758846482801097","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"mneme-ai","version":"2.9.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.9.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"06128b2834b98385f9fb2350dd02bee00469f268","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.9.0.tgz","fileCount":652,"integrity":"sha512-OwfbYbdLj22MRSSmopjs1m0+jmiuD/FqnNUdSsIM3C8FRBdC1M9f5gRtdiA8abHoevbElRx9m1I31O8dUzqrlg==","signatures":[{"sig":"MEQCIAjEKvCTgs/yJUdnnq7NZ1TIZ+F7ljIdH95OwsAOWZg8AiB22sI0I4yuE7+fEpP+K+g6/WZcITFFzbSv3yCalj7INA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339551},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f55b6906ba5f6739beb7e4e90d245ffd6b87aeea","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.9.0","@mneme-ai/core":"2.9.0","@mneme-ai/correlator":"2.9.0","@mneme-ai/embeddings":"2.9.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.9.0_1778682315936_0.9580739988237179","host":"s3://npm-registry-packages-npm-production"}},"2.9.1":{"name":"mneme-ai","version":"2.9.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.9.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"55f4128f602c9c4f5b627745d330cb87f8de3211","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.9.1.tgz","fileCount":652,"integrity":"sha512-iaSXoSO8AiRTzA70UTAsAA2tGiVg98sV6X1mCfjCLN/Xw8+sD9OcfoMaCV4EmMdTxbk1fi9GtHN4iHVwQpkITA==","signatures":[{"sig":"MEYCIQCa/P5uMM4qABJvSrEfjjA6u+BNKQQHsfYc1tI8HTbDbAIhALMoPKhpynNz64/h00aorMeLl81GV7L5YATFz0RIe+bh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339551},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b789326ecbce149299dafe4cc0c53eb0ca163b6e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.9.1","@mneme-ai/core":"2.9.1","@mneme-ai/correlator":"2.9.1","@mneme-ai/embeddings":"2.9.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.9.1_1778683727093_0.18473678258375092","host":"s3://npm-registry-packages-npm-production"}},"2.9.2":{"name":"mneme-ai","version":"2.9.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.9.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6fe6e2f3e0aee7879ca46ead84ab00aeb88a5b0c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.9.2.tgz","fileCount":652,"integrity":"sha512-Ocg8u/wpFQrAhiKnFEFcll1VgYkAnMpo7PtyYQokmcjDwCZSYqXTI2m2SSZczHusHINFAySfHfz34JxjnHYFAg==","signatures":[{"sig":"MEUCIQDJi0EHJArsCPQdlwJGfy9+0pmR2liLlyfewXCju8+LlwIgKMojgka2DEjD+KacwwHneUAY0dIqfmt0fF6YNPKwBjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339551},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"620e0f152479f23a457e8d46556b7023aba6fe42","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.9.2","@mneme-ai/core":"2.9.2","@mneme-ai/correlator":"2.9.2","@mneme-ai/embeddings":"2.9.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.9.2_1778685222178_0.1651500137275963","host":"s3://npm-registry-packages-npm-production"}},"2.9.3":{"name":"mneme-ai","version":"2.9.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.9.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"cbf87a33097477e34669c786c316e329ac0b6f25","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.9.3.tgz","fileCount":652,"integrity":"sha512-n+BNigv2TZegf+WDUWouMMkH/MA4/6JFltFpY5xJe+BizudvugDRKqQ+v7j3U9Ka6VTOPnIrpK8juzc9G6u2pw==","signatures":[{"sig":"MEUCIBiQPQiInnkdgT8Nj062JO+EELduItBUrkDEcuv4J4NDAiEAlvdS+4JOt1YwnfhzeJp9cQmhlfM+qPiu+KTUjgsSeQY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339551},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ad1c6639f1561edbadce2b1357b4a73db038e247","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.9.3","@mneme-ai/core":"2.9.3","@mneme-ai/correlator":"2.9.3","@mneme-ai/embeddings":"2.9.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.9.3_1778686055824_0.944709996443148","host":"s3://npm-registry-packages-npm-production"}},"2.9.4":{"name":"mneme-ai","version":"2.9.4","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.9.4","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a8b7b11c2cd352b5be1b0a7692fb9859eb897aca","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.9.4.tgz","fileCount":652,"integrity":"sha512-GSKfEykmYOcU9a73rHTqbpCjuOdf4edAKZHyYuqS7ulFvDfDd+qjIYFrqnYLyyutTnlaiKDUmcfoJF0Rvn06sA==","signatures":[{"sig":"MEUCIQDF1DZZ0Vswv847Yi2mHb/3MBFriZWBuKnI7txqSUZFEwIgPDiI97eWUFuiiIC0EnzLUNJtWBlaKBZvrI3ZtMWbV5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339551},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"654d592a9d1f84e3f12eff78c19be9522d38e4e3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.9.4","@mneme-ai/core":"2.9.4","@mneme-ai/correlator":"2.9.4","@mneme-ai/embeddings":"2.9.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.9.4_1778813722349_0.49471825265898395","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"mneme-ai","version":"2.10.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.10.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c3185967f96c5972b41fce969673d116239312b5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.10.0.tgz","fileCount":652,"integrity":"sha512-oboo810sVpANCNeUsqX4tkci5M/HVEX2fNFDSwp13tFZOtFJBsCAQiLyL7bg6X8NsJ397Wc2JES8JFjZjnvgIg==","signatures":[{"sig":"MEQCIHWa2UN0j3+yISDytVQqVHPHpH3qyfTwlM1j8grDK5ksAiBDKhTYsFQl2QRoLwYHADx1OhmnN01MbijgpCHa24d4Xw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c8bb3360ad85cddbc280ebab9ff71e3f4d51ce4c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.10.0","@mneme-ai/core":"2.10.0","@mneme-ai/correlator":"2.10.0","@mneme-ai/embeddings":"2.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.10.0_1778815637485_0.25502979881492216","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"mneme-ai","version":"2.11.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.11.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"404410b2ef274fa81cfe98ae651d225d5ae346df","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.11.0.tgz","fileCount":652,"integrity":"sha512-NzBEoowoSMAcPNdZJ9IYRca6KU+E+WxU1xhGECXTkTRqiRGIGVqUgd60aU5QS0Ie9ial94hYLF4ILnJyBZO5kw==","signatures":[{"sig":"MEYCIQCmje35acpMmhS0XswmKq6ywSuKJqGtgeUrQ9AXNV4tzgIhANuPaKI2Bcnm+UFmWmCDqH/I0K91XTEHqPBXwTAOissV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c80460786fd385720630bdd9eb866d895bc7c6ce","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.11.0","@mneme-ai/core":"2.11.0","@mneme-ai/correlator":"2.11.0","@mneme-ai/embeddings":"2.11.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.11.0_1778817091769_0.009027950350161795","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"mneme-ai","version":"2.12.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.12.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a5aabcd313649414296a019ed66afda762f9c792","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.12.0.tgz","fileCount":652,"integrity":"sha512-T0B2De5uOz2wTZoR9b+l6po1e4RgAeWzdlZDx+mxRci3rKYK+vbQhTYyJ6XdqVvDxQtsspVlZzcJHX6W4nE9EA==","signatures":[{"sig":"MEUCIE+lI4eJWiGHLYxbh266mg2rwdTvKsYISombuEhfktytAiEAsopRbpWdTJrzvGyStQi0w6raxSRUItyImFW6PXhMpdw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"095132dafaa8b3df92aedffc13e53996c550399d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.12.0","@mneme-ai/core":"2.12.0","@mneme-ai/correlator":"2.12.0","@mneme-ai/embeddings":"2.12.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.12.0_1778820847623_0.4665794679045656","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"mneme-ai","version":"2.13.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.13.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"131d144931471619abf9e03519b88c80b00a15cf","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.13.0.tgz","fileCount":652,"integrity":"sha512-zH3SctX6d71YMwanviXsNr1HO2UhP71nt7U62HXzdQCyfLiIk8WtKaEeFvZtZIDQqhjtdLjxFNs4LfOeuUEAGQ==","signatures":[{"sig":"MEUCIQDcD7YUTBUeHgoi7WmLZ6XauLDUYe/GIKogfv749MYuiAIgfdONOPLGzS5keQQNUaayCkb90lTmidIQmwt74RWtSao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c1c56d4692bffd3f48c115320451945fc645ef72","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.13.0","@mneme-ai/core":"2.13.0","@mneme-ai/correlator":"2.13.0","@mneme-ai/embeddings":"2.13.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.13.0_1778824794075_0.7378059249452822","host":"s3://npm-registry-packages-npm-production"}},"2.13.1":{"name":"mneme-ai","version":"2.13.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.13.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"fdcf8afb4f4f96ce3e2cafb7836aa8048fa03191","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.13.1.tgz","fileCount":652,"integrity":"sha512-5VpXfISLnzOpln+MU0PaTXt2PjTH93d6IYU+5m652GwNHrbEot/a/9c73v1cQ2iKxczRGl4SPK+lbk+JZm0avw==","signatures":[{"sig":"MEUCIQD04Y9zjm1+pW3jzG9W1dCNKDIVqa4qQKxm53jCHV/01wIgYpT1Z1fpMrCgRnkp1otn8FAUS87P+tSJmmZv6KB63oA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4877e79aeee8615f8441e8fe6ff32e9314bbcf44","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.13.1","@mneme-ai/core":"2.13.1","@mneme-ai/correlator":"2.13.1","@mneme-ai/embeddings":"2.13.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.13.1_1778830385791_0.5714761940050368","host":"s3://npm-registry-packages-npm-production"}},"2.14.0":{"name":"mneme-ai","version":"2.14.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.14.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"148c0e7dcbdc1fab9955d93372af2434563e768a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.14.0.tgz","fileCount":652,"integrity":"sha512-sDkR1qQtCPkeh87vr7Dp8qAyH63k1fiNebFUW3s522dgEOar9mICAafU/ufCTyKEC3H/4GfjKFpgsDRAgZ6aJg==","signatures":[{"sig":"MEUCIBXCdENLIwMAM/4zO+JqgWdLaCv+rBxrkBJZ2veNHwQUAiEAl4atG0speZ2o0b+CK+Qkj5WYCv8s4yRnHpXvETgyOKI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5d34bff81ff179335980bebb39c7c140a3f1f4de","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.14.0","@mneme-ai/core":"2.14.0","@mneme-ai/correlator":"2.14.0","@mneme-ai/embeddings":"2.14.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.14.0_1778832618400_0.6610574219457765","host":"s3://npm-registry-packages-npm-production"}},"2.14.1":{"name":"mneme-ai","version":"2.14.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.14.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"695bb986137d506392728e0dad87c86123c8e5d8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.14.1.tgz","fileCount":652,"integrity":"sha512-2b9FiBNC681JIv6hp8avuPjF/qZSbuh1uVAEb/evMndbEQtmpMrDBAQS99qcqTPE8DDgZcC+7swK6iKTrhgpHA==","signatures":[{"sig":"MEQCIE0gjSJWP1aZ8BQY71802Jl2hkdUXzbsYpUypddCCgzrAiBeYZoqZFnKhWLTQbKpbPgxWa+bEE1Mhr6TTTsX8xtXoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0f8267f40a4b48e9f0078c8a5b91ae7571f6f35a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.14.1","@mneme-ai/core":"2.14.1","@mneme-ai/correlator":"2.14.1","@mneme-ai/embeddings":"2.14.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.14.1_1778833651669_0.25275363526659933","host":"s3://npm-registry-packages-npm-production"}},"2.15.0":{"name":"mneme-ai","version":"2.15.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.15.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"be74be92a378e7bbe1379a104e108bda9fc8de26","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.15.0.tgz","fileCount":652,"integrity":"sha512-+V+JpYfQO3fKN6RRcnqwLtq/bP6KOPWdi4Ys4ifwoWv+Lz/fl6vvGRi1U7dxu9y+tb8HIn1GyH88jGlA/MrCSQ==","signatures":[{"sig":"MEUCIQDRbEzPym1G5ziBlx7LUJeHLuK24V1fAbUFxrCrdGisqAIgK13cLfdT2jK1+ri/xKbgmoxhnq5somzEfikRRmzIuK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"55a4c1303ddc48b0a9cd40aa0ad4e6b23824a0a7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.15.0","@mneme-ai/core":"2.15.0","@mneme-ai/correlator":"2.15.0","@mneme-ai/embeddings":"2.15.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.15.0_1778835055246_0.5597083232891298","host":"s3://npm-registry-packages-npm-production"}},"2.15.1":{"name":"mneme-ai","version":"2.15.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.15.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"902cd7396f0c04ea58c6ab51cb16e1ac400ec413","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.15.1.tgz","fileCount":652,"integrity":"sha512-VmVppJh/K09/jE29F2F5FHJqMUjeEGAhXd9/A1Z9Y90b2Mz5J/V4v2h3TVOwKBrK6mGFuroLR5geo2SH6299Qg==","signatures":[{"sig":"MEUCIAnJy+RfMYPmI9o+iQxuraYg/SQ8wRQQW8DBr7lx7vtmAiEA5BqY0fww7Rq7mkFnke4BHM1DoNAXLn18UViH6RNyiNw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0317b50b9fb84f7461dc4c7ea40e76f478fde201","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.15.1","@mneme-ai/core":"2.15.1","@mneme-ai/correlator":"2.15.1","@mneme-ai/embeddings":"2.15.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.15.1_1778836525016_0.10204647550644985","host":"s3://npm-registry-packages-npm-production"}},"2.15.2":{"name":"mneme-ai","version":"2.15.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.15.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b9408eb549ac92abaf701fce4dbe0d66d928ff79","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.15.2.tgz","fileCount":652,"integrity":"sha512-vHeeH3cI4zv4KGvIzkcXxKC5U99JAqM1ZEP1gVTGb6nrUEfuOH9kVLvYnO59Bk+EQr0wFSWLDFGFzyaGn3N2NA==","signatures":[{"sig":"MEQCIAO5UFf06couW4WywIpjIkt4O9NoNUEHvnOjGll8g7hTAiBXTc+Oc3tI+7PO343Ggp3wLyYP+BRv/zpci/Y9wu9E4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"452b5085767445fc942d6f0e1545cf4ab7e8997d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.15.2","@mneme-ai/core":"2.15.2","@mneme-ai/correlator":"2.15.2","@mneme-ai/embeddings":"2.15.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.15.2_1778837536270_0.5891387383784104","host":"s3://npm-registry-packages-npm-production"}},"2.16.0":{"name":"mneme-ai","version":"2.16.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.16.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4438fa11f5d7a65ac7ec0a2641d2207f8b53680c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.16.0.tgz","fileCount":652,"integrity":"sha512-VOLCL/Xk2rrJKGPWb2id4cynsPE8w9AL2Y0CdD3tuy6Un5NFv1TdgQoOyEfMpi+/BWsDSR0bsC7i9xGXn4DAWQ==","signatures":[{"sig":"MEQCIFeRJ29h7uALmg7qZmJp1hWXy6EIlfsUO7SdFRgy55gAAiBtPjdOQlx8cqTDxia9OwgK2vlhjKpwrAzFkWg2xvq7bg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"82d069a51ebd09609c616f1fee823eebadf3cd0b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.16.0","@mneme-ai/core":"2.16.0","@mneme-ai/correlator":"2.16.0","@mneme-ai/embeddings":"2.16.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.16.0_1778839698523_0.9077845437708199","host":"s3://npm-registry-packages-npm-production"}},"2.16.1":{"name":"mneme-ai","version":"2.16.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.16.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"32cb10edfbbffaa2e89314dd0197692d9fb3eef2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.16.1.tgz","fileCount":652,"integrity":"sha512-jaSksKyjYtitQvEHfCn/zaQAxKP2GQaB5lM3e3atFqEJsJyM6EQ218+tZmFD1kbJQgbGh0U8Zzvnr3JxjSCdOQ==","signatures":[{"sig":"MEQCICa21QGFAMc4CFEMAxjS63f13ZyXaHzdO1lZEfHGi76MAiB/wh5b8RLE6nbFRZjFF6PAMtspZ1QuLgoZA41uvMtOHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f0f279cc19e4e6ed69aa97b0bd4e980d4d0c3fa5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.16.1","@mneme-ai/core":"2.16.1","@mneme-ai/correlator":"2.16.1","@mneme-ai/embeddings":"2.16.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.16.1_1778840111727_0.06713382174946814","host":"s3://npm-registry-packages-npm-production"}},"2.17.0":{"name":"mneme-ai","version":"2.17.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.17.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"da3e1d4f699f496ba172b93218230270896596a3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.17.0.tgz","fileCount":652,"integrity":"sha512-LfCQknHT7Hpiw8iGdAsUQ7rxoSForwNzCiZuCALRc2Ab2tAy7HibkxEYyBf8IMHXgOyDdwZ58VoDDsCT8qnmYQ==","signatures":[{"sig":"MEUCIG8NQ72wyJBF65x80hqw7hKeG5bcChMu2/tM3FLmfGRGAiEAqaNHjOAT8/5cDlxUhkLcoUy0DSjJOSFsWN0l5H7pMnU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e57f0d20dcdf34b5bafa0881e959bdbdac0dfc13","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.17.0","@mneme-ai/core":"2.17.0","@mneme-ai/correlator":"2.17.0","@mneme-ai/embeddings":"2.17.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.17.0_1778841073715_0.6091210603130053","host":"s3://npm-registry-packages-npm-production"}},"2.17.1":{"name":"mneme-ai","version":"2.17.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.17.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c359923ece506022d84603abd483f8754222e967","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.17.1.tgz","fileCount":652,"integrity":"sha512-yC7zayYirKrRHdW0do5cMnfweqYQBT8WndfKoQcZl0BrJAmGjM9AWADmCGyHa4QbWNLs+PDnarpcOFs6aBhbXg==","signatures":[{"sig":"MEQCIHlfGq+tyqiAjXogLNavkbh8eMUVe4TjVQRkHQZ59JygAiAr19xFJDow7jCqwPoPda97dwlRqxwwCZcVISbzQZuUMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d30bb1fbf4b2b52cc0296382b502dc0f274123cd","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.17.1","@mneme-ai/core":"2.17.1","@mneme-ai/correlator":"2.17.1","@mneme-ai/embeddings":"2.17.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.17.1_1778841921807_0.9675014247008564","host":"s3://npm-registry-packages-npm-production"}},"2.18.0":{"name":"mneme-ai","version":"2.18.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.18.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6a2b53699b016df845deff7118559c47a6de757a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.18.0.tgz","fileCount":652,"integrity":"sha512-860/XS8SkedTVgUcKm4Zajs4uZY9xkfETrMWD5LsycLryxGLXWNtFj6RBqtBpln2qe025vWoJf1zG+qmHptCxw==","signatures":[{"sig":"MEQCIDT2CWpdUBoibP5vLbKsZ+mo3nbGh5oZAfTt7W2C/3B4AiBD6qUqB5/9yxq5lywAYHqlMaEXsQS6wnbNm45ANQxVxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"92d96624a018d2696e1526acea3bec76f12d3695","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.18.0","@mneme-ai/core":"2.18.0","@mneme-ai/correlator":"2.18.0","@mneme-ai/embeddings":"2.18.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.18.0_1778844782515_0.5606751270279011","host":"s3://npm-registry-packages-npm-production"}},"2.19.0":{"name":"mneme-ai","version":"2.19.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"94f454ed02d587eacec110ea40b07fc8870e7366","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.0.tgz","fileCount":652,"integrity":"sha512-WmoIGnAZ667YoZ8nCVh+VsbIXc5u0srn9Fnr5ulnXpdeqVoU93LnqULEXNF1PgIlYAjiMdp2lBqzk80EUzml4w==","signatures":[{"sig":"MEUCIQD9nqeKCZwALW3AepoyMRnz28DxW8TYFBQrFbh2W+g1vgIgWkjjzz/1fW2+JArIbvOFT/DAS4MT/Rw8tfXSOiLpFyQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d21c52c9f523a1807d5eb9a87ca6bfdcc569fe4d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.0","@mneme-ai/core":"2.19.0","@mneme-ai/correlator":"2.19.0","@mneme-ai/embeddings":"2.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.0_1778903216820_0.4848789806762219","host":"s3://npm-registry-packages-npm-production"}},"2.19.1":{"name":"mneme-ai","version":"2.19.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2ecfff62f3179adcb2cae196cfa4d0fa567352ed","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.1.tgz","fileCount":652,"integrity":"sha512-+kBesTggoGQb1zU+EMtcuZnIpzAh1qSFWorjirtV3DIaR8/0YPiMrxw51D97xSfscMuPRhQCUmFxm7USUZj8pA==","signatures":[{"sig":"MEQCIE5dvvndkREWl7ZnLsoNzPKIkyDgc1adNiViWFRfaYvJAiAWF+R0DJrqjzzDYcFtUub/UODuixTkjlrsI+vjsuNaSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"acbac62cf928b2929001e0606924a90c5c0490c4","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.1","@mneme-ai/core":"2.19.1","@mneme-ai/correlator":"2.19.1","@mneme-ai/embeddings":"2.19.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.1_1778904420607_0.5596283795660146","host":"s3://npm-registry-packages-npm-production"}},"2.19.2":{"name":"mneme-ai","version":"2.19.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7c45d29f4d02eab45ccc49da1119895a84ca0aa2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.2.tgz","fileCount":652,"integrity":"sha512-/m+vAQTk5TJAv5UH11wCVfwtKYusvGioa5l7d6Tu3vnhTPmibBXbEJiIzlF/ksUdU3qhLuF4+6nnh0ATaKq8BQ==","signatures":[{"sig":"MEUCIQDf2RLmCoww+/2UWhi/t01gIXlkEIR3GRnyg/hhEq8OWwIgFDNdZmGelqMU/DfuyEVJnP/Wuj0CbWIvh2xWjHfwp8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4f81f0a7e6717ebc7e75718754cb54e9c730b88b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.2","@mneme-ai/core":"2.19.2","@mneme-ai/correlator":"2.19.2","@mneme-ai/embeddings":"2.19.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.2_1778906611130_0.4489927217628644","host":"s3://npm-registry-packages-npm-production"}},"2.19.3":{"name":"mneme-ai","version":"2.19.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"25f74875f03d43b7f136e33676fb8297c63ee938","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.3.tgz","fileCount":652,"integrity":"sha512-GbV1IVi0A+TaNu6Op2JiQN45wVQhqCxbAgT+AeKQ5H0w+l5FRvAxUqSKu8cjKZWwGAbu0zVWCZZHsOGCXFD9EQ==","signatures":[{"sig":"MEUCIQCGt5750dH4JhoivI4JBPwr+9Jnj3mVromJI2w5mzLp1wIgCdRGsumSZ4QdNZHXJ6KkRVsKp0/pk5W/qzyfpZUefps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ca49065b14f2e3f7761f791d6b071e3d70cc0777","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.3","@mneme-ai/core":"2.19.3","@mneme-ai/correlator":"2.19.3","@mneme-ai/embeddings":"2.19.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.3_1778907734110_0.30769718842111304","host":"s3://npm-registry-packages-npm-production"}},"2.19.4":{"name":"mneme-ai","version":"2.19.4","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.4","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"77554c9a669058a94d913ae0708226f41b3281e6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.4.tgz","fileCount":652,"integrity":"sha512-gy9ft8R2oPGqtpr+8J+YOX11AeJEzgoINT0lig2/GODXhbECt9FB2yrkzxPCAi5c/dei7AhRI79kljvKJak68w==","signatures":[{"sig":"MEUCIQCuOZppG90Q0BsWogVY4Pd+ssZYpowN4wpEkawGfqzzNwIgIZUvMKRsTvZKej2+BPSLVrMTbPkXczR/ta3Wz5CI0QA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9c9a06c56ef4356ed6924b5a7935d76383999ce8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.4","@mneme-ai/core":"2.19.4","@mneme-ai/correlator":"2.19.4","@mneme-ai/embeddings":"2.19.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.4_1778910189369_0.1841510490245153","host":"s3://npm-registry-packages-npm-production"}},"2.19.5":{"name":"mneme-ai","version":"2.19.5","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.5","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"059e19d97179cdc2ac04032aa878bb76a9f4d0ed","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.5.tgz","fileCount":652,"integrity":"sha512-yDHWBXjLQhSvYHodaA385kZ6OMqtyLCvueV+6Nn4RinasZvxxnOxq0XPArxRzXE4J3ObmxOQ7mQFR3Zo1hkJjA==","signatures":[{"sig":"MEQCIESDyv3Pdi+K3Nb5ZU6e2p8Nd3mbP1vD+DqqjsIOcHI3AiAaikVJ8Mco6igVLITMW+oRCOdhN5Gcwg0ccQL8nDyvRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b7b6abd1c042212b12be97b4aefdb3b439af351a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.5","@mneme-ai/core":"2.19.5","@mneme-ai/correlator":"2.19.5","@mneme-ai/embeddings":"2.19.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.5_1778911583033_0.3083200503914656","host":"s3://npm-registry-packages-npm-production"}},"2.19.6":{"name":"mneme-ai","version":"2.19.6","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.6","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b1d4e44b809d1e6721b0a04c1b0bbf6c39f9a132","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.6.tgz","fileCount":652,"integrity":"sha512-6xY+CsHs0C/5kkOTYZ8e7X+9lNgNzmU7lGBBNjrQQfcp8IS8uazoK6ew31RBxqEJCqIG57SBl6bmQmpqdKLrgQ==","signatures":[{"sig":"MEUCIQCXFKVUp9VUlp0FQ2hAEsnSxSUhXWpBEMXygnLALBnbhAIgfuJ9wyBePdCSanQIS2d9Hxqqh4aStc7uxXcx7CMBgs4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339556},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1f644a8a1f31bd89d6d8f08579ffbe2637102c62","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.6","@mneme-ai/core":"2.19.6","@mneme-ai/correlator":"2.19.6","@mneme-ai/embeddings":"2.19.6"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.6_1778914746737_0.8960005467399343","host":"s3://npm-registry-packages-npm-production"}},"2.19.7":{"name":"mneme-ai","version":"2.19.7","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.7","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6ea70c147e0f2e334663a14b7c49466461a84d16","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.7.tgz","fileCount":652,"integrity":"sha512-dqXzt3gjkDIXd0dwSYT4x4aTT93JJToy6lJBwr3nS9wP4aib5N67385bG5ws8y1prPTg+VP87ua7Pjqo+O4AwQ==","signatures":[{"sig":"MEUCIQC6OPEuQuQurGIgjz83glHAa/RVqLiW0JCnGji3LEkQwgIgI2ykVyPvKQleBWdCTK5GyQYIr1vF8MTnnK+4ZxMGMzk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3339932},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"00551e4eacbda1350404ab19af3c250075439e2d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.7","@mneme-ai/core":"2.19.7","@mneme-ai/correlator":"2.19.7","@mneme-ai/embeddings":"2.19.7"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.7_1778917246791_0.18531054226968902","host":"s3://npm-registry-packages-npm-production"}},"2.19.8":{"name":"mneme-ai","version":"2.19.8","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.8","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"84a3dd7b1afa56949387a00c0cf09906fcffe0fc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.8.tgz","fileCount":656,"integrity":"sha512-7G+Xfh8crcQLMgeYTUlycf6a6B15P/vzEG22T/BQToIzAy4v1smFtyLnc3dbcY5TId3O4q2hbgZH5XwkwM+Qtg==","signatures":[{"sig":"MEUCIQD2aw3lWQ+Ia7g8c00J7w/x4s8LzR1rMjfd95TMC8+kjwIgd900kQgk0+CdJHzENDDVIQ2+jlBF3yN92FVIIq9j+OQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3354778},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"daf4ae48b4868eabf3c9024931cf06ded6f87140","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.8","@mneme-ai/core":"2.19.8","@mneme-ai/correlator":"2.19.8","@mneme-ai/embeddings":"2.19.8"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.8_1778918589578_0.9378673076235826","host":"s3://npm-registry-packages-npm-production"}},"2.19.9":{"name":"mneme-ai","version":"2.19.9","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.9","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ec44c479e3e3b18f44b9ac14105267d4f7a48c39","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.9.tgz","fileCount":656,"integrity":"sha512-LxouJF9YFdipSHEinvcCLTUlnxSWREghrjeRxfSdymgi7JhgHF9jnm1nQgnDeSFq7JILyKAI5bhHHfWWm/2Chw==","signatures":[{"sig":"MEYCIQDl4nT+92QuCdU0vIUiyLcsOZ7rQKVEwwgUqUDEURVIpQIhAKXN669oomClOfHPZ23qfl9l1qnCxqyGkj1129G4dZyk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3354778},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"326827bf78f2fc02d6fabf19999c9b332240cc37","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.9","@mneme-ai/core":"2.19.9","@mneme-ai/correlator":"2.19.9","@mneme-ai/embeddings":"2.19.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.9_1778919334258_0.4360680659400542","host":"s3://npm-registry-packages-npm-production"}},"2.19.10":{"name":"mneme-ai","version":"2.19.10","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.10","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"335cc0c2f5f0df7ce1e18f6d4412627053edc02b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.10.tgz","fileCount":656,"integrity":"sha512-ZA/keP9H1GkSIHJ61ZfWDhQkqXo87DbsDOksEypEXvdIFKRMpV2Osk3f6H4sdRzMb/0FP6t57NQF+wpxRS7ahQ==","signatures":[{"sig":"MEUCIQDA1WHfX42Bsx3rfCcXWF/hydXY/6OVv3b8oEXSy0m30AIgDig63RrXR5MYocqicXNlEvf8dh6D31OTEFJkhQp/m9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3354783},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"189dd93b2abde08e95db86e561eec97a44f541e5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.10","@mneme-ai/core":"2.19.10","@mneme-ai/correlator":"2.19.10","@mneme-ai/embeddings":"2.19.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.10_1778921823869_0.7261280632558222","host":"s3://npm-registry-packages-npm-production"}},"2.19.11":{"name":"mneme-ai","version":"2.19.11","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.11","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"777d6186b36602bdd3388a5a006f62e865273849","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.11.tgz","fileCount":656,"integrity":"sha512-BdA09sENiUIivYahQmTvrMTOR9FnafiScX/1e0QAaddoR1QLvfSm7WySZqmm9gyEFOpd+l7v7qN2Z/+oXNY69Q==","signatures":[{"sig":"MEUCIQCHdv1PEay5jGb8Qn0XonlTAcGvY2jsqcXLuC5Aua5y3AIgeivQ4PMo3JlZc66PbHK0c03z3/A+iqrcl6WerN0UUpM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3354783},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0c6ca8a4baf92f0afaa1a0d38528e7e98be3c769","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.11","@mneme-ai/core":"2.19.11","@mneme-ai/correlator":"2.19.11","@mneme-ai/embeddings":"2.19.11"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.11_1778922893739_0.5409651803811293","host":"s3://npm-registry-packages-npm-production"}},"2.19.12":{"name":"mneme-ai","version":"2.19.12","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.12","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f902c1f1fd6e9c9554937a90eefb295ea1e10952","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.12.tgz","fileCount":656,"integrity":"sha512-JfzIclMh7s1/5jnM2ZC1Zldyy93fbR82vmrTZDbDEeArhgGQChH6wmzMVMm6F+FG3AEdy4oRqeNoGYt5Md4dXQ==","signatures":[{"sig":"MEUCIFgSuMtdv2vlQz+5D0vBnf3VrK5ABzSuC191hPPtNndfAiEA877wSfYDgpdHPBb9NSSVqEPiPkWWB4aiv4Tw2u8XPpE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3354783},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0f37271c6ef8818171c5f9094a2fb08aaf61b172","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.12","@mneme-ai/core":"2.19.12","@mneme-ai/correlator":"2.19.12","@mneme-ai/embeddings":"2.19.12"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.12_1778924252479_0.8275169358578132","host":"s3://npm-registry-packages-npm-production"}},"2.19.13":{"name":"mneme-ai","version":"2.19.13","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.13","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"33112dc45fd98c922c5d6266f5fb8a7b4bc2aae7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.13.tgz","fileCount":656,"integrity":"sha512-+IDFoldFD8r4D2PGzFGM5I6ty585FPVGEy7kDHhZfOWrQqCGkg5RInVXrSIg9N5UVVGLacCzZewK1tKFG50+mA==","signatures":[{"sig":"MEYCIQDjyok/aOvGnhSqsBRn8ffUuOG6bKEkbxsIhBeNITcVfwIhAJxCnMJPyf2B+mrMvWCd8Uk49Y1eLkgUWsuI+Pdhxtui","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3354783},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4387f9ea1de86cb44bb9b22eef238aae2311d01e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.13","@mneme-ai/core":"2.19.13","@mneme-ai/correlator":"2.19.13","@mneme-ai/embeddings":"2.19.13"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.13_1778925477934_0.5633415747316413","host":"s3://npm-registry-packages-npm-production"}},"2.19.14":{"name":"mneme-ai","version":"2.19.14","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.14","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a3f2d650bf53df788266bfce3b92f4475d09b9bd","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.14.tgz","fileCount":656,"integrity":"sha512-mPA7+ZC34yUP6bWgSvqzbLWI6m/4EOTyHMl7czd+uRKiDPY2Q8Ri53lgZMCGEcVeYB6d/nsjkXgzHFb5xofwHg==","signatures":[{"sig":"MEYCIQDq6tnXb4bX/6tpmZdqM+5jQUhegu6My+B5o5rS//s35QIhAOvGuBlEtAGjY/QQ+cb4YBZO2YwgvshlSAkcMVaLcP86","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3354783},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2ec53ba0f16f2f52aae7ae141d0d17ceeb0eee6e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.14","@mneme-ai/core":"2.19.14","@mneme-ai/correlator":"2.19.14","@mneme-ai/embeddings":"2.19.14"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.14_1778926675729_0.7279227607080301","host":"s3://npm-registry-packages-npm-production"}},"2.19.15":{"name":"mneme-ai","version":"2.19.15","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.15","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"89c19258ae181cd1083886ea0194fe282a03fdb0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.15.tgz","fileCount":656,"integrity":"sha512-Rt0OeuKybyO1jzdQtLVZdoyUoxhd+jAHstRwRds/1+K6unKanSZS7mXr64P64fxl6poYKquvMWTFIK76nkCSlw==","signatures":[{"sig":"MEQCIG2Rxfo1Dtsgw8pIjOXrExmvg9ybnP5QBEFuxEY6jD8LAiBtlAJdm6h9pLenWTO9xDQ2fe9T7c7SDgfCrik5VmY9uw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3357424},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6e3311ee496485018b621d1a2a71d1d1de6703d4","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.15","@mneme-ai/core":"2.19.15","@mneme-ai/correlator":"2.19.15","@mneme-ai/embeddings":"2.19.15"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.15_1778940425897_0.4864024733769827","host":"s3://npm-registry-packages-npm-production"}},"2.19.16":{"name":"mneme-ai","version":"2.19.16","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.16","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d57b1e02aa4ebca06bfa635b827d8c447a368e87","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.16.tgz","fileCount":656,"integrity":"sha512-61gSx+lMYHmYQBtXytLIvl3QkW144POZ37+OK27skro0EaJvnvSpuTvmyufsV6pTSNXKvLowUIpjNtpRI8yAgQ==","signatures":[{"sig":"MEQCIBJpJk4jywtAj22LvBIQZTu27AiADvEDEeOm+uXfAhI0AiB9jd93nvpLECb/+UfpVAxEQ8rYADD9Fy63gnaz+LxJig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3357424},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f0613c729c51cdab9c75bca0eab77c7a29ec5860","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.16","@mneme-ai/core":"2.19.16","@mneme-ai/correlator":"2.19.16","@mneme-ai/embeddings":"2.19.16"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.16_1778942736734_0.11100303452747884","host":"s3://npm-registry-packages-npm-production"}},"2.19.17":{"name":"mneme-ai","version":"2.19.17","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.17","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"650084b086d33a6a1900fa1cf54997e226283fb0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.17.tgz","fileCount":656,"integrity":"sha512-dtqAXp0+fNX8rCcfC+L9+C1T20lWjjBmdgtJX8mUxc7kFbtwyVfB+P5ZuT5f+3L5O4MrGxPEEuYbG7YC4MXJ2A==","signatures":[{"sig":"MEUCIQCSkFHsjfN6DlNlDRVIVFBBBAhUB6hVwt6fcsXDbWHlmgIgOcmnAifVrJZig+bi6tSECZNgFLKPsWFpZ6TpGYorJSM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3360518},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"959bcbb631d514f23312938f4a0187a92c8866cc","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.17","@mneme-ai/core":"2.19.17","@mneme-ai/correlator":"2.19.17","@mneme-ai/embeddings":"2.19.17"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.17_1778944663760_0.44025668516488703","host":"s3://npm-registry-packages-npm-production"}},"2.19.18":{"name":"mneme-ai","version":"2.19.18","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.18","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a6712aa346a308d4861356a844feaf2c05e61233","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.18.tgz","fileCount":656,"integrity":"sha512-XLbvJ+fCtKY1JCaPVJ+jYbHIaXNW51eOiMu7MJCX5Y8wzMIdc2vIjHONMFN5I8Y7ek/Bo83FPhKIKQ8b2pOKVQ==","signatures":[{"sig":"MEUCIEOCDAWOqs4wRcAfXIxSsNUP4WFQrC3MrhE7bkN5POJXAiEA987Pv2xREoIEpxnXpCf4uwAAC3eCb8OcOAHVTI1Wa5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3360518},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8601b7501c7e89be156e7546038fd4dc1626a1a8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.18","@mneme-ai/core":"2.19.18","@mneme-ai/correlator":"2.19.18","@mneme-ai/embeddings":"2.19.18"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.18_1778946885339_0.24561242375570136","host":"s3://npm-registry-packages-npm-production"}},"2.19.19":{"name":"mneme-ai","version":"2.19.19","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.19","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1507b6498a7edd881c08362e5f15c6fed29bcd91","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.19.tgz","fileCount":656,"integrity":"sha512-lNyOgUcwwK+19KvIW41mT6xGRaFvxE+pG4zTa6ho39jToAlPMgu98PdnE8odd5PoVlsEBelJptqMUAIzAzKqXA==","signatures":[{"sig":"MEQCIE4zOQ+2F8+3psETvbq0jkX3Uisl2J8CaKBumVTmzVlWAiApwJtAo32n+vy7z8a/iXdL+btLhPjP8M1qcNTr+bS8/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3360518},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1b2d8b5bf59d454f65672dbe1da915f22eb334b9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.19","@mneme-ai/core":"2.19.19","@mneme-ai/correlator":"2.19.19","@mneme-ai/embeddings":"2.19.19"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.19_1778948352140_0.15094848858193055","host":"s3://npm-registry-packages-npm-production"}},"2.19.20":{"name":"mneme-ai","version":"2.19.20","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.20","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e3714b1d85ff90e412da21fd3aceccb534ed0efc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.20.tgz","fileCount":656,"integrity":"sha512-BMNQQNteJFZNmSCt1CiBZt3nRr8HhLF3IE/OtlNv8KvfkZODKjVbwWhQ/6SVN7gW7QbFvNkhBejKFZ/usM5t5w==","signatures":[{"sig":"MEUCIQDK5oICvUejrXY1ExKSPjSphvt7mF3X1nalVBQWGRE60gIgXcrH48dEfhOfHqeNzBk1hVr63YO6nlEbpXZQ5bsePDs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3360518},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e1e59607c71e55554f8359f61cb77b397d6f4c7d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.20","@mneme-ai/core":"2.19.20","@mneme-ai/correlator":"2.19.20","@mneme-ai/embeddings":"2.19.20"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.20_1778949908871_0.6449496560733101","host":"s3://npm-registry-packages-npm-production"}},"2.19.21":{"name":"mneme-ai","version":"2.19.21","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.21","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"31bed538ac842ba33826e327180d83d17bb480e5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.21.tgz","fileCount":656,"integrity":"sha512-FbnqF+UC/FCL5+6UYjN1Fwz93yOKpk8dNsZMdwmOAsSaE1fjRH7biobJ9LeIOwTJM6yg9zajaiPYYd8EXAhy2Q==","signatures":[{"sig":"MEUCIQDRRjb8Lup5/IPWJqQIjoxVIWCrbnCNsiIJY6RpShI7sQIgASqLh2F6j+sS67ubhI8Z5ACtY2FZ1kGMRh+50udB4Uc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3364007},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8562053d1c9f7790b8eed08a7cbce05accf36df7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.21","@mneme-ai/core":"2.19.21","@mneme-ai/correlator":"2.19.21","@mneme-ai/embeddings":"2.19.21"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.21_1778982571207_0.2680923754633171","host":"s3://npm-registry-packages-npm-production"}},"2.19.22":{"name":"mneme-ai","version":"2.19.22","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.22","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"cc99c114143e02ca302652ce5b800ad9c69ce1e7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.22.tgz","fileCount":656,"integrity":"sha512-rxpv6gEKzGPicFFit4jvC5eVJVehfxs4BK4KB/G2UDyMiVvtKG7f/VaEBzqe/bLRcGp5OoJJZjhS/TBTJQKkFQ==","signatures":[{"sig":"MEUCIQC3PEqJRSdv/1ba79itF/Kguv2o+iJ2PDBJo9IQi1S+kQIgZjD5Ska4G7W1lLb5Z+w120uTCvx5gY5i3ghkWSBW09s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3364007},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d69b6d2cdbdd0c3f55b42487820cb3947380346e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.22","@mneme-ai/core":"2.19.22","@mneme-ai/correlator":"2.19.22","@mneme-ai/embeddings":"2.19.22"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.22_1778984505136_0.010817045964263805","host":"s3://npm-registry-packages-npm-production"}},"2.19.23":{"name":"mneme-ai","version":"2.19.23","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.23","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e317d9a4a76671052f5d69374980c0b9aa97e5d5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.23.tgz","fileCount":660,"integrity":"sha512-3zdIoOiTTyHLoUvLSws+uvNCT8NNpBNgoMw5n6f0BGZkz6RAYi9T8QnuBsVKudKF02wzxd03HMUAgtbpHEqi0w==","signatures":[{"sig":"MEQCIE/n3rIKCToKoMCNCxqYN4exJXvSOfDjkvWZ6JSt4xIdAiAZf4+QISHuLbD52KBFjqGv928IX4fn8DEZjLHIi6aJ+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3373797},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"18828ab370340cb92560f6e4ad2c467e36fca2ad","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.23","@mneme-ai/core":"2.19.23","@mneme-ai/correlator":"2.19.23","@mneme-ai/embeddings":"2.19.23"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.23_1778986185449_0.12356055441867353","host":"s3://npm-registry-packages-npm-production"}},"2.19.24":{"name":"mneme-ai","version":"2.19.24","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.24","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"75fa2c44eeb3d7fefde410672aa3bab482e04432","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.24.tgz","fileCount":660,"integrity":"sha512-xcmoPHuYiIEw1IFIg6j+z0wJktQFiO+MzilMuGflTanmmAigLLGEJV3h1ngZxTGscjyarCeNi7F8+SClrXyjfg==","signatures":[{"sig":"MEUCIATO0vaHuD0syVRFm2V5IeGo3noOUrJvXOuZ+WPNupESAiEAhikt0UDOIXU9BSkTs5MQdSQURkXwfTcVmpePb3VR7AY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3379326},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"776d2842f1795d0deb6782a203657af540a49b8b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.24","@mneme-ai/core":"2.19.24","@mneme-ai/correlator":"2.19.24","@mneme-ai/embeddings":"2.19.24"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.24_1778988970070_0.7109645227117476","host":"s3://npm-registry-packages-npm-production"}},"2.19.25":{"name":"mneme-ai","version":"2.19.25","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.25","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"dd155e6c86379be8daafe0978a9cb6b1ebeca7b5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.25.tgz","fileCount":660,"integrity":"sha512-HJYFAKVU3ywGw5n3XP+vhV8tMjDIUfeDD23HVARD3K2613w2kvVqrFNwVTVf6yEr8Pl48Y+fW7iwGWQhgWljaw==","signatures":[{"sig":"MEUCIQC5iBtMmtPPA5S7j9AII9OXb4ITUb6DuGu10ZZga45fegIgbgZ7sqw5tNvJroMHcdFNiUb22wh4XC01wlbUnevAew4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3379326},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d1383a04a857cf8291adf44b88c0fd4ad5591ac7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.25","@mneme-ai/core":"2.19.25","@mneme-ai/correlator":"2.19.25","@mneme-ai/embeddings":"2.19.25"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.25_1778991223437_0.036422883925486094","host":"s3://npm-registry-packages-npm-production"}},"2.19.26":{"name":"mneme-ai","version":"2.19.26","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.26","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d071af357f22b6ce450b8fb4832cd4b2a22b580c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.26.tgz","fileCount":660,"integrity":"sha512-ZDxzQHIeHZGj9TwOUApH2F+dD7PJlOgkNd/kcBEUjSUf4wJtyvXRGWsJgJe/zKIaWDZJvfNdL9OimNuHJ/P94Q==","signatures":[{"sig":"MEUCIQDjJEfpfrrcyzwqvq3sgCKiGieIGqDv1ZNuREamS5mr+QIgP/aQujEFrrMUzNJ74wYD23FxvdiTx+iuT4V7g4dFzaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3379326},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6cb5fa1806eabb541c9c5b2d3779cd7010ae09b3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.26","@mneme-ai/core":"2.19.26","@mneme-ai/correlator":"2.19.26","@mneme-ai/embeddings":"2.19.26"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.26_1778992834964_0.6842065098258445","host":"s3://npm-registry-packages-npm-production"}},"2.19.27":{"name":"mneme-ai","version":"2.19.27","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.27","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6ebd5f9fc12d7cbe307f75a1599bb241cb902f6a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.27.tgz","fileCount":660,"integrity":"sha512-iV/r6QG5aW02dGZTbBpjRLkDorGioevLpYmWaYTJSDImO7X7SINLtcJ/v8vD7jvi4xLGyIduBVgu7sPiVupiyw==","signatures":[{"sig":"MEQCIB3At5ybFCQUpyh5e/YRhbTw4Dg+1+c5JppFYw0bJhkjAiAGKQE4My5knGXbHXZaLafgovUJh2YBBoj+K3+t3g1KDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3379326},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"971d507a85b6c6beb7fc9ccfa1234b3c5438e0a9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.27","@mneme-ai/core":"2.19.27","@mneme-ai/correlator":"2.19.27","@mneme-ai/embeddings":"2.19.27"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.27_1778994342026_0.9505523961234386","host":"s3://npm-registry-packages-npm-production"}},"2.19.28":{"name":"mneme-ai","version":"2.19.28","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.28","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"04eec66563943284ff29018051223c464a5b0847","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.28.tgz","fileCount":660,"integrity":"sha512-ukNGHZnHGsWJkD08+3zDxr97dzuSf9+07lsaH/Qo70f8cSu1X7vmqql6/ma1S5hgGDWDa7k2dcDaf7LVx/lcrw==","signatures":[{"sig":"MEUCIQCOPuNGkesFENL5C1fb44I97BwSgNyuYlur/VVBAx0PfwIgPsu/6NCBdaat4h9LHiGD6AJd2HXS+fuqcsYRLB/IBbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3387629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"144cb54075b2ebdf007875b13c60c8240ed43f74","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.28","@mneme-ai/core":"2.19.28","@mneme-ai/correlator":"2.19.28","@mneme-ai/embeddings":"2.19.28"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.28_1778998143249_0.44490745622916417","host":"s3://npm-registry-packages-npm-production"}},"2.19.29":{"name":"mneme-ai","version":"2.19.29","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.29","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d47caaf107733582430c82d7f9fe4bd41a81da69","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.29.tgz","fileCount":660,"integrity":"sha512-0PlCWTqW+ah0hlXUQtgm9ILAXA9llNkRVaquu95TdEDJvzyFrouUvY+e8ulMWTuwLzyjexjn3EFg88vcVz5e1A==","signatures":[{"sig":"MEUCIEuam57uR9LfK2pfzYb3dkEPF+y8tNIJLWry5YmqYqjZAiEAhv29+jLRTtyiLG+HfnM9XgeCfmzuxbQMWkTfiBOHTDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3387629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"790ed18358de47df671e52929c10d47821617719","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.29","@mneme-ai/core":"2.19.29","@mneme-ai/correlator":"2.19.29","@mneme-ai/embeddings":"2.19.29"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.29_1778999587240_0.2092931785000196","host":"s3://npm-registry-packages-npm-production"}},"2.19.30":{"name":"mneme-ai","version":"2.19.30","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.30","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ed38c39bbda35de162829fdf7837800f7684b0ab","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.30.tgz","fileCount":660,"integrity":"sha512-5LvKCZkQ5JaS3BbxlSZyUYL7yj/TTBWDPnhYgo04dsMt2hlS6nvKbx6XASs00c39qleNHPNDjZeq5nFhtw6AgQ==","signatures":[{"sig":"MEUCIQD4P/kFEQd+etWSi+toU1klHCdRTtkL8km1ep63NcwOLQIgHFA12vbNRgA9AT0PGkb1MOOP+RYQBdB9gQkAxNuA4V0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3387629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"32fbf2350cc39b43469afeebea3f02013ec17171","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.30","@mneme-ai/core":"2.19.30","@mneme-ai/correlator":"2.19.30","@mneme-ai/embeddings":"2.19.30"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.30_1779000790113_0.8427034630109429","host":"s3://npm-registry-packages-npm-production"}},"2.19.31":{"name":"mneme-ai","version":"2.19.31","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.31","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d724730751d86e6469e2aa637e31a097e7c2e237","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.31.tgz","fileCount":660,"integrity":"sha512-SUSa52uoC+rxkImScOIxdJNdm8TNTFQPro9CXmSb7s4HPDqbzCqO8XaWBrU3ghcn0aXU9x/IU+hLdg+Kh+PPBQ==","signatures":[{"sig":"MEYCIQDjwamwaHwPU71cyxRaws4TQOzA11jLf7rMRSAVnhR0kgIhAOttUUqNVoYlYQwp1SjtV/ofgMZrSfm9Niy5iT8+0ZJ2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3387629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"32fbf2350cc39b43469afeebea3f02013ec17171","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.31","@mneme-ai/core":"2.19.31","@mneme-ai/correlator":"2.19.31","@mneme-ai/embeddings":"2.19.31"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.31_1779008658268_0.00922872042532119","host":"s3://npm-registry-packages-npm-production"}},"2.19.32":{"name":"mneme-ai","version":"2.19.32","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.32","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e36b3e1ed56202afd20a76a821c5c74920c5615b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.32.tgz","fileCount":660,"integrity":"sha512-jf9FngnBz2PhSJBqOo/Hh8GygOb02AKE6IbVl/FoBOcob9G7jCJoPut1PZlz4o98U4C5lGphM9XM3epdTMPAVw==","signatures":[{"sig":"MEUCIB2L8QHdKsy1pINipa15RJ+Y/ObT+R88LzO2YCU2/Ns9AiEA6naYE7O8VOCZfpALii9UHNEcOXWK2QRJXwEmnG1mpEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3387629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"58a0e804f552a756dfa0a8e91b59888448016c12","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.32","@mneme-ai/core":"2.19.32","@mneme-ai/correlator":"2.19.32","@mneme-ai/embeddings":"2.19.32"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.32_1779010408884_0.05909678941794483","host":"s3://npm-registry-packages-npm-production"}},"2.19.33":{"name":"mneme-ai","version":"2.19.33","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.33","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"08c1b35d0cdd156b49c03e5812be23cac4b94764","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.33.tgz","fileCount":660,"integrity":"sha512-IOna+SZ0gwhbPS8h1Jx9lhKotHXV/Ww0t3w6uyelqhqNseZNGRrf3ygFRn3+fqkPLmHv6R1zitHye52iX6EEyg==","signatures":[{"sig":"MEUCIFwkpI8fTKlS+V7Ro8Y3GW794PUpOKiCjvFu6MbIW5LKAiEAi9vl7v/wBeAwUYte4CgYdyEoXdQVB81tXz0XOyAclak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3387629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2056cbbf197bc9b6ed5d0d9f4bc8eec93af20ab6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.33","@mneme-ai/core":"2.19.33","@mneme-ai/correlator":"2.19.33","@mneme-ai/embeddings":"2.19.33"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.33_1779012101253_0.03518193352502075","host":"s3://npm-registry-packages-npm-production"}},"2.19.34":{"name":"mneme-ai","version":"2.19.34","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.34","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"83c4c8e0a53aba4968176ca77fe82660b76f5d93","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.34.tgz","fileCount":660,"integrity":"sha512-KlQ5RL/G5NmzxPpnERj0qSD09TOz25aOz9QFxyKhiMmNK8n1auA8RYmlqZttd5vmN0Zx8rFnKGHHfbPrrloBYg==","signatures":[{"sig":"MEYCIQDHByBhywRutX5TvFL0HWhZYPKlGWPm/07iPDbA4B4GPwIhAJL3VQgiznKmal01US0Gmyu9pqJrmqHkTSTXhoZT14U+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3387629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"45e19bff95767fccfbcafb85f1673671ee64b38d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.34","@mneme-ai/core":"2.19.34","@mneme-ai/correlator":"2.19.34","@mneme-ai/embeddings":"2.19.34"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.34_1779018184851_0.35724492565135413","host":"s3://npm-registry-packages-npm-production"}},"2.19.35":{"name":"mneme-ai","version":"2.19.35","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.35","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2338cfb5ec0ba7287cb6b6db452e84b854ac37af","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.35.tgz","fileCount":660,"integrity":"sha512-3tUxTbaADjMKP66L1pq57c/RtqaVJVTjLf08wO9uOLYzZcxqTfrziOwnDgYjo1AmXeRBLjYFFT5bK04V+xmFUg==","signatures":[{"sig":"MEQCIBIJH/GasH2Sr9q+sBVCIuupVQX/FcWWFXSWDV8vWaTOAiA854507d4knidyhNfK6GLJieWErIE2gIZI/CONH4wP2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3391503},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c288803b9db9f7ea1edb7928fadc7f1178c04d44","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.35","@mneme-ai/core":"2.19.35","@mneme-ai/correlator":"2.19.35","@mneme-ai/embeddings":"2.19.35"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.35_1779019375554_0.6263002520682162","host":"s3://npm-registry-packages-npm-production"}},"2.19.36":{"name":"mneme-ai","version":"2.19.36","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.36","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"35b63646b7d52c46bd7ad04d0310e8184899b368","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.36.tgz","fileCount":660,"integrity":"sha512-pWS79h7dJ9F2vCRa9W6mojbxll8Au3b2aY1QBaxTEgdimSppeoPqeXkl51opW0sIWWe5R4iC7FwPAX296oIzjQ==","signatures":[{"sig":"MEQCIFOMtKzopaLXh3fRORDyqypPV2SNpC4R78oqELzBfTH2AiBmnFzBnsTzDKsr7uqnzVQHYpmCmhbvOMrK30Mu3vWNjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3392397},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"18a40460028cd26e7c00a1f9972d7463d5c4201d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.36","@mneme-ai/core":"2.19.36","@mneme-ai/correlator":"2.19.36","@mneme-ai/embeddings":"2.19.36"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.36_1779020006167_0.9600278594733693","host":"s3://npm-registry-packages-npm-production"}},"2.19.37":{"name":"mneme-ai","version":"2.19.37","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.37","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"af55aad5508b345930a5de4198b78b792f2e206b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.37.tgz","fileCount":660,"integrity":"sha512-3fnE9E0AkhwaIvynsd36bqFTRX0C2e2j9EfTRHikcTYv8br60yEFnfwY7pFMbEd3EooiciUwuEVVBNPVnFX0qg==","signatures":[{"sig":"MEQCIAnb+SvekWlNwsNYc5aUUrXjNoVffeJjrZCBoOTdScC8AiBm58avi4iNYnK3zdZC7NhoamFBqWBvgSy8DnwkmtqJbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3392397},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8c83cbba7bb19c2de5331a283275a4d69fc95da4","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.37","@mneme-ai/core":"2.19.37","@mneme-ai/correlator":"2.19.37","@mneme-ai/embeddings":"2.19.37"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.37_1779021842712_0.7711643488044118","host":"s3://npm-registry-packages-npm-production"}},"2.19.38":{"name":"mneme-ai","version":"2.19.38","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.38","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a3ad35a28bbc81ba6917627723180b9df214712f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.38.tgz","fileCount":660,"integrity":"sha512-eODMVa/JaOl0X9gYw3QikwGGVCzk5J0AisirMXIglgziDg0rmgS+XCEUzD7vtagocUnLhVnVY2diGOq0mQ9yeA==","signatures":[{"sig":"MEYCIQDR3aj7n+2LmS3FgvWPRbGoFGjO+jaYxVMLkmiRgXaDXAIhAIN8PGGI7vnAxxvcfbD3Am+nYwR+jORFcWeFmEcLezs1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3392397},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"bec119ba122cd0cc92bf4b832fb7e437c0858601","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.38","@mneme-ai/core":"2.19.38","@mneme-ai/correlator":"2.19.38","@mneme-ai/embeddings":"2.19.38"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.38_1779023094058_0.6481699367084703","host":"s3://npm-registry-packages-npm-production"}},"2.19.39":{"name":"mneme-ai","version":"2.19.39","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.39","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"08393c4c403b90a1fada86f9ffb95ed7ccc789c2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.39.tgz","fileCount":660,"integrity":"sha512-ubWXpF2pOP2TcBrdCwqIHmjIEFtos7CopknyshXYQOkwj/5oPLiqqSB3AbdVB3uIUFYT9r/ciF99uGkWxmp5bw==","signatures":[{"sig":"MEUCIQDgpmW35TGTloyAnwRn5Di8NR0nOBAyJZmXsLTxlQm/uAIgTQ4lce8oz70YOaiNIaDXnwBvow3sSuC1M4uCHEAD2IU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3392468},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e9ba6c2c277b5c2d424b2b3f96143283eef2dcd6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.39","@mneme-ai/core":"2.19.39","@mneme-ai/correlator":"2.19.39","@mneme-ai/embeddings":"2.19.39"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.39_1779026363261_0.663098469837033","host":"s3://npm-registry-packages-npm-production"}},"2.19.40":{"name":"mneme-ai","version":"2.19.40","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.40","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"498c4e068eacfe0856db970b0809ca23c6e5325a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.40.tgz","fileCount":660,"integrity":"sha512-Fkq2Q3EwoE6T6H+4JtLHe7qQtFFigvzxiU0w2XOr+AmnfVqQv4Tq2ilvZgJUnY3wVK87nUEbchKTRF3mtyZU6Q==","signatures":[{"sig":"MEUCIE2N3hZ7vxyvjaNtjybI/head5v0WSxd3BwAxCzY7rkoAiEA4syhwRAvx3U9upeBQmnIbJjhYCmsOPh0eUHNQ5bpsRU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3392468},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4666bea3074c21d906ffb12f5c69a8782e01016d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.40","@mneme-ai/core":"2.19.40","@mneme-ai/correlator":"2.19.40","@mneme-ai/embeddings":"2.19.40"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.40_1779079291419_0.5581898140656967","host":"s3://npm-registry-packages-npm-production"}},"2.19.41":{"name":"mneme-ai","version":"2.19.41","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.41","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"248bbbea8d383b56ba18c2325100bb23d1b9b0c9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.41.tgz","fileCount":660,"integrity":"sha512-UjV7FhVYFpnoTaYXd6bbdir60Tegjbll/GxqXUXZgYwOHccMztDCwttOGR1/zaaKYcFQ//nigqTgdXOeMLKioQ==","signatures":[{"sig":"MEUCIQDMHfkKwCx+ScusTVAYnj7+L1vQQUyANuPjClrdFEgx9AIgLvgYyvWHgm0/KOD9Egsfve1xwvYPnx5sir+SoOayag0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3400151},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8e6301e084731bec271e7da4503d7d639087b70a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.41","@mneme-ai/core":"2.19.41","@mneme-ai/correlator":"2.19.41","@mneme-ai/embeddings":"2.19.41"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.41_1779083615122_0.7255603217954947","host":"s3://npm-registry-packages-npm-production"}},"2.19.42":{"name":"mneme-ai","version":"2.19.42","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.42","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"684a11d6f2e537f17eaf80f642f7dcab7108c733","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.42.tgz","fileCount":660,"integrity":"sha512-mlbcJm+I/4f2s/7icmmIhphufeCghXcMsTaOO4QsA8E/92Jmo0VkPJWN/3f48hL+L03ef9CNkzWmGI57xf7mlw==","signatures":[{"sig":"MEUCIFVXTO55012s4PXTjNFVYWbS4CUAZG0J3xAJOJADQru2AiEA7vROmx/K39S8ojRG3LxVAQ4Xmmz/fLlJx+ks5m/w1VU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3402540},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3c7d3992faf138e2d1e0cf0c52712cfacebcf058","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.42","@mneme-ai/core":"2.19.42","@mneme-ai/correlator":"2.19.42","@mneme-ai/embeddings":"2.19.42"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.42_1779085083220_0.2724972887909429","host":"s3://npm-registry-packages-npm-production"}},"2.19.43":{"name":"mneme-ai","version":"2.19.43","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.43","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c84c3651aac4c2362cc144714061b757de6f16b5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.43.tgz","fileCount":660,"integrity":"sha512-dd+GPIH1vDZrrQ9L0ylAl4KQwDxTD7QlsgJTU/tLalc28uRk0DbNhk9kGigk1oZ+8z85b36Ip2xlJ0l1VgSToA==","signatures":[{"sig":"MEYCIQDgcYxjIZGh/2PVrqVyMR7JhYpFaRMosQy+CpL2yMonuwIhAJrhfhz4KBAQ3Ygb/FnHAkYSArtXieWhCDMo9KWFcePz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3409308},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d8eb9d1a57673cfae652ecd4aeba48b14be2e6f3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.43","@mneme-ai/core":"2.19.43","@mneme-ai/correlator":"2.19.43","@mneme-ai/embeddings":"2.19.43"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.43_1779087030502_0.7006077247558746","host":"s3://npm-registry-packages-npm-production"}},"2.19.44":{"name":"mneme-ai","version":"2.19.44","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.44","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"bc1d8beeb28801ca8a52ed7854651410c35b0338","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.44.tgz","fileCount":660,"integrity":"sha512-NfStjmS9hGD47EhtH7/0pnMd6SSOpDyGiJ5dX8PK0nUek+XbxnKwPV4rp5iAL0NIbddrpCksp/sFfMUNTGqyWQ==","signatures":[{"sig":"MEUCIQD/SloyTnptA4uVdZIuibq4v89bOPq55PxRv7irjdbYhgIgTs/IsN2cx5kNAMIzrBgZEY9mS2MdLiZgzfW61hI6o7g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3409308},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7e14752a7246f7d976dd404afd2e2c62389d03c3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.44","@mneme-ai/core":"2.19.44","@mneme-ai/correlator":"2.19.44","@mneme-ai/embeddings":"2.19.44"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.44_1779088657346_0.5092959065884237","host":"s3://npm-registry-packages-npm-production"}},"2.19.45":{"name":"mneme-ai","version":"2.19.45","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.45","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a8e3d89d3f3ad14b71284bfe9205ff485593433a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.45.tgz","fileCount":661,"integrity":"sha512-WB+bkSj46jcHRpNgGhZdf95fhHM3TEkm3abEVtPwogBzSDH/n5cheIJc5pQKf+k05JuEmDjCu4QJYlEmduhmkw==","signatures":[{"sig":"MEUCIQD40qUB80JZg/RsJlWZVTAkGWa3800JaoNL1cyKD3cZGwIgIHx5Bah6Rp1Z9zgO9/pCFlonr2swM4YurfVx2xf9X4s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3414140},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7e14752a7246f7d976dd404afd2e2c62389d03c3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node ./bin/preinstall-stop-daemon.js"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.45","@mneme-ai/core":"2.19.45","@mneme-ai/correlator":"2.19.45","@mneme-ai/embeddings":"2.19.45"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.45_1779090883372_0.6858284472295557","host":"s3://npm-registry-packages-npm-production"}},"2.19.46":{"name":"mneme-ai","version":"2.19.46","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.46","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3395fca15ed2dd0febedc12085508fb539403542","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.46.tgz","fileCount":661,"integrity":"sha512-j3lRo5/PnEyIvY5RAbgfNqlNOVVXyODkXyXFbBwZRT4yb3Wuw4ru0dm2eY72+Di3uZKRk9QGmoOGa3aZNarp3w==","signatures":[{"sig":"MEUCIQDHX8pj1ld3hQ6uLLPvoARtB3szoGuzU8VL+R/UC5pH+wIgBpcfk5wXqduyBu5cafLw/cf3QYII+U72MonK5KWKfqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3414140},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3bc3616ecb9aa38e2dc3e9493588470d71ad7e68","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node ./bin/preinstall-stop-daemon.js"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.46","@mneme-ai/core":"2.19.46","@mneme-ai/correlator":"2.19.46","@mneme-ai/embeddings":"2.19.46"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.46_1779093564693_0.8033173669586144","host":"s3://npm-registry-packages-npm-production"}},"2.19.47":{"name":"mneme-ai","version":"2.19.47","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.47","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e79223cccd57d665e946c1db0972369cfb702bbd","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.47.tgz","fileCount":661,"integrity":"sha512-IBl86xvBIjp45ag6+NmdSc5D7s6soodtvWz0ZtE5f+dQXFbeqQ30CWg0C3aeAjf1uZyQsME/ubm3T7qi1eFtRw==","signatures":[{"sig":"MEUCIQDpU6Hrr2nFRyIMmuTUJUwSR+aDmedln6AMNxsnRtFm4gIgD7hbOD5atTUPTM/+/+/LwwwykGjaPsbj9YeNtgKtl1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3414140},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9bc4e48672d3ea1ea853fa70b0bf74327aeb60e4","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node ./bin/preinstall-stop-daemon.js"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.47","@mneme-ai/core":"2.19.47","@mneme-ai/correlator":"2.19.47","@mneme-ai/embeddings":"2.19.47"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.47_1779100477866_0.8199931067395096","host":"s3://npm-registry-packages-npm-production"}},"2.19.48":{"name":"mneme-ai","version":"2.19.48","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.48","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2c95a8a4933a84fc5e016282283304dfa6efcbad","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.48.tgz","fileCount":661,"integrity":"sha512-0SV941bmIBvTLvCYJLlrM1/ZIHBxn7487jIwYIYTkN6qO5zsqCarKzO/3Hl67/6TneauPMyJCX26hMEjhdOgfA==","signatures":[{"sig":"MEYCIQD2XapWJ9J/btoXIFSdOZdXBFelsquiNrUjxKhSIqWBTAIhALuA029aTTVNh5o3sL24SiXHrhGEOIsCNlU4AjIACzOF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3414140},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c27d8fe9a8b310c63f5c1c324d21c5a209096deb","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node ./bin/preinstall-stop-daemon.js"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.48","@mneme-ai/core":"2.19.48","@mneme-ai/correlator":"2.19.48","@mneme-ai/embeddings":"2.19.48"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.48_1779101277034_0.1692754799353815","host":"s3://npm-registry-packages-npm-production"}},"2.19.49":{"name":"mneme-ai","version":"2.19.49","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.49","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ae22fae996694130008c0b1454cd242a0bd7e20b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.49.tgz","fileCount":661,"integrity":"sha512-35UDNyP2bPduL1n7PJtCc9VpqqHRd5R+7/9G4iNUwADTeILGjeNWqmir1y+pKajmgFrukerZRGsubrm/W3IDRQ==","signatures":[{"sig":"MEQCIFNgSgLdieExDEEkAoYyfEy5l5t+qlOettKZeo5BlAP8AiAhMrOCkh/mx+0ieEunwWJ2k3upEnsixMBba7pGtOqQow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3414140},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3f8fe1ce8503e4a66437920c2905e75751758e5e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node ./bin/preinstall-stop-daemon.js"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.49","@mneme-ai/core":"2.19.49","@mneme-ai/correlator":"2.19.49","@mneme-ai/embeddings":"2.19.49"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.49_1779102101868_0.36518975256664943","host":"s3://npm-registry-packages-npm-production"}},"2.19.50":{"name":"mneme-ai","version":"2.19.50","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.50","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"62632b6d52068d755f060acd037f29f5401d61b2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.50.tgz","fileCount":660,"integrity":"sha512-6TBKJPwMP4Ko7kbXaXjInoZUiiJGTKalGuupYZRsdIo4MMIZ7i3SslQ6y9tZjlNvbqZjj5KPEldEkj8Qp/kUSQ==","signatures":[{"sig":"MEUCIC+FSgvsdNoIzeicyof4L0dB1FUyQsHb6HAn33e8ndzOAiEA6FKyLA+RSYI4dbVkJP7J1U+oupF1Lrx2WlcUXOH2DXE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3412675},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d58474cec7d5163f4cbbdfce5e80ad3bc9c246a3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const{spawnSync}=require('node:child_process');const w=process.platform==='win32';spawnSync(w?'mneme.cmd':'mneme',['daemon','stop'],{shell:w,windowsHide:true,timeout:8000,stdio:'ignore'});}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.50","@mneme-ai/core":"2.19.50","@mneme-ai/correlator":"2.19.50","@mneme-ai/embeddings":"2.19.50"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.50_1779103392193_0.28964495924009803","host":"s3://npm-registry-packages-npm-production"}},"2.19.51":{"name":"mneme-ai","version":"2.19.51","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.51","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ea08e932647d629b075a7858f9a573961f7bd777","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.51.tgz","fileCount":660,"integrity":"sha512-wtjXlyxC/kS7D9tVun3C0GZGpT4MSYtPGwVCdPDEp0V0if5znQOqgHDuwDgHYlEPjnKlgxdRgdGML5XJ5xbTyA==","signatures":[{"sig":"MEUCIAxfivo/y1H68aeW3GpX+GzPw/MjhfOR39FY2QqVh3Z0AiEAs5RG0068pp7YlYD8PwB60NKIPqs1yiMAPm7Ie1Vsoqc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3416660},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5e3845a548ae00363b4ddef29de650dbd87aea4f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const{spawnSync}=require('node:child_process');const w=process.platform==='win32';spawnSync(w?'mneme.cmd':'mneme',['daemon','stop'],{shell:w,windowsHide:true,timeout:8000,stdio:'ignore'});const end=Date.now()+1500;while(Date.now()<end){}}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.51","@mneme-ai/core":"2.19.51","@mneme-ai/correlator":"2.19.51","@mneme-ai/embeddings":"2.19.51"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.51_1779107227358_0.22161930853610334","host":"s3://npm-registry-packages-npm-production"}},"2.19.52":{"name":"mneme-ai","version":"2.19.52","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.52","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"77b8bc26e1072a8a49c7bbcedb9f26bf25f22659","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.52.tgz","fileCount":660,"integrity":"sha512-+rx8ymm6ZnJGNz8Vxfx/mGy4yjWxDnxyh+pTDjTGNCdu/HF4ZW6mZosPmzqgFW6AHl/pP9AlG46q7jAkZsTHrg==","signatures":[{"sig":"MEYCIQDJW3Yb7aih/zAnV3nd7OxLuAcujpTXOerkJr+LLVHtnwIhAP6Yr95vAXo1XfNHSjaLtkXjQDRoLb7yoh0wBK+h+DFV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3416660},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c73cd48ed8c20699ab6c7ebc58be721bcb13bea7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const{spawnSync}=require('node:child_process');const w=process.platform==='win32';spawnSync(w?'mneme.cmd':'mneme',['daemon','stop'],{shell:w,windowsHide:true,timeout:8000,stdio:'ignore'});const end=Date.now()+1500;while(Date.now()<end){}}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.52","@mneme-ai/core":"2.19.52","@mneme-ai/correlator":"2.19.52","@mneme-ai/embeddings":"2.19.52"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.52_1779108566712_0.34795168429788403","host":"s3://npm-registry-packages-npm-production"}},"2.19.53":{"name":"mneme-ai","version":"2.19.53","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.53","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1f0332111de4c7924b998351b1533807b09156aa","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.53.tgz","fileCount":660,"integrity":"sha512-elV3uUh+QyMxmcsY7OyXjycV1wGE0h5Hh4sJBWtzsBJiELe07UKopQe7Ix2VpbSZEev792qpLSvYrj4KWyREEw==","signatures":[{"sig":"MEQCIEvRH50UzGZudDuBNDGZoo5smQ8DVuaqg9diICO77LghAiA24ZrJxGfkOURrimd8jNuTkIaGnPo1vevh4J2LG+B6tQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3421639},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ab8174c4bc9f4cc111faf1fd231d3f8cc09e6af2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const w=process.platform==='win32';spawnSync(w?'mneme.cmd':'mneme',['daemon','stop'],{shell:w,windowsHide:true,timeout:8000,stdio:'ignore'});try{const beatDir=path.join(os.homedir(),'.mneme-global','heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}const end=Date.now()+1500;while(Date.now()<end){}}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.53","@mneme-ai/core":"2.19.53","@mneme-ai/correlator":"2.19.53","@mneme-ai/embeddings":"2.19.53"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.53_1779110687042_0.41319160902343177","host":"s3://npm-registry-packages-npm-production"}},"2.19.54":{"name":"mneme-ai","version":"2.19.54","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.54","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"187f6e0d2b3b1a88d6f778f929dac6b9e2cf7a65","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.54.tgz","fileCount":660,"integrity":"sha512-KpQBogQ650jbfsakBjs3+Oe+G6BtkQQBtL5Zo1+t1BAY7EYxDd/IC/0xWIowLyppMfwnk7O52cERkK5n/iKHGQ==","signatures":[{"sig":"MEUCIQCXXHy/ozqOfyVYhWyE6L2KTwFsHa9FfutxskRysxNMegIgHjtq3MK7i71z670kaXk94Em403XlZSUMRSvfSCegKW8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3424418},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"212158030fb157ba654ee21252b94f851b031615","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600})}catch(e){}const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);spawnSync(w?'mneme.cmd':'mneme',['daemon','stop'],{shell:w,windowsHide:true,timeout:8000,stdio:'ignore'});const backoffs=[100,250,500,1000,2000];for(let i=0;i<=backoffs.length;i++){try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}if(i<backoffs.length)wait(backoffs[i])}}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.54","@mneme-ai/core":"2.19.54","@mneme-ai/correlator":"2.19.54","@mneme-ai/embeddings":"2.19.54"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.54_1779114297098_0.6433720082188255","host":"s3://npm-registry-packages-npm-production"}},"2.19.55":{"name":"mneme-ai","version":"2.19.55","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.55","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ddf01ecf302b007643ba825bef464c28028387bd","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.55.tgz","fileCount":660,"integrity":"sha512-ZDutd+m5oBLYy0ZigFNwaoW8kkY5cwzwZaNsnfILkVjrOnDdwHqsQGxnAVGC6QJBt3Lp8uNOaQbqWvVnnctqdw==","signatures":[{"sig":"MEQCIFSQ+aACmTCiL0sCg1+Yz8HdHHA6se0kwqRR1veVT3atAiBSTpR+L6C/ZjPuGdxaiy8gRUcQSj5FAKvKq2UbXvchpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3424418},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"19e3c392038883ab2c870545ec8ac3071093ed57","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600})}catch(e){}const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);spawnSync(w?'mneme.cmd':'mneme',['daemon','stop'],{shell:w,windowsHide:true,timeout:8000,stdio:'ignore'});const backoffs=[100,250,500,1000,2000];for(let i=0;i<=backoffs.length;i++){try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}if(i<backoffs.length)wait(backoffs[i])}}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.55","@mneme-ai/core":"2.19.55","@mneme-ai/correlator":"2.19.55","@mneme-ai/embeddings":"2.19.55"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.55_1779115381082_0.047171733148873685","host":"s3://npm-registry-packages-npm-production"}},"2.19.56":{"name":"mneme-ai","version":"2.19.56","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.56","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0c25a3816c4d2bee25abc3acbd893d3fe14d09a1","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.56.tgz","fileCount":660,"integrity":"sha512-U87pvsvVs0Pt0IBuAkOo56zOrQNHkVR6df/KLXYz/jr5hDz0+b1K+Ba4NACn8L51sJbFi8eV4sQhw/TCw0VVaA==","signatures":[{"sig":"MEYCIQD6HyN6TekYFK60QAy5v4VPWN4NksNRYoAu+R05MNbQTAIhAPk10LKKxRy7e0qI2Zk25mcza9xTHblygxwGaiI82UeK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3424555},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5147090fd32a194ec952fadd03f7d52062b9ff2e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600})}catch(e){}const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);spawnSync(w?'mneme.cmd':'mneme',['daemon','stop'],{shell:w,windowsHide:true,timeout:8000,stdio:'ignore'});const backoffs=[100,250,500,1000,2000];for(let i=0;i<=backoffs.length;i++){try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}if(i<backoffs.length)wait(backoffs[i])}}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.56","@mneme-ai/core":"2.19.56","@mneme-ai/correlator":"2.19.56","@mneme-ai/embeddings":"2.19.56"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.56_1779116440580_0.16959470834333512","host":"s3://npm-registry-packages-npm-production"}},"2.19.57":{"name":"mneme-ai","version":"2.19.57","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.57","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b67138ff423c002558451748c8448cc49acd8404","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.57.tgz","fileCount":660,"integrity":"sha512-dOeB5Hv+UY5eWKN1njxXCstF2OAzUJKL2iOEwOUBG3jSrzZ7dMFCQodxnXgAI/R9nE9eyY2cbD6jKfADScgLVg==","signatures":[{"sig":"MEQCICZeCCd72aAjDMm4I1K6Slq+9e2y8t09w8k9lS/955jsAiBEQW1mifVtZWu1MUM0cojedrr8GWpFaQIMCsSJ7ntEcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3432883},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9d4c9aa862654fcbc99adde94af9538c34d3da71","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600})}catch(e){}const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);spawnSync(w?'mneme.cmd':'mneme',['daemon','stop'],{shell:w,windowsHide:true,timeout:8000,stdio:'ignore'});const backoffs=[100,250,500,1000,2000];for(let i=0;i<=backoffs.length;i++){try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}if(i<backoffs.length)wait(backoffs[i])}}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.57","@mneme-ai/core":"2.19.57","@mneme-ai/correlator":"2.19.57","@mneme-ai/embeddings":"2.19.57"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.57_1779117587627_0.5711087964402191","host":"s3://npm-registry-packages-npm-production"}},"2.19.58":{"name":"mneme-ai","version":"2.19.58","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.58","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a8501a287a4b4d1d5b3ce0bab9f7e785babde048","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.58.tgz","fileCount":660,"integrity":"sha512-sKDRj5w0fmvLBtgKq5FcpWEcKvqXjgw0ufTpfEzlM55lJBl9UvYUWgufXe3dWb8CN52A90TlzduhMvlDoyoKnA==","signatures":[{"sig":"MEUCIQDSwtg49XCJTxPEb9iVrcBDtj2icZShaH6tUVaOXduaewIga7TpXYmzCuMo/rqQklbb/mVYOKClqv9tJlZY5rPiV4A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3435215},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1c429048ca7a835c8e5554da63f70794a89f8de2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600})}catch(e){}const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};const isAlive=(p)=>{if(!p||p<=0)return false;try{process.kill(p,0);return true}catch(e){return e.code==='EPERM'}};const reap=()=>{try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}};wait(300);spawnSync(w?'mneme.cmd':'mneme',['daemon','stop'],{shell:w,windowsHide:true,timeout:8000,stdio:'ignore'});const backoffs=[100,250,500,1000,2000];for(let i=0;i<=backoffs.length;i++){reap();if(i<backoffs.length)wait(backoffs[i])}const verifyEnd=Date.now()+3000;while(Date.now()<verifyEnd){const beatDir=path.join(organ,'heartbeats');let anyAlive=false;try{if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid&&isAlive(pid)){anyAlive=true;try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}if(!anyAlive)break;wait(200)}}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.58","@mneme-ai/core":"2.19.58","@mneme-ai/correlator":"2.19.58","@mneme-ai/embeddings":"2.19.58"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.58_1779164420694_0.6796258912655899","host":"s3://npm-registry-packages-npm-production"}},"2.19.59":{"name":"mneme-ai","version":"2.19.59","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.59","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c218297d8a62093a216cafad2a52b6e9bcdc1828","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.59.tgz","fileCount":660,"integrity":"sha512-tiC0Fy8ByC4gxTuZZeeMqLYG/41ZaBMi9KOECYBdD8tVKBCqNKRBzOTfWMNBoOJbi5Rd7Yc7NyIQolpzaf806A==","signatures":[{"sig":"MEQCIEjvjMJg/eF/Bv5YKmuMeKQ1q2rccOs9NGde25rrbnMSAiAQHn1e5MxCKqiSWu7A8UTtxHqKw9lkEBXra9Q37a9TSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3443236},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"441dd00f69787b629b7da4e662b3e303d1918b7a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600})}catch(e){}const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};const isAlive=(p)=>{if(!p||p<=0)return false;try{process.kill(p,0);return true}catch(e){return e.code==='EPERM'}};const reap=()=>{try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}};wait(300);spawnSync(w?'mneme.cmd':'mneme',['daemon','stop'],{shell:w,windowsHide:true,timeout:8000,stdio:'ignore'});const backoffs=[100,250,500,1000,2000];for(let i=0;i<=backoffs.length;i++){reap();if(i<backoffs.length)wait(backoffs[i])}const verifyEnd=Date.now()+3000;while(Date.now()<verifyEnd){const beatDir=path.join(organ,'heartbeats');let anyAlive=false;try{if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid&&isAlive(pid)){anyAlive=true;try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}if(!anyAlive)break;wait(200)}}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.59","@mneme-ai/core":"2.19.59","@mneme-ai/correlator":"2.19.59","@mneme-ai/embeddings":"2.19.59"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.59_1779166153294_0.3477755733182515","host":"s3://npm-registry-packages-npm-production"}},"2.19.60":{"name":"mneme-ai","version":"2.19.60","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.60","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"06b062da984a6c383901c664e6d7b328ba5e1f97","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.60.tgz","fileCount":660,"integrity":"sha512-WAM4RLdqyXEE3giI79u4BnLcMnSAN9PBBEA6rE0MCCfoHS36jVSowWLp0EoJK3nBjEaTAWRqQJz1nvS4GlAWgw==","signatures":[{"sig":"MEUCIHr9E/k3L86vdz0ZJwJn4ylD3I+Ez59fypFz9RO6m7veAiEA0WKlMXJ76Locp0XCP32Wg7guHuCTxmRmtsGzPJ1HXKE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3443236},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1535a4ee49009d8899335f50287fd2f8977b45b3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600})}catch(e){}const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};const isAlive=(p)=>{if(!p||p<=0)return false;try{process.kill(p,0);return true}catch(e){return e.code==='EPERM'}};const reap=()=>{try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}};wait(300);spawnSync(w?'mneme.cmd':'mneme',['daemon','stop'],{shell:w,windowsHide:true,timeout:8000,stdio:'ignore'});const backoffs=[100,250,500,1000,2000];for(let i=0;i<=backoffs.length;i++){reap();if(i<backoffs.length)wait(backoffs[i])}const verifyEnd=Date.now()+3000;while(Date.now()<verifyEnd){const beatDir=path.join(organ,'heartbeats');let anyAlive=false;try{if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid&&isAlive(pid)){anyAlive=true;try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}if(!anyAlive)break;wait(200)}}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.60","@mneme-ai/core":"2.19.60","@mneme-ai/correlator":"2.19.60","@mneme-ai/embeddings":"2.19.60"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.60_1779168340022_0.4551642930696256","host":"s3://npm-registry-packages-npm-production"}},"2.19.61":{"name":"mneme-ai","version":"2.19.61","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.61","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9d334d83f176ba6fb03e73befa84cac9dce4c495","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.61.tgz","fileCount":660,"integrity":"sha512-826FtPTWJ/2vDPuq6WQflxNO3bS7oGnKaVRWqTHjx0Nmxqwt5ujyzt1VDZoScJVCPm5f/ycrHsGDAJYmQACPWg==","signatures":[{"sig":"MEYCIQDdUi5T6poi7o0l/3gi2fvHZPg4Vbp/FCBpNXWohwzOfAIhALhlI1CTmLmJh9SKEaDHHJIUxrkCBcGEC5Nq+C5yK6AH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3444764},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"cc8356fe79fd546ea7a0aa8fe7fcad43a56c883a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600})}catch(e){}const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}}else{spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}}wait(500);try{const npmGlobal=w?path.join(home,'AppData','Roaming','npm','node_modules','mneme-ai'):'/usr/local/lib/node_modules/mneme-ai';const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target)}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}catch(e){}try{const npmParent=w?path.join(home,'AppData','Roaming','npm','node_modules'):'/usr/local/lib/node_modules';if(fs.existsSync(npmParent)){for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true})}catch(e){}}}}}catch(e){}}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.61","@mneme-ai/core":"2.19.61","@mneme-ai/correlator":"2.19.61","@mneme-ai/embeddings":"2.19.61"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.61_1779172993955_0.45287573931886493","host":"s3://npm-registry-packages-npm-production"}},"2.19.62":{"name":"mneme-ai","version":"2.19.62","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.62","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"57efb482890d3fb982515edd49031351bc736c73","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.62.tgz","fileCount":660,"integrity":"sha512-QJlO++SuTaGCMWgajWj8BT2PZ0oY8Kryal0CK0lx+VUDvio1qqcITrjEGQxQHHGVD2+BedXCjIORmfYKfqtW6A==","signatures":[{"sig":"MEUCIDAo3KdY+Qmi5cCS/Q5hXqlKWGwn8vNMEP4KKECtZu8EAiEA3QhzqcAzmTJQzudvEpx5sU//3mSfxm3hIDFQarVNFTw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3444764},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d74445c7b3d197ea67b2c29557e920636bdb116a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600})}catch(e){}const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}}else{spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\d+)\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f))}catch(e){}}}}}}catch(e){}}wait(500);try{const npmGlobal=w?path.join(home,'AppData','Roaming','npm','node_modules','mneme-ai'):'/usr/local/lib/node_modules/mneme-ai';const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target)}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}catch(e){}try{const npmParent=w?path.join(home,'AppData','Roaming','npm','node_modules'):'/usr/local/lib/node_modules';if(fs.existsSync(npmParent)){for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true})}catch(e){}}}}}catch(e){}}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.62","@mneme-ai/core":"2.19.62","@mneme-ai/correlator":"2.19.62","@mneme-ai/embeddings":"2.19.62"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.62_1779178963354_0.47913966753521575","host":"s3://npm-registry-packages-npm-production"}},"2.19.63":{"name":"mneme-ai","version":"2.19.63","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.63","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c73b701f6b570062e60b542794d56031b365c25c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.63.tgz","fileCount":660,"integrity":"sha512-o1yj+AnWRwKsG/H4iAe0utrFHlVFSlb+POdVMBXgFl/dGbyjsFEj0jx8vSpEaI1+8VW5jmjIThkckmZE/Vp3xQ==","signatures":[{"sig":"MEYCIQC1RcPKLBj+wbQVqtyu3vaWULABsERCNctxSr7OMsvs2wIhAKJwimHXVWrqNk83/1g+IMc0SoNQlVhJ8MXqmclV2Qgi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3447135},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c5ad529a40342d1e2a601c4bd525916dbf74a0ed","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.63","@mneme-ai/core":"2.19.63","@mneme-ai/correlator":"2.19.63","@mneme-ai/embeddings":"2.19.63"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.63_1779181209657_0.28482473351820414","host":"s3://npm-registry-packages-npm-production"}},"2.19.64":{"name":"mneme-ai","version":"2.19.64","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.64","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5f2c46ae2bf3a72ee3153c94977f4ebcffe7ab15","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.64.tgz","fileCount":660,"integrity":"sha512-G+CWfudG5EBKKCJJgkinJ6xIJyc/DCq43t7nLBuEHyIFKsqguDO+SIahff1v/Tc597MFVf9Vm1F6KtdGDHExrQ==","signatures":[{"sig":"MEUCIQCcfnJu2Vp5vrJGsY6O8pltvJymJEDHGlK18M0kSnXCCQIgfKCstlMFrdTu0DyDlh9ktKVkVjuBu0ufJr9RO8GqSoo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3447135},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"97a12158f34785c9f1739a5524d5e4caf4d2fbcb","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.64","@mneme-ai/core":"2.19.64","@mneme-ai/correlator":"2.19.64","@mneme-ai/embeddings":"2.19.64"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.64_1779182597485_0.531746130565774","host":"s3://npm-registry-packages-npm-production"}},"2.19.65":{"name":"mneme-ai","version":"2.19.65","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.65","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8444dde91fcba23e8626d1e14f28afe79608c61b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.65.tgz","fileCount":660,"integrity":"sha512-xNLJO+d3R0Xnvn381d7w8Wh8rKFC4MLDILjTN1mHdo0vhFfswBkuq4QkGWCFX04LS8GJFfXV5jjCKAWUkmq+hg==","signatures":[{"sig":"MEYCIQCf/7fRJWHJ7C353WCHTgMEQ2AfjhN2uO6JIy1QegwWOAIhAISYO561Pzd5dLxdiVqfPHoZYjIqiYOH+7zEOnBloCn6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3450450},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5c32aae4eb68ebc6e95eda987c35ac92828a2750","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.65","@mneme-ai/core":"2.19.65","@mneme-ai/correlator":"2.19.65","@mneme-ai/embeddings":"2.19.65"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.65_1779185407295_0.5172301351108837","host":"s3://npm-registry-packages-npm-production"}},"2.19.66":{"name":"mneme-ai","version":"2.19.66","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.66","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9475a0a0afa319538968818faf89a7e7f7899c78","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.66.tgz","fileCount":660,"integrity":"sha512-mkCiERRjy/rkzzfBReED0aJ5VqTN/u3MK2zr4eNUkr+CKyBO8kntV8NT+p7ugdpcax8qbokwH1JSLtbTCfucMQ==","signatures":[{"sig":"MEUCIDiaXWI9O3rEuH6jOwNSwApQSi82DVUsSB1uOYc2voHVAiEAkvm/mrzbL7A3EO8txM8kTfsMyDvPyGrBzlu2HNq5lao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3450450},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c4324a28dcba3ee55eb6d1396bf50d61dee7fb38","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.66","@mneme-ai/core":"2.19.66","@mneme-ai/correlator":"2.19.66","@mneme-ai/embeddings":"2.19.66"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.66_1779187111132_0.7396669783390799","host":"s3://npm-registry-packages-npm-production"}},"2.19.67":{"name":"mneme-ai","version":"2.19.67","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.67","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d80b8ed8f779128101de52a46bd725277f3ecd0d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.67.tgz","fileCount":660,"integrity":"sha512-EFC4J20TZwS2TYEl8Rvujsz4MjViCFqLRykM6rHVDhqCnxW1CRGxnZ/gwa7RillQ6Q+t8aPNiVDX9vCCzUOXag==","signatures":[{"sig":"MEQCIHa5xca/YJxoSWNXaGMecWX3n8WUtQ26fJzkrEIAZ2YOAiBpFvFN0dkkzzXvFTZAJ01TEMgZ6N0yPoanY1cL3Y/3rQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3450450},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"15c0b6554559368b6b6e7b9cb84dbe80bb17c852","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.67","@mneme-ai/core":"2.19.67","@mneme-ai/correlator":"2.19.67","@mneme-ai/embeddings":"2.19.67"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.67_1779188278197_0.3412197198881788","host":"s3://npm-registry-packages-npm-production"}},"2.19.68":{"name":"mneme-ai","version":"2.19.68","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.68","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"54166b2c13bc80c1f19ff2448660e182f64b2772","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.68.tgz","fileCount":660,"integrity":"sha512-YYlmYLmDyCOB2TP1xUVQmYiEXtqznxnoiwIOLKswINdPPhkU1JzZ5A0h08SUi5p4yLAnqLURLDKrPi4KqDKZHg==","signatures":[{"sig":"MEYCIQC+TTvm9fq+1ll4md5u0TSIZJVJXoFs20ft7PxO6AQx0wIhALaWQ5QMtT/vXeF0HiwJz/BEBV066oOj/H0ASN2aizQ6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3450450},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c1af23633f5b2ca64af5e98757339ff9e583c44b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\""},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.68","@mneme-ai/core":"2.19.68","@mneme-ai/correlator":"2.19.68","@mneme-ai/embeddings":"2.19.68"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.68_1779188749700_0.7982260528655041","host":"s3://npm-registry-packages-npm-production"}},"2.19.69":{"name":"mneme-ai","version":"2.19.69","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.69","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ebb6b6bd7836f594e279c8cc0cee3c8e3d435ee6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.69.tgz","fileCount":661,"integrity":"sha512-m2tHCKYVeXEUVGN9MQsZC8udjd3Iqk190iwmwZq2ueHAJ9T2t5QCjOM5PFrMc1vzWPMv3QUtQ9HbHFysc1AzdA==","signatures":[{"sig":"MEUCIF/3dM3gsuHYcBKwvtxY38WAkNS9YN6pBE/rcygtJ0agAiEAgdaXQQ/lUOgEhBEZDLnNCWbKKm4xKeUjT2/PVkBzdVQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3455532},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"416f59f2be335b72b5bc8cb3c488a515539270b3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.69","@mneme-ai/core":"2.19.69","@mneme-ai/correlator":"2.19.69","@mneme-ai/embeddings":"2.19.69"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.69_1779189831059_0.2299257414919773","host":"s3://npm-registry-packages-npm-production"}},"2.19.69-lite":{"name":"mneme-ai","version":"2.19.69-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.69-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8ee04f2ffba06bec1de35e089442787201d98200","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.69-lite.tgz","fileCount":661,"integrity":"sha512-EvkrzrW6ttmZ29RiSAbwQwFeeR5thVMnlIz5mYzJ1LD+Qbgir/9Jp4WpIlZqOzJ04a7WShFPwAj8tNsIoI6hvQ==","signatures":[{"sig":"MEQCIHH8C1XA2umqvr1pcFX4wZyegPdPILdmmdj1CUc9CkRcAiBzQCVY14FeCmCZqDnlZgDFnXCx1bvsvYqJl15eLEBlWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3455618},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.69-lite","@mneme-ai/core":"2.19.69-lite","@mneme-ai/correlator":"2.19.69-lite","@mneme-ai/embeddings":"2.19.69-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.69-lite_1779189940913_0.20369984997539814","host":"s3://npm-registry-packages-npm-production"}},"2.19.70":{"name":"mneme-ai","version":"2.19.70","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.70","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"43f4fe6346682700098e89b42255e2c864e04b5d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.70.tgz","fileCount":661,"integrity":"sha512-C1TTGVQrrzO9DKIHPf+yI3bNVEatIIdyzV0Sol5x9TFrx6755nuUkKxwR2mdrW2ERlbhXvoLQtgbvG4yH/uKVg==","signatures":[{"sig":"MEUCIHSaom4FAnXQHHQ9acJHHyeN4Hh1h7YNP0mjP/YeGhYtAiEAw5+a3S5UvQ7DbEg9NxuLIXJW9uHJZkjZ6D9MYtCR0Cc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3459973},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"bc74562b6b950c5242d265a01ea2db7730a83a17","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.70","@mneme-ai/core":"2.19.70","@mneme-ai/correlator":"2.19.70","@mneme-ai/embeddings":"2.19.70"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.70_1779191657175_0.39057776900249697","host":"s3://npm-registry-packages-npm-production"}},"2.19.70-lite":{"name":"mneme-ai","version":"2.19.70-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.70-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"33052cb5aa355a6b65d79f79553fe269c162daec","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.70-lite.tgz","fileCount":661,"integrity":"sha512-DX3UuLfzOnoixvWdqWaNieW4QIWcqDE3sA00JYKs0ZZvGd92xuep/r0A95uxWmLRHB4d28C4leVmrZKFYTlD4w==","signatures":[{"sig":"MEYCIQDFs5QQQsyLubclUiXlfJreE6hFxSOf2kd7eU0tglNYKAIhAOdo/7L4qEojDP2S/8j/lzsJinz+MA05bRjXvcd3roU1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3460059},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.70-lite","@mneme-ai/core":"2.19.70-lite","@mneme-ai/correlator":"2.19.70-lite","@mneme-ai/embeddings":"2.19.70-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.70-lite_1779191762502_0.06575756803675037","host":"s3://npm-registry-packages-npm-production"}},"2.19.71":{"name":"mneme-ai","version":"2.19.71","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.71","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"251f9d80e5997787475d806fcc8896b6097e682f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.71.tgz","fileCount":661,"integrity":"sha512-wj8eUKdC4gswc115Bm/AHz8XtibCocpkY47M9HpGW6vIHRxNN2lRrt0PiAwk/SP9GWEtZtdLXqIddBO25hwwew==","signatures":[{"sig":"MEQCIDEfVPtM0pu5DvjBZvcb3tbK1LLR4K/CuAiS1Zdhob+qAiBkZP/7MTU7ko8qrT2DreKAuaMNAFLW5Z4FO4UYd84v2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3467990},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6fdb1ecc207c9f81672f09c5fbb55b36c1cc201b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.71","@mneme-ai/core":"2.19.71","@mneme-ai/correlator":"2.19.71","@mneme-ai/embeddings":"2.19.71"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.71_1779193095368_0.5714041953867979","host":"s3://npm-registry-packages-npm-production"}},"2.19.71-lite":{"name":"mneme-ai","version":"2.19.71-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.71-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ce5e07912d01b93d44dd71843594ad49601a3ff1","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.71-lite.tgz","fileCount":661,"integrity":"sha512-6ZABdbBPCWs2CQVQROh1V9mKshkWKfzbk9SEF+Vl1NUBYxcz4WJicY0Gb4a+c8OAx+Jgkuwyqt5k71Lc5HSYNw==","signatures":[{"sig":"MEUCIE4JemPJqllSacQlTQjmo1UXGr8pIUeIAzYKjM6LOsRWAiEAgOW8PUfSX+IjY7LjeJOPtQNTcZU5tt7EnPyvl9je4/w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3468076},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.71-lite","@mneme-ai/core":"2.19.71-lite","@mneme-ai/correlator":"2.19.71-lite","@mneme-ai/embeddings":"2.19.71-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.71-lite_1779193199204_0.22747229861379203","host":"s3://npm-registry-packages-npm-production"}},"2.19.72":{"name":"mneme-ai","version":"2.19.72","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.72","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8810ce855346e93c3c523a1d644d64e07ceacfb5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.72.tgz","fileCount":661,"integrity":"sha512-Kd+9CY3eIcNsa6O7LbR4sT6/tOFfv91L0F5Aw5PBk+r/cF24QrTaNWuCmVdtHbZ8jMkuQ0C9XTutXWHizXeNjA==","signatures":[{"sig":"MEQCIHE16UXWpUWN12nRpGVKnocRqeF3qMCF+J6+GaIyrLj1AiAp0Fqf5BqrmYpRGdKFn1ec4nt0ILNWDcchQnhk/OtnjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3467990},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"40e69714eb4120108e19d64e6147829506235265","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.72","@mneme-ai/core":"2.19.72","@mneme-ai/correlator":"2.19.72","@mneme-ai/embeddings":"2.19.72"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.72_1779194140965_0.6699103996257538","host":"s3://npm-registry-packages-npm-production"}},"2.19.72-lite":{"name":"mneme-ai","version":"2.19.72-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.72-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"240548dd46d30e64b37424a9903bbeb6f661c673","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.72-lite.tgz","fileCount":661,"integrity":"sha512-67BNIeBRmemLXmzNm7kUceV4CGva4yLqx+Y20DLT3sOpCPpGDTwZaEmKegNKteRPQ+pCQ8ox85uL6GqA2lkpZA==","signatures":[{"sig":"MEUCIQCoSO1ZhIS1s/xGC1+YBHlBT+gTsiDeeSx/uh3mB11oyQIgdw/x78PsuxPbFL1HLa+gl9pJg94RfAm12PYt1osjNFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3468076},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.72-lite","@mneme-ai/core":"2.19.72-lite","@mneme-ai/correlator":"2.19.72-lite","@mneme-ai/embeddings":"2.19.72-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.72-lite_1779194227049_0.6285996243134475","host":"s3://npm-registry-packages-npm-production"}},"2.19.73":{"name":"mneme-ai","version":"2.19.73","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.73","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"aa7972ae55ac0dc43cbfd304d1ea7221427f6cdf","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.73.tgz","fileCount":661,"integrity":"sha512-/Q2lW/abQ9rziyl3IZW3xZvwwRHbp3s2ycWFGLHcoZENJ1T48OQ47xK9B+S/EX502nyJ9/CzzwJUHTd1+p7oBw==","signatures":[{"sig":"MEUCIQCTfD9Hnup5Xv3RLT6Wkqm319sRmoLgBOAa39/xmQc9MwIgY8D862Gc3YxEStQQMT92wHDLjJllF2zegvZybuoP0zA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3467990},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"fe92cbf560b5cd0988770c0129df42b42802e0c5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.73","@mneme-ai/core":"2.19.73","@mneme-ai/correlator":"2.19.73","@mneme-ai/embeddings":"2.19.73"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.73_1779194818486_0.9274452861487861","host":"s3://npm-registry-packages-npm-production"}},"2.19.73-lite":{"name":"mneme-ai","version":"2.19.73-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.73-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d3751e6fdb8f36094fa73bace65c08f5ef272bc5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.73-lite.tgz","fileCount":661,"integrity":"sha512-Fz02ZIeyev3UlGXk/z52Tui0BoxdaQCa0xL5RhZ6ItLu07z0Bcj+cpL8sp3M6qq2OKWhpVXYDGTAzOu3piRC8Q==","signatures":[{"sig":"MEUCICC49MLhkWLar255DeqltdOZEmcQqBy163nGb5wBK5H3AiEAoCjyzL1jN5KT+SemEDCtwAeskwSghkX4cHnLgItCJlM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3468076},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.73-lite","@mneme-ai/core":"2.19.73-lite","@mneme-ai/correlator":"2.19.73-lite","@mneme-ai/embeddings":"2.19.73-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.73-lite_1779194920870_0.08488636320240861","host":"s3://npm-registry-packages-npm-production"}},"2.19.74":{"name":"mneme-ai","version":"2.19.74","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.74","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"66826d71e045884aeeda23bcf139da17ecfa17a5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.74.tgz","fileCount":661,"integrity":"sha512-giTHyNcCp44a21UQbx6ChY1vIbrm789pO2z9jzBjdUdmXLmmQY/1fNzhmnVBJ/uy/ZAiyx2Nl3UsNEefPtfXUA==","signatures":[{"sig":"MEUCIQDf+cxaRbtIP7LY4BviS6nchsgl9d+j7jiWzZ3ounp1LwIgLRLBUcG7NhAjmDKYDtfRalDxPdGsDgdvamdqPpMNHl8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3467990},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"45776a0aec11f684a591904fd2d04a3b4bea053e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.74","@mneme-ai/core":"2.19.74","@mneme-ai/correlator":"2.19.74","@mneme-ai/embeddings":"2.19.74"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.74_1779195620831_0.7110496911784951","host":"s3://npm-registry-packages-npm-production"}},"2.19.74-lite":{"name":"mneme-ai","version":"2.19.74-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.74-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"33a4e8ed2cbdf92ea754cc20d535880af9a239b4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.74-lite.tgz","fileCount":661,"integrity":"sha512-HOF3e3gHmWNVuq2/qeGYsSSU97OAJjT5cup6Ie+51W3d/EwDlyk0GhMoeUwyKS9lgR6lXsrdcBLp4/zIrm4ebg==","signatures":[{"sig":"MEQCIDhDGJA8rOg7elS/LnHsaCmO7XgfOtP6oDc20VIUtqkjAiBf/SiiwLajpV9M9I8uqZtzmD0t6x8DlQ03Pxep917c2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3468076},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.74-lite","@mneme-ai/core":"2.19.74-lite","@mneme-ai/correlator":"2.19.74-lite","@mneme-ai/embeddings":"2.19.74-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.74-lite_1779195719085_0.48569377533215885","host":"s3://npm-registry-packages-npm-production"}},"2.19.75":{"name":"mneme-ai","version":"2.19.75","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.75","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"93d4fc0b5bfcf62a7e0c6529329f8b37b47600d1","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.75.tgz","fileCount":665,"integrity":"sha512-OCjpBU640/CxWX+WDaORouRnpNR5n8bw/B8Q0O2/gp/ZERY1zzTAdh2wGRV/hcaL73DV1E4sTEjYnqJpaEQrjA==","signatures":[{"sig":"MEYCIQC7HLT/DlOzQzQdQQQyzyljrRB5aDk+WWqSkjTlEiJUQAIhAI4nRyuLh4pC133BbxWkA315mzLlV7uQSm6p1NwsAQp4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3490241},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"04a33581df7e9564334138f0ba26e551201d87ea","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.75","@mneme-ai/core":"2.19.75","@mneme-ai/correlator":"2.19.75","@mneme-ai/embeddings":"2.19.75"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.75_1779196601571_0.8502426784607686","host":"s3://npm-registry-packages-npm-production"}},"2.19.75-lite":{"name":"mneme-ai","version":"2.19.75-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.75-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1975ee9cd1173bf9bbb283edfe5378ff8f5fdb51","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.75-lite.tgz","fileCount":665,"integrity":"sha512-tr0FkJop7oY4xXtYNcva4X1c9UmIbwgUq/j3Sgv8Oe6HKjaA2/8HTbb8O1LOfbUHGFxZKmLsp66Lz8WIhcX+Uw==","signatures":[{"sig":"MEYCIQCeKkpupZwmvDDKewN79FfrrY2+OHQ0cSSdAE/uvqOCkgIhAPVhidXYF/Ups5bw/Z5lA5jDI1xBkczxIdL3iWbHAnn1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3490327},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.75-lite","@mneme-ai/core":"2.19.75-lite","@mneme-ai/correlator":"2.19.75-lite","@mneme-ai/embeddings":"2.19.75-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.75-lite_1779196695549_0.058246228669039724","host":"s3://npm-registry-packages-npm-production"}},"2.19.76":{"name":"mneme-ai","version":"2.19.76","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.76","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c99ddf6760fc026be31fa03077695c0c9907777f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.76.tgz","fileCount":677,"integrity":"sha512-md4p/vh7RHoc8RR/rfuAV94LCe9WXPvorxVt3qafoCA1yoAkEahMABfoEWack8SrmGmkRxeMPJHmYDzu2V+dCw==","signatures":[{"sig":"MEUCIAnslJ/3Dx3xlmXQP3LBK/j3Zh297jJYcJ+IdqlYn5obAiEAmbPBOSloj43yeLuIhx3+Sg7c4gdvlhvgh4ZygE7Uqqo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3588866},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5d202bce03e685713aa3de27f542d61265b3f4a2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.76","@mneme-ai/core":"2.19.76","@mneme-ai/correlator":"2.19.76","@mneme-ai/embeddings":"2.19.76"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.76_1779247742051_0.20380547349641986","host":"s3://npm-registry-packages-npm-production"}},"2.19.76-lite":{"name":"mneme-ai","version":"2.19.76-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.76-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"444f802d6b88d223de831435514538b995bef4a0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.76-lite.tgz","fileCount":677,"integrity":"sha512-JTYEuHlcGquLQbV5nMc3LGl4QMHcxT9m36X5197YSw97RDKpjwdGCoJNqfDXbOc5eNgPrmD9CORLA9HhFwLzTw==","signatures":[{"sig":"MEYCIQCJO+dMRlco9IqdXUMGEiP7yCzWs6xpOM3+/V9Zv1B3AgIhANSS2+cbFDNPJKmqX+J64hBVFK65vwymhycix1TfaSh7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3588952},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.76-lite","@mneme-ai/core":"2.19.76-lite","@mneme-ai/correlator":"2.19.76-lite","@mneme-ai/embeddings":"2.19.76-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.76-lite_1779247847000_0.17805944156881415","host":"s3://npm-registry-packages-npm-production"}},"2.19.77":{"name":"mneme-ai","version":"2.19.77","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.77","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4f61b41a7ea9278b05c9a62deea9b8b378e88bc7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.77.tgz","fileCount":677,"integrity":"sha512-eqGMa2CqVBWUqqTtRZGY+8Bwn1KCgzxVB0ZBdX09nb3M9cjgDkpbdEg5W38ZiTln9YmqbjOfYz7FTNetGHFwzQ==","signatures":[{"sig":"MEUCIB1dh64O0HsM9ImB4SNGZdkd2Fk7VCyhg7Askq8XfLVoAiEAz1rGGPXcaWLVdYYYAeZRs1aseD+PbWMoPOohzBzKRSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3589635},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5fd2405dcdc250027b517a8c1cb7024d60a98a4e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.77","@mneme-ai/core":"2.19.77","@mneme-ai/correlator":"2.19.77","@mneme-ai/embeddings":"2.19.77"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.77_1779248338111_0.3006238802948773","host":"s3://npm-registry-packages-npm-production"}},"2.19.77-lite":{"name":"mneme-ai","version":"2.19.77-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.77-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5bd1e0d282cca0b8426aa00f29248c42f9a10e20","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.77-lite.tgz","fileCount":677,"integrity":"sha512-fcbkpqh0u5TkBT8JX5LWElJftYVOu9ZLRWMxq+QuEbAgdJoas+C6BFXTKa8Xihv/iI9JePNEzcxhDGUDNZ05Aw==","signatures":[{"sig":"MEUCIQCVzK31H2gwPVKIe2KxP3CUE6BVlG1JTWLU+LwllHz0gAIgHB28mneKni75yx5PYyZF6dz/reYH3FvBX8TxGu7izc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3589721},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.77-lite","@mneme-ai/core":"2.19.77-lite","@mneme-ai/correlator":"2.19.77-lite","@mneme-ai/embeddings":"2.19.77-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.77-lite_1779248446154_0.12204741497236493","host":"s3://npm-registry-packages-npm-production"}},"2.19.78":{"name":"mneme-ai","version":"2.19.78","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.78","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"26fc2af2a3b2ac456b5311dab14fcb2c40070279","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.78.tgz","fileCount":677,"integrity":"sha512-OoT13FI92WYAxU1/EjBabs5WMLXSqfpZNNsjmQtNo91ESO6Y293bIDl1K8X5xhppkZEA21ivFn0r4XqI7OKbQg==","signatures":[{"sig":"MEYCIQDsz/1YbPu50e0rKb8EM0d7hZIdvLSIPiz6uv7PvTNhYwIhAJrmgnQ5Vob/h7Ap9zPwEqqUQXuO6ZApack2Jo2oEX2/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3589635},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1b0df4201c59dd76bfa1797031b31fe40fbfd3ab","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.78","@mneme-ai/core":"2.19.78","@mneme-ai/correlator":"2.19.78","@mneme-ai/embeddings":"2.19.78"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.78_1779249518820_0.2252531518071723","host":"s3://npm-registry-packages-npm-production"}},"2.19.78-lite":{"name":"mneme-ai","version":"2.19.78-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.78-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e211b4d9b56100fa07f99022fea61a86184811f9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.78-lite.tgz","fileCount":677,"integrity":"sha512-T+IScgVxYEATbxIXkTs0xNayV8XyBZaODbj8INzKNs+hk5k5WIgnIw55cNh5kgaFh1N+wm7J9siHOrmPCr92qg==","signatures":[{"sig":"MEUCIQC/yS6k9Stt/B8Gfnt2vEhnOAwEtLPhQym0druUQZ4zdgIgDgn4Q8ocER6UNKNL3uJKPKJAwc5ddROXQ3l0MGAuQ5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3589721},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.78-lite","@mneme-ai/core":"2.19.78-lite","@mneme-ai/correlator":"2.19.78-lite","@mneme-ai/embeddings":"2.19.78-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.78-lite_1779249617914_0.05792097679123476","host":"s3://npm-registry-packages-npm-production"}},"2.19.79":{"name":"mneme-ai","version":"2.19.79","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.79","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f9e37ae3c66849a5db96b376a9e24789983fe385","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.79.tgz","fileCount":677,"integrity":"sha512-8s4qspUEkWSQHLCOttKWo0iUmObkvqq7QWlY5gCiqcfgslSzR06P7RJDtC0mf3pZFXz4psDXI7BZ8lT22GDEHA==","signatures":[{"sig":"MEUCIQCjd6dy4I5i8Af5SG1SmLGidu3K7Zz1kLDkB/HeYv8KIwIgIIfxlk8K9iuYzHIEYUb8jQ8AqPSmnljjk1eu4RzQWjI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3589635},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6364594fc75539a022aae7a8b34c86f3fd916367","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.79","@mneme-ai/core":"2.19.79","@mneme-ai/correlator":"2.19.79","@mneme-ai/embeddings":"2.19.79"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.79_1779252848871_0.1353910937762337","host":"s3://npm-registry-packages-npm-production"}},"2.19.79-lite":{"name":"mneme-ai","version":"2.19.79-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.79-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"40a2cb8a6d57ad05e864c39bee273cf2cb89a81d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.79-lite.tgz","fileCount":677,"integrity":"sha512-aDbTffZy6ezSfj5GmGVPpOz+AYAuh5HQ6Z3Xx/GkZf6yuRhjgAVuisPBRQbHYGULfRod31sjJVCnRRaTuzCL2g==","signatures":[{"sig":"MEYCIQDVZTezP7iMAOPmI85vTcUSbLxXQ3J4tJIpcPX1K9/ehAIhALBCeKmooAhq2YT2gaZrAieTg3UYWtiCECKCsj6oz1vb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3589721},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.79-lite","@mneme-ai/core":"2.19.79-lite","@mneme-ai/correlator":"2.19.79-lite","@mneme-ai/embeddings":"2.19.79-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.79-lite_1779252955103_0.5943895977604328","host":"s3://npm-registry-packages-npm-production"}},"2.19.80":{"name":"mneme-ai","version":"2.19.80","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.80","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6aaf7779996fcbed1c9e6e347d2f79ec9f45f07a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.80.tgz","fileCount":685,"integrity":"sha512-yjKy1aoeYiEnR3fV5RRZafWkGhN7TXLjWFOswzbuOUqqRFImzZWIeZeoTMtDbYCC8346yVDtFmPaONjvnJ75NQ==","signatures":[{"sig":"MEQCIGFNRcdjXjNdpPCv5pVbymmf9eaPB/KSZJPFbutjPR0SAiAMEMKykLiFNgcuZTxdg1hHAnXKJTMDpVX0LNzbHLzXCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3611605},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0057a2c3d3f71e777caa5d65254f36499f964710","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.80","@mneme-ai/core":"2.19.80","@mneme-ai/correlator":"2.19.80","@mneme-ai/embeddings":"2.19.80"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.80_1779254972172_0.8959533520757048","host":"s3://npm-registry-packages-npm-production"}},"2.19.80-lite":{"name":"mneme-ai","version":"2.19.80-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.80-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0db4641be235ee0985dd63777217df5974854f64","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.80-lite.tgz","fileCount":685,"integrity":"sha512-EA11on7AIYDV5Rp1NKyHcEnm09MZqw/XLPpqzcNULWkHuDr5gLKJSuOlhtNccxNjMiqSerBgMkKG7esqOXTjjg==","signatures":[{"sig":"MEUCIQCozty0vp0+tX3lFuEPCjA6AmoyGa2rIaVnB2aOtVAy3AIgByv922oqykklvLBsytU7yi+WUokFkNIf4LApLUXJtzE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3611691},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.80-lite","@mneme-ai/core":"2.19.80-lite","@mneme-ai/correlator":"2.19.80-lite","@mneme-ai/embeddings":"2.19.80-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.80-lite_1779255069100_0.9543023224578622","host":"s3://npm-registry-packages-npm-production"}},"2.19.81":{"name":"mneme-ai","version":"2.19.81","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.81","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"308126442610882c9ec0ab2393cbd56ff8b67793","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.81.tgz","fileCount":685,"integrity":"sha512-RUDRdKdWNeJyt5dm0X0ugvSIyYhFeH0kMvb8bD3iKekRNoVLEPFQt4LGjpDO8qZMg0/f6uJgrPZ0L+WM/IVyfQ==","signatures":[{"sig":"MEUCIQDMu6qm5RWLDgGg6Af8Klr2jsLQAzNODsdd851eY9HNPgIgZEVqCffqXyppXBiyvr9I6WamEoCre8w/NpxxoCQFwAM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3611605},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"66e77561c37cff0364840aab2dd99c7b6080a224","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.81","@mneme-ai/core":"2.19.81","@mneme-ai/correlator":"2.19.81","@mneme-ai/embeddings":"2.19.81"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.81_1779255906943_0.25020929575137596","host":"s3://npm-registry-packages-npm-production"}},"2.19.81-lite":{"name":"mneme-ai","version":"2.19.81-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.81-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"908dd1b541dc6371f8766842115660d2c2c0b570","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.81-lite.tgz","fileCount":685,"integrity":"sha512-yYBNlianhuzN50VCJfAI6+ks+lULS7pTMRcqWivfXLXu2f3lxOviBHcZtd5y8uayL+FuGZ0pDmWjFZJRPMwAtA==","signatures":[{"sig":"MEUCIQCvGOWBxCqa+SD0XUWLkZn7hYIVP/o+LSHv76ZiO4ufAQIgYNSkVx6eTdrv2jNdl7UTQWAae3paVxEKKPOqSztyioc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3611691},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.81-lite","@mneme-ai/core":"2.19.81-lite","@mneme-ai/correlator":"2.19.81-lite","@mneme-ai/embeddings":"2.19.81-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.81-lite_1779256017600_0.9133917664027809","host":"s3://npm-registry-packages-npm-production"}},"2.19.82":{"name":"mneme-ai","version":"2.19.82","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.82","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3db1f292b85e36273f93ccd534176920d5987253","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.82.tgz","fileCount":685,"integrity":"sha512-QC478MJilzVxP1srrnYI7e5NbqagyMDvPwB8aEKxxCfsk51JxJs5c2QqCBeS0EWdbYdxMX8Bc4E9cPHzWk7fdQ==","signatures":[{"sig":"MEUCIQD6cMA0X0ZvpwzBVHSbJ95YDx4I0HKdALgfZwg+40SKvAIgNq2ggWD2AzYXEyuc1U3No79fQrfXfaGL82EjgsI50OM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3626328},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a11e0b195a9cc0fe6d63047e81c48babaf19d0a0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.82","@mneme-ai/core":"2.19.82","@mneme-ai/correlator":"2.19.82","@mneme-ai/embeddings":"2.19.82"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.82_1779257339404_0.3726279485267301","host":"s3://npm-registry-packages-npm-production"}},"2.19.82-lite":{"name":"mneme-ai","version":"2.19.82-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.82-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"84913e74d3fb645f8d63299e7547e64500353c74","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.82-lite.tgz","fileCount":685,"integrity":"sha512-7c/E/CfCXlcqV4sVOFuxg567Ejy3dtehFc98DTdrg66OLeq3km82RxeTgth2QuoF3ka6xVOshh5xt8H/rFWlCg==","signatures":[{"sig":"MEYCIQDO+/Fj7WfZROPr+UhIUtQlcfCKhHJ9Faw5+e4GrUjznAIhAKyXqp64Gz09pYL7Aa729UIr4LgXjGU5pF7Fz2HE6Y6f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3626414},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.82-lite","@mneme-ai/core":"2.19.82-lite","@mneme-ai/correlator":"2.19.82-lite","@mneme-ai/embeddings":"2.19.82-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.82-lite_1779257461499_0.03303761115209913","host":"s3://npm-registry-packages-npm-production"}},"2.19.83":{"name":"mneme-ai","version":"2.19.83","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.83","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2bbd25dc37e183eb5f61c812d6cd2a6985562ace","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.83.tgz","fileCount":685,"integrity":"sha512-2LAu6Lq1kTUuA4AymXQAlbLhVvhlM6CiS2fTLt4gA1aS9abz3a79BmVnlkXOKf5ll9NbvJ2ZdZPOP09QgNwD8w==","signatures":[{"sig":"MEUCIDx3eiB0Z66pESRZ9h1HavND1obxhdAEZRTo6mJZXMrzAiEAmtFsV7edfoMNVfr8dPPp6NSPy6Y/1uFUq56Xg0gi38g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3629734},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"52666eb1b266e2b75ced307c35ca742a8162450b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.83","@mneme-ai/core":"2.19.83","@mneme-ai/correlator":"2.19.83","@mneme-ai/embeddings":"2.19.83"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.83_1779258445564_0.2915333674905347","host":"s3://npm-registry-packages-npm-production"}},"2.19.83-lite":{"name":"mneme-ai","version":"2.19.83-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.83-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"608a4b61421a617d8889a054708afea98710cd8e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.83-lite.tgz","fileCount":685,"integrity":"sha512-AwbnpPj0YPnOW+kEvn8HFys0oYqlJ7Zfem5vA6i4Xi1ddk2hhzit+wXsA0NYR71dth8DpPdjp5woJGPvuCSdfQ==","signatures":[{"sig":"MEYCIQCV7UfQpH/aMiOL/7r2Nc/a/XA965v73vZwjjqVrjratAIhAPwUZp95uMbPo1ICGIghI3Nt45C1w6rMeym4LouNHdy2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3629820},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.83-lite","@mneme-ai/core":"2.19.83-lite","@mneme-ai/correlator":"2.19.83-lite","@mneme-ai/embeddings":"2.19.83-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.83-lite_1779258547452_0.47780236381477925","host":"s3://npm-registry-packages-npm-production"}},"2.19.84":{"name":"mneme-ai","version":"2.19.84","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.84","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"52f8d7e3784f392b6841bd4a7058a88aacc9f183","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.84.tgz","fileCount":689,"integrity":"sha512-iBvAJn70+QhjhiGCTKTJ7IaYEd4TSUhgX6v7dZTp4crlyoNPojedouIq47h1ZbImGwblKE80chr5Y0Mcf+OKZw==","signatures":[{"sig":"MEQCIG0gMo4YdRCP8W6OCsDDhEY3KL1e6GsxOwfSoL6Mo+ZyAiBEdZi/KBTf6NGgBaM3PORan+E45wyjVXFDMBry5Y7sHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3644523},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"cbcc1d0a44a488bea9e6fd958ad21e23e1653f2e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.84","@mneme-ai/core":"2.19.84","@mneme-ai/correlator":"2.19.84","@mneme-ai/embeddings":"2.19.84"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.84_1779259717227_0.7622443717329019","host":"s3://npm-registry-packages-npm-production"}},"2.19.84-lite":{"name":"mneme-ai","version":"2.19.84-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.84-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"098226fd84e8e6670b4e77963848533f5a2769e7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.84-lite.tgz","fileCount":689,"integrity":"sha512-OfF37qzT7f6uHI4UvnrF2tY9nP3EbbGF9NVsDp9bB7WPM+b0Wm50a0nZ1FOnJPsNk8WE01ylbtc6wAcuJL2e5A==","signatures":[{"sig":"MEUCIQDhdGKGzyALC7W32AH2hx8pvqNXJ5iWu/XQ4oJKmA4bhAIgEMa10Yu4fQjPT2Xc7kmaw5SmqrVxBFw0EU5k785PJQU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3644609},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.84-lite","@mneme-ai/core":"2.19.84-lite","@mneme-ai/correlator":"2.19.84-lite","@mneme-ai/embeddings":"2.19.84-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.84-lite_1779259828032_0.6388425405351583","host":"s3://npm-registry-packages-npm-production"}},"2.19.85":{"name":"mneme-ai","version":"2.19.85","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.85","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f44e1bb2867f41ec3cb5708804b8b86cdbb71f1d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.85.tgz","fileCount":689,"integrity":"sha512-1UHL1RLep/hx+ytvzprn56CINy62Q/8C8RWAju7TprEJvY6DZ6I2FADuxd/t5CwfXJRWEC7+/DV7iywg+ZmAPw==","signatures":[{"sig":"MEUCIQCAP86IttbVBZJNzYux6OyTPkDI+T/GbhmlVXvh1FR58wIgEv5tygZnKrxPNDfWn4/+/U6sCoyrXmIk399HzJUlExo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3664140},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"71207917e76bd2789c299a21bf4ea8311b962565","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.85","@mneme-ai/core":"2.19.85","@mneme-ai/correlator":"2.19.85","@mneme-ai/embeddings":"2.19.85"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.85_1779260860512_0.6798804738568398","host":"s3://npm-registry-packages-npm-production"}},"2.19.85-lite":{"name":"mneme-ai","version":"2.19.85-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.85-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"94af80dd1abd855eb4d083c9ed53fbe0275d12f4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.85-lite.tgz","fileCount":689,"integrity":"sha512-BqNwd1l/9eKQ4B3826GSJd/Uyx8O5My1gTXsnxEBQuc+eeBcI3Sbw3Qbyz6Bi8xdAAy0YXKVNZAsxmlTTv3Fag==","signatures":[{"sig":"MEYCIQC3tDOS1T+qcx1Zxt3NlDl2pp0EVG1LTGWEYfYnqDXpQAIhAMcwSLlfcO7+aA/cpn+z4KpSFdRv6xNTHXcMQdhmiTU/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3664226},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.85-lite","@mneme-ai/core":"2.19.85-lite","@mneme-ai/correlator":"2.19.85-lite","@mneme-ai/embeddings":"2.19.85-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.85-lite_1779260952774_0.547132361662914","host":"s3://npm-registry-packages-npm-production"}},"2.19.86":{"name":"mneme-ai","version":"2.19.86","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.86","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f27eacf7e195cdf36072535fdeca01e4b6afa9c4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.86.tgz","fileCount":693,"integrity":"sha512-jTLUr2vbhu0CfBCStctMqViEwP918kdbti6qtk+1t4s6FsbrWs477BT/aiT0uqPcVWnVAbmDSyO5qVRRYGMVNQ==","signatures":[{"sig":"MEQCIFL+ZC20+9i8J+28Q81+yGmNycTy2WzbR6iGOsTyx6yEAiB1OFBdGFBjNvdOp5i75+pLcf2KzdLaKICi9w4P4pPp1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3689074},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7f8d3a15efa15e935799c34a56799b7e52e35106","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.86","@mneme-ai/core":"2.19.86","@mneme-ai/correlator":"2.19.86","@mneme-ai/embeddings":"2.19.86"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.86_1779262632881_0.329905083918721","host":"s3://npm-registry-packages-npm-production"}},"2.19.86-lite":{"name":"mneme-ai","version":"2.19.86-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.86-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a1f5a2f0e03c7b3194fea44fcee6972226d6ec4e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.86-lite.tgz","fileCount":693,"integrity":"sha512-t7/E/q0KTp9dKr52k1MiVkvg1QiF8cvmt30EALScsFIjHUSEqpnJZgsSWdq1Xm80JzKzT8KQ47T+oU6/VVu+lQ==","signatures":[{"sig":"MEQCIEmA8oxkPFPD7a8ATT+bsSRUCcg+VqipHXwgmFuPjJWJAiB/I8o/Gsa09ibtgpD1qp2ry0cxuNefzf7ah33QuxfLow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3689160},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.86-lite","@mneme-ai/core":"2.19.86-lite","@mneme-ai/correlator":"2.19.86-lite","@mneme-ai/embeddings":"2.19.86-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.86-lite_1779262731889_0.11254997360178653","host":"s3://npm-registry-packages-npm-production"}},"2.19.87":{"name":"mneme-ai","version":"2.19.87","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.87","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"37266bbcb2ef452f862b7c04be3f236c328a0baa","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.87.tgz","fileCount":697,"integrity":"sha512-WtaFamqH/Dk+zhCQ7orn+iFVElMxaCvf8LSDjG/fSYkkiyk7FivYUuYFforKk/LJtg1uZW9I1xx/BR8MkLPYNg==","signatures":[{"sig":"MEYCIQDAoy0/KnGMjTr4LTOkJ5Ha5TZoFNF9op4WCCgCdr9AnQIhALpQ9lIJtyzGXFePmKLqUQg+U3Ic1/TU1DBWheuScQb3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3722488},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"14da2917dc4e861004f2f6e58f33c9d5189d3812","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.87","@mneme-ai/core":"2.19.87","@mneme-ai/correlator":"2.19.87","@mneme-ai/embeddings":"2.19.87"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.87_1779263691077_0.49002960208440616","host":"s3://npm-registry-packages-npm-production"}},"2.19.87-lite":{"name":"mneme-ai","version":"2.19.87-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.87-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"18dc9eacb62ca87f3b91d12166ac843fd4f8b0bf","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.87-lite.tgz","fileCount":697,"integrity":"sha512-R8w0IOZBJ7gdWBfxJHqzXsSxNtr73zDd7pT52elJXKEh7IIFPd3s3H7Et1Yjxz5+7f3MBV2vohMBxzZrHzQGvQ==","signatures":[{"sig":"MEUCIFyF2Gyv0t2EnPmuR7bJk5EVTl09CFLpBGww8qeEqpSfAiEAnJHPdh1mIocIuq6fuRgQpbvjgRg4qaeDkhUPHWPh/jc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3722574},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.87-lite","@mneme-ai/core":"2.19.87-lite","@mneme-ai/correlator":"2.19.87-lite","@mneme-ai/embeddings":"2.19.87-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.87-lite_1779263792719_0.03875035566354712","host":"s3://npm-registry-packages-npm-production"}},"2.19.88":{"name":"mneme-ai","version":"2.19.88","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.88","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f788207ca783f48c47409503fa17cf8f006df052","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.88.tgz","fileCount":701,"integrity":"sha512-BNlkd3SXZbam94aEhdEYREpQdkapZL/t2BGNUbliPlBDBT4OD+7FiMLAmhqVkRDyaTsStYcj0xu97GGbbDU9ew==","signatures":[{"sig":"MEUCIQCQxbKj4ZYfKqr+//pxgywN/UWNDmcqWJJa2LoM8fcLOwIgOeh2p+k1gUedOO9TYC6HKUeP/Ud9HQdckefaD6ziPKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3756046},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3e2567a8766ef31dc6aca53f76168255a51aaa13","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.88","@mneme-ai/core":"2.19.88","@mneme-ai/correlator":"2.19.88","@mneme-ai/embeddings":"2.19.88"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.88_1779265366808_0.9464550892563464","host":"s3://npm-registry-packages-npm-production"}},"2.19.88-lite":{"name":"mneme-ai","version":"2.19.88-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.88-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4569714ed1230d922e6b971599a8b98549eca5a5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.88-lite.tgz","fileCount":701,"integrity":"sha512-m7b8wOYQKAKRAbx19L8JipQJxLoWXYE5NyXIeMwy5XZUg+Ccjt0Tf8uPGjmkXM0mlpGXVep55JkrD6afeMOjYg==","signatures":[{"sig":"MEYCIQCV6ku2ELBgSv2KEWhOPDawmqhZw4rdkopCUtgOdWaQtgIhAINNw5u/xsvIBclJFJ42x8stdVWOnTMPDumNmy8ZctOX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3756132},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.88-lite","@mneme-ai/core":"2.19.88-lite","@mneme-ai/correlator":"2.19.88-lite","@mneme-ai/embeddings":"2.19.88-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.88-lite_1779265481452_0.4669972077324487","host":"s3://npm-registry-packages-npm-production"}},"2.19.89":{"name":"mneme-ai","version":"2.19.89","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.89","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f03f3f16928a8e17d0332f9bfca3d770961f2bb8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.89.tgz","fileCount":701,"integrity":"sha512-/DPQgxcNteqhezCYteorSRnkAmAD1EAtryQbUxf3FvEd3HA9QZ+T2kI5YkG53uzFWIRuEi+TlUs7rLPDy1JCXA==","signatures":[{"sig":"MEUCIEBjSOKXgB518/7JoIjMARrUWczBVyO4b1I5eWlL5YHiAiEA5uihBcEOvy18Fq3a92n+Nrh5OMZu6FFXzvHK7cibZ3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3763934},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"724c8dc66ad29428ded0574ed5259a1a631b7005","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.89","@mneme-ai/core":"2.19.89","@mneme-ai/correlator":"2.19.89","@mneme-ai/embeddings":"2.19.89"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.89_1779267117203_0.045359427674055874","host":"s3://npm-registry-packages-npm-production"}},"2.19.89-lite":{"name":"mneme-ai","version":"2.19.89-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.89-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e7d3cd3cf8184cc39c26afcc6a08a560331261f5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.89-lite.tgz","fileCount":701,"integrity":"sha512-GaWLuyPlYJIDa0jzi+UW1tzRuvr0+7G1B6asrdXC7kifRJfwNj6q7G6L1aObGJYDI7Z+HuEXn7ou3kCfdxd0MQ==","signatures":[{"sig":"MEUCIC11xW5n8DMqmz/xFcE1P34OkDeGn7qOFSdYFGzg+DQWAiEAxHFkAIY352cuWuSoJJAZA4OMIIgIcQN7yURSPVnMXC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3764020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.89-lite","@mneme-ai/core":"2.19.89-lite","@mneme-ai/correlator":"2.19.89-lite","@mneme-ai/embeddings":"2.19.89-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.89-lite_1779267207040_0.7595917947429158","host":"s3://npm-registry-packages-npm-production"}},"2.19.90":{"name":"mneme-ai","version":"2.19.90","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.90","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0a0fcde88822b9c2163210040bcd421b3ebbab75","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.90.tgz","fileCount":701,"integrity":"sha512-eD5aYR2AJc0hMJ6g8Qwg0ZeArxnoGY5feBe0n9ByE9INLaOglzeUSWwXswPu9Snv+N6i2pb15q5AKvTOGHN6HQ==","signatures":[{"sig":"MEUCIQCmII292FRcji8J9TGN60KeCsH/tc8YX4um2vLfXc6p2gIgE4Vbm55BTaGunrYsKrpJfh4VP4472H/J4DaWrawgHtY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3763934},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"20561702fac05ae43b3e9d4e8bb7bb4e38135477","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.90","@mneme-ai/core":"2.19.90","@mneme-ai/correlator":"2.19.90","@mneme-ai/embeddings":"2.19.90"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.90_1779267792984_0.6856656727863792","host":"s3://npm-registry-packages-npm-production"}},"2.19.90-lite":{"name":"mneme-ai","version":"2.19.90-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.90-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"45dfa6dba7fd2e2ee6b541c54812399c2168b792","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.90-lite.tgz","fileCount":701,"integrity":"sha512-8dj0SqVQa9aPp9cr6h78OM0h+1Pv5Vuul80U8tPWjDUqYD8Gxg6fPOW5dvoDLA6/6GIm2fEF6alxn+9Xt6cLWQ==","signatures":[{"sig":"MEUCIDWPij38On23l7fW4ll1CQK2txPux84ST46MfPUv03bhAiEA/NfNkuh1g0r3zLpL2nXE3VcvV2HL6U+xDx27/aKQBLY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3764020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.90-lite","@mneme-ai/core":"2.19.90-lite","@mneme-ai/correlator":"2.19.90-lite","@mneme-ai/embeddings":"2.19.90-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.90-lite_1779267877197_0.6333013679108124","host":"s3://npm-registry-packages-npm-production"}},"2.19.91":{"name":"mneme-ai","version":"2.19.91","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.91","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0e12ede77db5d0e3dacf0d878f509d4a672663f4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.91.tgz","fileCount":701,"integrity":"sha512-uNH5p2gi2helQTtr/CrdYChc0HwJ6vXl1yrfRhBTKheJOiXDv1IJP93E7RuwB9AIZ1A5DSDlERM1TMn0MfJhow==","signatures":[{"sig":"MEQCIDzW5GBCkA/sT9ZpYyBzXaKqM99jpiPVqHxyotdd48NxAiA7+3wqNJNUbDwhvc5aR851F9sPIBCQm3IIeUMlTW5gMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3763934},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0bb129ec056f9d501d5302e7639f8d8663eb5a12","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.91","@mneme-ai/core":"2.19.91","@mneme-ai/correlator":"2.19.91","@mneme-ai/embeddings":"2.19.91"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.91_1779268472235_0.49111851411332497","host":"s3://npm-registry-packages-npm-production"}},"2.19.91-lite":{"name":"mneme-ai","version":"2.19.91-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.91-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a5387e88a5fd0b5b6e9d1414a5f5fc1ea5856972","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.91-lite.tgz","fileCount":701,"integrity":"sha512-Pgi5ATqickz3GoOgYioQhhaB01hPvR+IbnUQxdCxDCbhWUHZw6dgLhZgzqjWggijwvFo6Si/l++3xSDUwBMbkg==","signatures":[{"sig":"MEQCIGBZU3QTqxZavsaq1EUSo0xpWDbp6WCRra0xsnjZgMaIAiBnOlGN241LD5bLCefhGcdj4MRS3xwxAXa47CLVOkoTsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3764020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.91-lite","@mneme-ai/core":"2.19.91-lite","@mneme-ai/correlator":"2.19.91-lite","@mneme-ai/embeddings":"2.19.91-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.91-lite_1779268570041_0.20929776979227577","host":"s3://npm-registry-packages-npm-production"}},"2.19.92":{"name":"mneme-ai","version":"2.19.92","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.92","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"93132ef22097e2792b8793ee2d60c1072a23de63","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.92.tgz","fileCount":701,"integrity":"sha512-OCdWzYppY9FvBzk1UINbu/FWNZLna+Zk10jD2n5KOhz936fCZv+BdLZZHw6h1PSpu+//Vq1TmFQ4Knn/NK20Mg==","signatures":[{"sig":"MEQCIHGLH55JYH7OgbE6tyPjB/3KMFtz1Twnh4kFKb06okeoAiAr5I/zZnrKXhNe3FVTGf0ug20uQj2sDbmw4n2O8ovnLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3763934},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"51e3fb929c85cfccdd82c043b6d29920a3545614","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.92","@mneme-ai/core":"2.19.92","@mneme-ai/correlator":"2.19.92","@mneme-ai/embeddings":"2.19.92"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.92_1779269781809_0.2271990291691277","host":"s3://npm-registry-packages-npm-production"}},"2.19.92-lite":{"name":"mneme-ai","version":"2.19.92-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.92-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1b2982eff475f4c2c7606b5521c144d2a7fb52d6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.92-lite.tgz","fileCount":701,"integrity":"sha512-B4A6p4ihrfAgX1mG7kaX+/U9wfy68dBX2AMKMAPE9mpqbzenu4AT8x1g/5urJgh8q2t6LS7IERUsqBKwH823kw==","signatures":[{"sig":"MEUCIDvdljvB3El1w9qkQxcqEKJOBo2Q3xhO12nr3GM650VSAiEA9qTQ8FAH5/wIyWL9SV5rNtPz5YtlT7j50H73lVIX3/Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3764020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.92-lite","@mneme-ai/core":"2.19.92-lite","@mneme-ai/correlator":"2.19.92-lite","@mneme-ai/embeddings":"2.19.92-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.92-lite_1779269878138_0.3825517200146915","host":"s3://npm-registry-packages-npm-production"}},"2.19.93":{"name":"mneme-ai","version":"2.19.93","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.93","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"143dab2b087c12dd0dacdef4ad2ac16a1db62166","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.93.tgz","fileCount":705,"integrity":"sha512-PobpcDx3EAjpx21iq3/RGVlYN6XjVQq8V0ZKizLke9IdL4/ViG3Ej2UdaQPAL+aaSpIe46ALwHW4nB+HqZWMFA==","signatures":[{"sig":"MEYCIQCVBYt92e0XycyAafule+5HnyNnF51rBYKnY1172vXCFwIhANu/r3n3V08F9yzSx71zv75rhcwpAqMk9l5+Pf1IPcOj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3780709},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"da43e10963c85fc59d9dcebf1dfcf2a46837858b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.93","@mneme-ai/core":"2.19.93","@mneme-ai/correlator":"2.19.93","@mneme-ai/embeddings":"2.19.93"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.93_1779336037955_0.5133056307099091","host":"s3://npm-registry-packages-npm-production"}},"2.19.93-lite":{"name":"mneme-ai","version":"2.19.93-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.93-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"615efd21a84c918d34a3aa3a32933ff2f34a57a8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.93-lite.tgz","fileCount":705,"integrity":"sha512-e1cN07C7lxyG7wafORpvv5zuulChWqbr0KlfJkofuNCQ2n9ooel0ygqfzMjNFjRYJWYwKx8pkX3DZc7LOaxrBw==","signatures":[{"sig":"MEYCIQDZK7mn6n5T5pgTHHQTPSSMWDJktJGicVs3V0JuTbNaYAIhALYnJizNibCuIPhpxul2SljWAJjVwd8EEGH3XkkOPgCM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3780795},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.93-lite","@mneme-ai/core":"2.19.93-lite","@mneme-ai/correlator":"2.19.93-lite","@mneme-ai/embeddings":"2.19.93-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.93-lite_1779336146979_0.37389136828197556","host":"s3://npm-registry-packages-npm-production"}},"2.19.94":{"name":"mneme-ai","version":"2.19.94","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.94","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"cd396687521e34730b043cac77c711e960a0432e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.94.tgz","fileCount":709,"integrity":"sha512-m032fH0IKlPOitOQDBPa3CvRb5P07N8KwrwN4X+GaZ20zn+Z4eSbLeGfzBcirUZQcpzQHFE4o9xMxjPYt5LPhQ==","signatures":[{"sig":"MEQCIDx82mMEpnMyAwWJ0tjjnkVeCq/KJgwjLtXCw1nS7UmpAiBqWhv111WNnaq41TC3/XPT5hvzMVO4/zcq0zsjACL/TQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3793259},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"94a57fbb519997805b5532141ec87a5f666b84b0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.94","@mneme-ai/core":"2.19.94","@mneme-ai/correlator":"2.19.94","@mneme-ai/embeddings":"2.19.94"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.94_1779340016580_0.37141503183272606","host":"s3://npm-registry-packages-npm-production"}},"2.19.94-lite":{"name":"mneme-ai","version":"2.19.94-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.94-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"fec1648d70bbbd80e9dd6a03f2e2e19be5edf2c2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.94-lite.tgz","fileCount":709,"integrity":"sha512-o5HhYhHqrPka+KtYLEc38UP/Szsa6H4+npYx6lQApezJ4BNr+W9J4A5LLHK6FtC/qfNRwnq1f3mEoqh1xlxcvw==","signatures":[{"sig":"MEQCIDggvCFG0PJ+4K4os0aCIFEybfIsToWx7TpodbSfc12PAiBOVKnR4Jl5UFa8cd5bWT1w7J9SY3xGR9yVoC6ab+AmJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3793345},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.94-lite","@mneme-ai/core":"2.19.94-lite","@mneme-ai/correlator":"2.19.94-lite","@mneme-ai/embeddings":"2.19.94-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.94-lite_1779340148288_0.5581257660424008","host":"s3://npm-registry-packages-npm-production"}},"2.19.95":{"name":"mneme-ai","version":"2.19.95","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.95","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"799ca7ae54b4913dc75d982b03a8d98c6cb87a8a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.95.tgz","fileCount":713,"integrity":"sha512-LUt3ejaqTqoOazQbdHEJrjmZY36UMIy+iqlxPT3z38hd69VSegwMJG2tw6vPOz/EswQgmc0DaxX7hdb95g7uWg==","signatures":[{"sig":"MEQCIE/W41mSLIkAN8GSOk03q8mPihpq/0ziA59uRHuim+RQAiBQH45Ay8Rce/onsduHl63p/RJxPU2meLwE90/MCMSRgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3804824},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"abab6669a368c30a281447f950688d3b0770de2b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.95","@mneme-ai/core":"2.19.95","@mneme-ai/correlator":"2.19.95","@mneme-ai/embeddings":"2.19.95"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.95_1779342224467_0.5990738998311782","host":"s3://npm-registry-packages-npm-production"}},"2.19.95-lite":{"name":"mneme-ai","version":"2.19.95-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.95-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c84c1a51c841c7d84c26684e7e79bc31801ff824","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.95-lite.tgz","fileCount":713,"integrity":"sha512-K4dq+5wROtnVdBpDSjhaRboBVLPI1HRnZfMhvfqads6yJYTYu4FadvYLqL1kDz6DnOgbGox94zifycvQsGqbvQ==","signatures":[{"sig":"MEQCIA4lUvF4mIAwUTCthLqSjx86zqLHXUDc+hxgacimbJwVAiAIYTCY+IMEb9vieaOqYpWIoXutKAgrjJto0qGvBJHyRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3804910},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.95-lite","@mneme-ai/core":"2.19.95-lite","@mneme-ai/correlator":"2.19.95-lite","@mneme-ai/embeddings":"2.19.95-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.95-lite_1779342333227_0.26047995110061395","host":"s3://npm-registry-packages-npm-production"}},"2.19.96":{"name":"mneme-ai","version":"2.19.96","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.96","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"532e4b315a28042894115f440e64ff1abd29c60d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.96.tgz","fileCount":713,"integrity":"sha512-KH3XZklUuj4mFHeCTeI6ZFfsjjAaKPPOrJKAb5hNWhM+Dz0uGeKUJj5542cBKocfNVWfoiSDB0jhKVObS8kdOw==","signatures":[{"sig":"MEUCIHFP2MV2KleR8akkoNrHFTvQBc9IsxKAbzsRqB32CW6wAiEArkc8bLRJp+knLbqXwnHGKdODe2TWNdCC45l+jezoHdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3806705},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6a18d4d55b95b059f53994fd5a231f9bff48d87c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.96","@mneme-ai/core":"2.19.96","@mneme-ai/correlator":"2.19.96","@mneme-ai/embeddings":"2.19.96"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.96_1779344709939_0.5055643510527699","host":"s3://npm-registry-packages-npm-production"}},"2.19.96-lite":{"name":"mneme-ai","version":"2.19.96-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.96-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3f11b9b627fa5d58d5f8b302ec550d9be6cf2dea","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.96-lite.tgz","fileCount":713,"integrity":"sha512-8L6QdPZxTnm+GALQG/ISzfpxaMzjyVWGIysfNnsNKdLfR5JrxOejwGmvoLe8eH+k2qhTXL09mLx271DC8xqmVQ==","signatures":[{"sig":"MEQCIA3LZeDoPMnX2Ol5vP8YS9VCPUqYXE4WJ06YIo6jiJZMAiAh2zVJzIaUiqgkN0uDhEId953OJADXis0avYVcyXYhxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3806791},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.96-lite","@mneme-ai/core":"2.19.96-lite","@mneme-ai/correlator":"2.19.96-lite","@mneme-ai/embeddings":"2.19.96-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.96-lite_1779344819102_0.27517259019413665","host":"s3://npm-registry-packages-npm-production"}},"2.19.97":{"name":"mneme-ai","version":"2.19.97","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.97","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ea5dc34dae4c33aec20a40cc919d1549deda62e4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.97.tgz","fileCount":713,"integrity":"sha512-NNvIq8fXPzTDYbLwIvFv/Bjw0qAM2PS1piK6q0yZgkc2yHQkP/vo1oF3eWHB0fOetc+Q+FRf0ed9mNDokgy07Q==","signatures":[{"sig":"MEUCIDp287o4hedZfTRaygcO9+QFB/TqQojrpR2VeVlQaCKaAiEAvNp/dV9BATSfS0mmWCac+kD6fIKZpohq/tLBWAEzCoc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3806705},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"97c2597ec677af6af9c1c2bbe17f24fca7a3e531","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.97","@mneme-ai/core":"2.19.97","@mneme-ai/correlator":"2.19.97","@mneme-ai/embeddings":"2.19.97"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.97_1779345739803_0.26504823956199886","host":"s3://npm-registry-packages-npm-production"}},"2.19.97-lite":{"name":"mneme-ai","version":"2.19.97-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.97-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"54654977f38f5a6e4002b0d7f351ab0c9954449f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.97-lite.tgz","fileCount":713,"integrity":"sha512-SqweogKz4LssP0CAE7gnGBC+2uU1XxzKhETfzXMCfpr47fR3beFxW97eZdEB0ScTR6cV6BynmcY7Fk1ofGixfg==","signatures":[{"sig":"MEUCICcERB++I2M733410lJ3I0ixmCnzFNRBSOzw3Ah5TD52AiEAwmSw/0AP3j7y9oKnvj3B0dNEPBe3DpJkfFsHIlyX5Lg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3806791},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.97-lite","@mneme-ai/core":"2.19.97-lite","@mneme-ai/correlator":"2.19.97-lite","@mneme-ai/embeddings":"2.19.97-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.97-lite_1779345840554_0.04624249040135253","host":"s3://npm-registry-packages-npm-production"}},"2.19.98":{"name":"mneme-ai","version":"2.19.98","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.98","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"31fa458123fcba2b264c8704c0058861aa1ebf8a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.98.tgz","fileCount":713,"integrity":"sha512-QPe0vQjldl7ok2vv9WT8J6tBTKkaxuwd363iMUbudwOv1iUJCth7n6aGAnnJDp+1wMDcVEZIjB0t1sGowy8a/g==","signatures":[{"sig":"MEYCIQCZ6DhjUm++0IOxw6XPWTZWA7O6JgrZh0m3zpqczAhR+QIhAK83oukJmPvJnPFU7XVJAZRN5sY+wFOKKuvJAu1Yf4w1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3811212},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ef96eba0701a0dd2c717911439e6a16194e4e81f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.98","@mneme-ai/core":"2.19.98","@mneme-ai/correlator":"2.19.98","@mneme-ai/embeddings":"2.19.98"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.98_1779349934491_0.8234092154537036","host":"s3://npm-registry-packages-npm-production"}},"2.19.98-lite":{"name":"mneme-ai","version":"2.19.98-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.98-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2097418f5cdce6ff69c855159f21179538de9925","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.98-lite.tgz","fileCount":713,"integrity":"sha512-Aw5io7rbm+WXeKgjL9SER0ekHNZ0ss9uvZSb5L89Tf7UYCfvnRgd+KtbBcvfHZGHpNlLgJEY0PGGYEdsYeV6+w==","signatures":[{"sig":"MEUCIHdsghHX8Lgpbh74sYxElHW3K4J0F2748K10JuPQSL7MAiEAlKjjBqXwRUh1ps6GWWgTmjT/ZsSPmxYLkf+ckiYCKWM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3811298},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.98-lite","@mneme-ai/core":"2.19.98-lite","@mneme-ai/correlator":"2.19.98-lite","@mneme-ai/embeddings":"2.19.98-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.98-lite_1779350044361_0.21577393192683214","host":"s3://npm-registry-packages-npm-production"}},"2.19.99":{"name":"mneme-ai","version":"2.19.99","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.99","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f6f7d85529bbd25315587d2c8bff5214d726180c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.99.tgz","fileCount":713,"integrity":"sha512-gqPDp9wNzq8acqSDAEL2Et78lHFBcEXUckhbHcqwiH/Hbf8pRcwN839QeTXndIRzLeBiT6kpreWEMkZG9cTj3w==","signatures":[{"sig":"MEUCIQCa6L/ybcz0DAIegmJ4kdgNjgmPovfsmnputGpW636b1QIgScV0DNBaDR0fl3BQ6BC/zTH6OgC0P91FDJdddQan2aI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3825200},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5b795a4c1aff01d75e4d5b5c350b59fdeb6ff6b7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.99","@mneme-ai/core":"2.19.99","@mneme-ai/correlator":"2.19.99","@mneme-ai/embeddings":"2.19.99"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.99_1779351528775_0.5946269151039436","host":"s3://npm-registry-packages-npm-production"}},"2.19.99-lite":{"name":"mneme-ai","version":"2.19.99-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.19.99-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6eb1ab99aae97879813d5fd917524da0ad73ba0e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.19.99-lite.tgz","fileCount":713,"integrity":"sha512-5qgADptpax9t8RIDVa5TELZAK50fo/elQfe/JxkhqgoRP/k5tgd8ruGHsSVQKDvbHlwc4VjMWIfrlOj8rUN6vg==","signatures":[{"sig":"MEQCIFpjUqRA/R3AsPXT5EOVXTb9E6Q0dYay2j0Bf/FeB4v2AiBGyaw10lCakO6S0JQG9su+8vMKS8mxHjMyI/qAtgyfrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3825286},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.19.99-lite","@mneme-ai/core":"2.19.99-lite","@mneme-ai/correlator":"2.19.99-lite","@mneme-ai/embeddings":"2.19.99-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.19.99-lite_1779351624026_0.6526382419007475","host":"s3://npm-registry-packages-npm-production"}},"2.20.0":{"name":"mneme-ai","version":"2.20.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.20.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"fb47d6d513f39611c9d1d50eeac840d54f6964f8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.20.0.tgz","fileCount":713,"integrity":"sha512-7pPuWCL+D72cg+gfF6AXan3uxBNjNqQ3QuIkNVVov8MmO7eiLuaF+aceHwt+Mj5YDTsVj4P6OsoN2Hm00MX1zw==","signatures":[{"sig":"MEYCIQCLXSAjWx6s0l8g7VqWfPcNCe9iVti3Gkx6aeQF8OyUZAIhAIodRuAIt5fQ06Ron9afb9gisEZfxSCYYukm2qALKW9/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3838913},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"502e8d9bea4171ce7b185c0f23f511f060fd1873","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.20.0","@mneme-ai/core":"2.20.0","@mneme-ai/correlator":"2.20.0","@mneme-ai/embeddings":"2.20.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.20.0_1779353617538_0.24268148367105646","host":"s3://npm-registry-packages-npm-production"}},"2.20.0-lite":{"name":"mneme-ai","version":"2.20.0-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.20.0-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"de93144fd13cbd4c296d93e41644ad2b9f545650","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.20.0-lite.tgz","fileCount":713,"integrity":"sha512-DPjeNKUs7BnDWbbnHxPHMMYHb4dYnrLB59dn5cNGlbhTTYUZKf/2WpWiYyjwykIEOySmp71igQIS3i2BnMbJag==","signatures":[{"sig":"MEYCIQCJ9amdyePZ//JAWpFeroEe8GN5tVPwMSdOnRxEeEp+owIhALR5vJc//jOa6f6KPQ5OF7uN+EIN5661aesk7GzdsGyM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3838999},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.20.0-lite","@mneme-ai/core":"2.20.0-lite","@mneme-ai/correlator":"2.20.0-lite","@mneme-ai/embeddings":"2.20.0-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.20.0-lite_1779353720138_0.6992498181815139","host":"s3://npm-registry-packages-npm-production"}},"2.20.1":{"name":"mneme-ai","version":"2.20.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.20.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f06a3d75bb7c06c4aaff3594d0904bdacf4cbaff","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.20.1.tgz","fileCount":713,"integrity":"sha512-ZUYVTKkgCUuRnNPhXMWRdXXhuCwNNG+Wl0QfY73kM6aSU5oGjLne/lLDZv8vSvZ1r/WE4QAlCpl7AvrOIpFacA==","signatures":[{"sig":"MEYCIQCSfDR9I0Na/htgynVShYD2Jf1iWUYn51hYGy2XF5sPHAIhAPTWCWIhKUQX2hO4bz8WuDpjnVkmDKGIg6HtMGHM171g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3838913},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"bc7738251f4c6f1984c751e78a351bb007e65463","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.20.1","@mneme-ai/core":"2.20.1","@mneme-ai/correlator":"2.20.1","@mneme-ai/embeddings":"2.20.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.20.1_1779354747056_0.9968359824518493","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-lite":{"name":"mneme-ai","version":"2.20.1-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.20.1-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b91699f420c455857f938ebc91f54054e595550c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.20.1-lite.tgz","fileCount":713,"integrity":"sha512-vdQ01opUYIywPhopjHsfLkX/qgtz5MBXNwkP4kwNLqBmzlYX9a9zNUCODNsxUpdZ+E2FpHaSJ7/5PIL8ouMLsQ==","signatures":[{"sig":"MEUCIAG7TXr1NrEswWpfdT/LUUH5PEzSp91fe0xNcf1hXc+dAiEA42uNEuiZwXBpU0jf6A3szgWfKF4wKH5xahBYduMgJ3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3838999},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.20.1-lite","@mneme-ai/core":"2.20.1-lite","@mneme-ai/correlator":"2.20.1-lite","@mneme-ai/embeddings":"2.20.1-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.20.1-lite_1779354844366_0.2376788699367447","host":"s3://npm-registry-packages-npm-production"}},"2.20.2":{"name":"mneme-ai","version":"2.20.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.20.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8b45120c72c8d22ec667d31be022fe93009aa114","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.20.2.tgz","fileCount":713,"integrity":"sha512-/s+yMV9njgBIBSgZoTdmLC4hcsz8H0qFMWvap27piOqPbidEL5QiDytb9RXaQbrbr/Ss5BAoi84ABIdafMjv+A==","signatures":[{"sig":"MEQCICvoXm1S5s4Jdw64gBiXCPDAcy/Hl95m3DuHSSY0P6LyAiBqQAIHKpstaQi+8p5IJB/s8eFXGEDoPzQ7QC4eLl33Pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3850686},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c53002e45ba3e3b23998f5b3463ed2b3f98054bc","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.20.2","@mneme-ai/core":"2.20.2","@mneme-ai/correlator":"2.20.2","@mneme-ai/embeddings":"2.20.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.20.2_1779356144694_0.17138950843065004","host":"s3://npm-registry-packages-npm-production"}},"2.20.2-lite":{"name":"mneme-ai","version":"2.20.2-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.20.2-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5d8d7387bd423587359a811fbe1207c11da91044","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.20.2-lite.tgz","fileCount":713,"integrity":"sha512-V1vCjZIkE+2B1oKGwsXNwDavQwobWroyBrG9npZfSX7fpTgEGluiGIKWUsxTlLNkp77EJafEmYZCBNCOWTYFWQ==","signatures":[{"sig":"MEYCIQCSY1otgZflegADHGn+v+2c/t2/Qp3prRVMqE3NMIZDDQIhAPUm94M7r2UbYBx2nCZ59/yqbrSZM/qk1NI7JdYBSsLE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3850772},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.20.2-lite","@mneme-ai/core":"2.20.2-lite","@mneme-ai/correlator":"2.20.2-lite","@mneme-ai/embeddings":"2.20.2-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.20.2-lite_1779356251453_0.11684588286143849","host":"s3://npm-registry-packages-npm-production"}},"2.21.0":{"name":"mneme-ai","version":"2.21.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3082d697ec4b4e001c71d16cf67ea128c1605deb","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.0.tgz","fileCount":713,"integrity":"sha512-vHXOawaRhlgsvUrtgDYGm21Bk10x3nvte5HPHWDf/Q4dx47obIMB7gpQ14ck5NZFvNhGmVD8scavgpy711J0og==","signatures":[{"sig":"MEQCIBFNqZTZUgPesKdGwUdQkPs5ssSqg/CrSuATsxoDy87TAiBqHELWsL7V5+Jm22DuPi0KikjglTgrgoArTApPxZBbFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3856229},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c27a41fdf8f7f7a37e8f095ba661ac8d02b7b66d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.0","@mneme-ai/core":"2.21.0","@mneme-ai/correlator":"2.21.0","@mneme-ai/embeddings":"2.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.0_1779356942305_0.2941697838478057","host":"s3://npm-registry-packages-npm-production"}},"2.21.0-lite":{"name":"mneme-ai","version":"2.21.0-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.0-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f9c6ae675c5a3168685ea8d742d0e01f99072999","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.0-lite.tgz","fileCount":713,"integrity":"sha512-6dYD4U9XQIVj3FjPx0foir1LflEr8YQvU4Z2wyVhRuK5vhf5+gm0/sz2u5xzid+dHwkmpbpsNNnFBYiWGe48NQ==","signatures":[{"sig":"MEYCIQD/ejYGZKYL39HqxpPGcMJDx77c39MLBF9MrtKzbJ1EggIhAOHMgxn6ftObkrcPoBh+caBTt5CDr8xoVIpQTLxIXogM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3856315},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.0-lite","@mneme-ai/core":"2.21.0-lite","@mneme-ai/correlator":"2.21.0-lite","@mneme-ai/embeddings":"2.21.0-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.0-lite_1779357044204_0.27873871037280273","host":"s3://npm-registry-packages-npm-production"}},"2.21.1":{"name":"mneme-ai","version":"2.21.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e31dc5df0c7d1f1060e764dab3e56cd138d92797","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.1.tgz","fileCount":713,"integrity":"sha512-XktbGUA1thRWocVY4Ml6Yx3AvLVd1jDmT39bPkbxA9pHSiP0MF6AmCTBzMz7cagZWgO0cI5NWaGlHHps/IoprQ==","signatures":[{"sig":"MEUCIQCgoVa+FM78B+dw9YBlZeSpZv2oB6QrV1SkoO83kYKv1wIgfVAmoG1cHcPLXyANPYOhRWz9sR/9IZcwXbL0X8pzVpM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3869846},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b946fa45f22154e3a5379f92c3d506e6afc35744","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.1","@mneme-ai/core":"2.21.1","@mneme-ai/correlator":"2.21.1","@mneme-ai/embeddings":"2.21.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.1_1779357502656_0.5362820693124564","host":"s3://npm-registry-packages-npm-production"}},"2.21.1-lite":{"name":"mneme-ai","version":"2.21.1-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.1-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e9e479d6d30367b154bf9cc407240721292d4e12","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.1-lite.tgz","fileCount":713,"integrity":"sha512-cW5Qfe7T4+lBw5BRPKc3u0BDC7vt6OV1ffPvTQuC46rcZuIOycAW6owlZ1H0xf7DWQ+EjBHDUQ1hpEXy8R9tJw==","signatures":[{"sig":"MEUCIQCYqh89T8eiZA8wRvmRk56t6ZHhxVZ6xUwi4NuTDCyqHgIgAkNz0NJLV/w/yE8hig+mfaOQ1wad3sMNWLxN30ZztEM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3869932},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.1-lite","@mneme-ai/core":"2.21.1-lite","@mneme-ai/correlator":"2.21.1-lite","@mneme-ai/embeddings":"2.21.1-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.1-lite_1779357611988_0.4340324075782891","host":"s3://npm-registry-packages-npm-production"}},"2.21.2":{"name":"mneme-ai","version":"2.21.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"22e86af80f3483482a09db5adbabb75809e7cb05","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.2.tgz","fileCount":713,"integrity":"sha512-R/b65oSlTccjlUYGh+nyS96VhYQzjFdV8aIcirE4rDim0l7eVrcfhJn5xbQ/vI+/6KSNvsSVY1RUIZVeVNO79Q==","signatures":[{"sig":"MEUCIGMBzsdPAP/IBF+4kOAYhgAMxFkeJMGeVmQovJIqITrZAiEAqgJ0arBcpYnghNjX+0ztAZzuumpKvMJrL5VokDVSyeQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3885070},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"57734f8c8d207bfd80c54e370a4e700c8b9474b8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.2","@mneme-ai/core":"2.21.2","@mneme-ai/correlator":"2.21.2","@mneme-ai/embeddings":"2.21.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.2_1779360753079_0.06537261202822542","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-lite":{"name":"mneme-ai","version":"2.21.2-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.2-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e8cdd87d27545653746e2c9eaeef2cfea2391393","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.2-lite.tgz","fileCount":713,"integrity":"sha512-GBXDBjGij3Y0dEeJX8Pei8b6umzWbyLzwGKROcG1iejfZse3oSjLyWp6/M4ywS5+DezvgGhpDWhSQzgAmwIlZA==","signatures":[{"sig":"MEQCIEB2y+H+2JHO7v/iLMfDETSA8Vgw3xRiawF3LYihPIjPAiAeoWoHvxLrlyaS95TYZgbGN/r86vdrOgL2Q8laBTFS0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3885156},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.2-lite","@mneme-ai/core":"2.21.2-lite","@mneme-ai/correlator":"2.21.2-lite","@mneme-ai/embeddings":"2.21.2-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.2-lite_1779360862014_0.17428161507774775","host":"s3://npm-registry-packages-npm-production"}},"2.21.3":{"name":"mneme-ai","version":"2.21.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"94e6f56618cf6fb33a72f20bf24c58487fc9091c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.3.tgz","fileCount":713,"integrity":"sha512-3N19DYBKukDocr3ZtVgZBZyTAwRDZsfkcl0r2iRnkSt4WDP1aMQWW/KYj/DpRlwbwxmotZ78YpWcbM7rJtaQfQ==","signatures":[{"sig":"MEQCIBvPHTkMVN4dQAT4LboczwWKD2oBjKKZ6Il3HYE2jpJZAiBdK+9+F0L2IIIvrPTR/0cfMDkwqLtJoDRPZ1AenYNx3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3896863},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3f855ba0c87df5fec24376e3eb9467ff63e0ae05","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.3","@mneme-ai/core":"2.21.3","@mneme-ai/correlator":"2.21.3","@mneme-ai/embeddings":"2.21.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.3_1779365216721_0.3121947109842591","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-lite":{"name":"mneme-ai","version":"2.21.3-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.3-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6fa16229d73a816479ae415e5cba20eb44dc1fae","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.3-lite.tgz","fileCount":713,"integrity":"sha512-ObNR+vcPC/TBUcoGaYZN9jwyGZRBl0FWKtHKyEittQeTk/8h4e5+QweiA0EGpoCs7ibDYSIvsSM0h1M32UKxQw==","signatures":[{"sig":"MEUCIQDexMcjM40XX8mw6nlyYsfG5IKn8BOPOvKlhqE7hLc1SwIgb/Q0mBzTUuKyDkCQABjAQSHZWx+apEgwVPJHXYapaBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3896949},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.3-lite","@mneme-ai/core":"2.21.3-lite","@mneme-ai/correlator":"2.21.3-lite","@mneme-ai/embeddings":"2.21.3-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.3-lite_1779365325483_0.6058000502194234","host":"s3://npm-registry-packages-npm-production"}},"2.21.4":{"name":"mneme-ai","version":"2.21.4","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.4","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"65975e238ee83ae2739c6661711016fc1510ff19","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.4.tgz","fileCount":713,"integrity":"sha512-4cqf6CK3MkeASe8ef7MIqyl+SUSlgxYG86hJf1QQt4boYbAoZ+yIahntLAJSTXp0vb7f+WFuLn7vvHCKZZquPw==","signatures":[{"sig":"MEQCIDGw7gyy+bSSr7GVKtGxPS3RORkXN0i9LDJwVrVWvRg5AiBty8zhjM2OM+cLL+CdOyjvi7MwiKnGguzywRrx/TCjDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3901393},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"83c3571533cd28ad1f33d87d8c1071ce4e70182e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.4","@mneme-ai/core":"2.21.4","@mneme-ai/correlator":"2.21.4","@mneme-ai/embeddings":"2.21.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.4_1779366787676_0.2580685997615422","host":"s3://npm-registry-packages-npm-production"}},"2.21.4-lite":{"name":"mneme-ai","version":"2.21.4-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.4-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3850cfbb6b539657ab2f0bd010caff3edf83a15c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.4-lite.tgz","fileCount":713,"integrity":"sha512-hOR5t0rfk8vR/5BuK1Y6KqMCbei3csaBBMIX/uIgcXiHOGyuTc2ubMZ9vWEYhx69LXg5+Tt2iSpxfh9c02OJVw==","signatures":[{"sig":"MEUCIHxHFXMlz31Tsloikcs8wv2+CAJVTpCKWgDu/+Dg0oyqAiEAo2oZafhOTdPireE/7qymPnd7Ox/fz4ZtHWCEUzd8K0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3901479},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.4-lite","@mneme-ai/core":"2.21.4-lite","@mneme-ai/correlator":"2.21.4-lite","@mneme-ai/embeddings":"2.21.4-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.4-lite_1779366889746_0.44182512187132916","host":"s3://npm-registry-packages-npm-production"}},"2.21.5":{"name":"mneme-ai","version":"2.21.5","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.5","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"29f34c977285ef522c1e2fd505b4154e7c8d9dda","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.5.tgz","fileCount":713,"integrity":"sha512-f2fKgBcg1aGLap4geW7pPOUwYmgORaz2sJFJbmka1YfvqQhji0RvzvWDLNnZzcUU7xubN3D/Wk7i+qvK2lQ90g==","signatures":[{"sig":"MEUCIQC1RaHB/FhlWPCMRsa06kWrT5KOriRNSc+d37vLeKTwEwIgGVpPTjFh4rwpAg3i6v3ZGvaaPXxtfJTEjxeiUboWJTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3910057},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b6fb50f66ec11ffd125d49cc995f4170c66230d7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.5","@mneme-ai/core":"2.21.5","@mneme-ai/correlator":"2.21.5","@mneme-ai/embeddings":"2.21.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.5_1779367938661_0.1184679176561465","host":"s3://npm-registry-packages-npm-production"}},"2.21.5-lite":{"name":"mneme-ai","version":"2.21.5-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.5-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7650621691978741691ef2da11945c0ee74770c1","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.5-lite.tgz","fileCount":713,"integrity":"sha512-1duE8HDapEhMoY0fo8s0/RBmeSrCo5WvUBektLQfMS5EUEpAxg0j0V2Z/dw4i6+394BlBLSLqoPsrE83eqdEpg==","signatures":[{"sig":"MEUCIQDizJKxS1yExbTrz1YyVpA5l18N3+RF1yQkrRYR4sICMAIgQtJHkKqTuZ5QLKAFlqt9RGUMTGRBPpm9S73vxlsqxrM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3910143},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.5-lite","@mneme-ai/core":"2.21.5-lite","@mneme-ai/correlator":"2.21.5-lite","@mneme-ai/embeddings":"2.21.5-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.5-lite_1779368031911_0.9362192731717403","host":"s3://npm-registry-packages-npm-production"}},"2.21.6":{"name":"mneme-ai","version":"2.21.6","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.6","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"749c46416ac428b0ecabefb6691d66d53b0aa89b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.6.tgz","fileCount":713,"integrity":"sha512-APTv/O13QVoB1BNbYCjGSSej1RyQ0yK/5XqG8gP7/umOCBOY0ShXAF+tkPaLM2MsXO0Mxag3g3duE7UKZtr1Dg==","signatures":[{"sig":"MEUCIEadWS2knBZhH7GRg0Yh+21XOf1Pfs9z4piXUBOraF02AiEA1sEmvQdjBF8ueOucH/KLs/mOHKgdNFqpaX7nFZSNRdw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3925050},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d4191ebbd054a8ae1cc0068f3c8701558e14983a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.6","@mneme-ai/core":"2.21.6","@mneme-ai/correlator":"2.21.6","@mneme-ai/embeddings":"2.21.6"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.6_1779369244100_0.18368699853084647","host":"s3://npm-registry-packages-npm-production"}},"2.21.6-lite":{"name":"mneme-ai","version":"2.21.6-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.6-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0102b8150e642619339c60437c94dbf1390e7a6e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.6-lite.tgz","fileCount":713,"integrity":"sha512-Lv38AOkDbSisrYpYERc0fwSVsycfi+Wo2zffgOrhzM4jOmYacEvGoKHaB4lDv8WNN9PBgm78HruRHxx8EVslKQ==","signatures":[{"sig":"MEYCIQCZJhmGxSFTWqaznwjVd9a0YJqDwANj5RwXfDqV2qScYAIhALjuagKPsY7zq0c1XLze75Km2dy+bf+MMdihTeknXlJF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3925136},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.6-lite","@mneme-ai/core":"2.21.6-lite","@mneme-ai/correlator":"2.21.6-lite","@mneme-ai/embeddings":"2.21.6-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.6-lite_1779369350345_0.30758026252248793","host":"s3://npm-registry-packages-npm-production"}},"2.21.7":{"name":"mneme-ai","version":"2.21.7","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.7","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e4866feac4b1a4f46d451e033196e78f83db2104","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.7.tgz","fileCount":713,"integrity":"sha512-ky25Lcq76u0ezIoIpE7zjVgRwcpvs/v0f/uFD7KhgmdIgrb/rqBVk7Bd1E9D5BhUNsBoKP28up5LJ80g7NrIRg==","signatures":[{"sig":"MEUCIQCCGsy1SBKeJ5UlMeF92FCGdup5yl9Yoo212oo4xF/DqQIgS/fSSGHA6qmftp/EI5Rionw8xGJep1WXSz6Ugk0GTRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3928726},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"90a936c6a9ff29c64349c7bac2ff2d63533512f8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.7","@mneme-ai/core":"2.21.7","@mneme-ai/correlator":"2.21.7","@mneme-ai/embeddings":"2.21.7"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.7_1779370680875_0.4787647789970706","host":"s3://npm-registry-packages-npm-production"}},"2.21.7-lite":{"name":"mneme-ai","version":"2.21.7-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.7-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"99675f9ae43486d474091469b38646823a14855f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.7-lite.tgz","fileCount":713,"integrity":"sha512-3tIXSKah90zaIdLuz08np5ahpwnHc014AWzBYp8L7AkCDsTPToqXedz0NctvgN5IW/i9/qAOX9/H125NO/fAgA==","signatures":[{"sig":"MEUCIQCgtrfa+eTWTQ63/XQUAIwuBjlZlgk+bg6/Z5nEQfkQMgIgOQk5qLkRdVivmNJnenu5ygNvwXC4RVjdYSIUFUsycn8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3928812},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.7-lite","@mneme-ai/core":"2.21.7-lite","@mneme-ai/correlator":"2.21.7-lite","@mneme-ai/embeddings":"2.21.7-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.7-lite_1779370778247_0.4211373881911433","host":"s3://npm-registry-packages-npm-production"}},"2.21.8":{"name":"mneme-ai","version":"2.21.8","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.8","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"191a1cf913f49cbb80c712da0801f85b3b576b37","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.8.tgz","fileCount":717,"integrity":"sha512-F7CzNRBAZwnf0vvmYuttwLGzCoDfdTCwG+4uoIZ3ClIhGOMFRTA6MPAdB0H3woGyX4yuQcyn7XTzJW5GGyu18Q==","signatures":[{"sig":"MEYCIQCydpZUiomyqHeQN+TlyE8rQo1VmZ+S2XIO2A0ZQKDbSwIhALKDOyA1wagtLciETk2FXJIB+bS6CpIWvuzNo37z8lko","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3942963},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"90298997cc07af6604175253410e783a0200f03b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.8","@mneme-ai/core":"2.21.8","@mneme-ai/correlator":"2.21.8","@mneme-ai/embeddings":"2.21.8"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.8_1779372608016_0.3181443344069701","host":"s3://npm-registry-packages-npm-production"}},"2.21.8-lite":{"name":"mneme-ai","version":"2.21.8-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.21.8-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e4b46649f1c74f17038762aa66d4897179d9590c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.21.8-lite.tgz","fileCount":717,"integrity":"sha512-w5v7PW0+q9HOwuzCSiN6021gJFYr1RRE6C34V41zBawOKz6VMW6U1X0MHzeuTq2WtyLLW+iZ3svSMmuQxy/uBw==","signatures":[{"sig":"MEUCIQCioNIFkjhFT+oC/waamVW5ucsRtZJxQFPsR47h02FJWQIgTuVu89Ly9qSmZqOdhKx+Ub3YWyxDL9yh8QDxJogOQi8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3943049},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.21.8-lite","@mneme-ai/core":"2.21.8-lite","@mneme-ai/correlator":"2.21.8-lite","@mneme-ai/embeddings":"2.21.8-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.21.8-lite_1779372697721_0.9484184096716481","host":"s3://npm-registry-packages-npm-production"}},"2.22.0":{"name":"mneme-ai","version":"2.22.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.22.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"dbc4f5d1830855b9946761d60c9417878ae04d91","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.22.0.tgz","fileCount":717,"integrity":"sha512-2fQmInS1TO7FmP4z8TOiVgJWE/o966xFZhipnJ8w6nAMn5MBkpiMFiMDYD57JpE+vfzJHDku3Jh4PN/oF5vM7w==","signatures":[{"sig":"MEYCIQCBiJzvGiFrlgjhmE6Qu33R/CE3xl8wYDYUcQILNCdkygIhAOskuBbX8T6c0ZmrNA2ZvwO8DMNhdEXNkmFvvNHa3LFT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3950992},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1c70d06c4eb341ec63604fbe6c8cf7d82e8948a1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.22.0","@mneme-ai/core":"2.22.0","@mneme-ai/correlator":"2.22.0","@mneme-ai/embeddings":"2.22.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.22.0_1779374873755_0.04003682486017568","host":"s3://npm-registry-packages-npm-production"}},"2.22.0-lite":{"name":"mneme-ai","version":"2.22.0-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.22.0-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4f071fc7f7e21b4f1f8778fb79f8a924cdb084fa","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.22.0-lite.tgz","fileCount":717,"integrity":"sha512-N2lFcY69RkzQDK0WqZk4F8Jz+OksSDvWsDyNgZ09tKQJjIoJJqlKA4JZohJuzNOwZKGqC3UaNxjksk9TfTn54g==","signatures":[{"sig":"MEQCIFPX8JasIumoxMxofDc7zpfQONqF4HyXUB+P2wVztD65AiAl3haMkk9gbWl7rhjZulFRm6uad3NoZeqogewp5yGKmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3951078},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.22.0-lite","@mneme-ai/core":"2.22.0-lite","@mneme-ai/correlator":"2.22.0-lite","@mneme-ai/embeddings":"2.22.0-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.22.0-lite_1779374975407_0.3081803485324359","host":"s3://npm-registry-packages-npm-production"}},"2.22.1":{"name":"mneme-ai","version":"2.22.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.22.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e6085564f01100be2eb8858d0f291c480a9f5ded","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.22.1.tgz","fileCount":717,"integrity":"sha512-fqanc1pCLU/yF6+2BHBc3C4d3e8ACv4w1W0dRx+nhS3gr1NEjo/Al/isjnkGHHPoUy4gufxkTojoeSlRudGxEQ==","signatures":[{"sig":"MEYCIQCwD5LZZe49sKeKIspJoknQSRn9Et0qQTd/DvXygSUHIQIhALUDlNqJNzcrDKWPfc1plSmFImTRm3NrLtDM0G0ulm/f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3952825},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"530bd397b1aa2aee094f36f75c64f35ae0525156","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.22.1","@mneme-ai/core":"2.22.1","@mneme-ai/correlator":"2.22.1","@mneme-ai/embeddings":"2.22.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.22.1_1779376107279_0.08766489693890178","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-lite":{"name":"mneme-ai","version":"2.22.1-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.22.1-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c30ebdcf9c62628d58e71d089b93b9fd1a1d1ea6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.22.1-lite.tgz","fileCount":717,"integrity":"sha512-pGCYoxi7rKFTVWsvHRpFStUsjoDpjQ7wKww5tDrdVBoT5qAGvLLSLLStSRsvZ5uLqOEwxSLbGh+PZg3PnMO3MA==","signatures":[{"sig":"MEUCIHGwjXJ8sCmctW1PLw91pH+BjH1fTooAjq5kHCDHrCyKAiEA7PLdMDmOFlquxN5rB1hbtNXFyH48JXWXx7VCWlOiph0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3952911},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.22.1-lite","@mneme-ai/core":"2.22.1-lite","@mneme-ai/correlator":"2.22.1-lite","@mneme-ai/embeddings":"2.22.1-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.22.1-lite_1779376211633_0.3678907763703485","host":"s3://npm-registry-packages-npm-production"}},"2.22.2":{"name":"mneme-ai","version":"2.22.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.22.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"04552ba137e1594a6bf9c21cf98a3208ccf60fd7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.22.2.tgz","fileCount":717,"integrity":"sha512-nYT61vvY6FqI1vB5mE0teOwzS4/wbgMglg6sous8JZ/GG3ehnEHm6RnUOzZo0d/MMqaxyr2+XeeDiwy38VuZwg==","signatures":[{"sig":"MEYCIQDnBNYOOuwVOvKJLryI9X6ZMXpGPLbfxo+bi4c8DEMNOgIhAPrU6BD3YGE/Z2irA+ijs36hWTr1DBPR0K9l/cNVHWd1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3964804},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f1eb6071f5a5c3713c24fa41caefa852dde98280","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.22.2","@mneme-ai/core":"2.22.2","@mneme-ai/correlator":"2.22.2","@mneme-ai/embeddings":"2.22.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.22.2_1779377645282_0.6508717000712212","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-lite":{"name":"mneme-ai","version":"2.22.2-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.22.2-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ebaefe2a240ac39b4912dbd67b0fd1ce9977dcea","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.22.2-lite.tgz","fileCount":717,"integrity":"sha512-ZxcZjvoNC5AS7B7LTWvPcgMQluJUSTYyuTm5lW88Yz8JnwApwvZuQXBXFBnHueQrvgItjasgMD1qIH61qO9Dkw==","signatures":[{"sig":"MEYCIQDHQ/gIUt83EfeYZB6a3Yjt1ady4J2ZM958XRgHYdUusgIhANEXMxMTYlp3BWcymRLnDERgdyMUy+W4re7yw9awO2EE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3964890},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.22.2-lite","@mneme-ai/core":"2.22.2-lite","@mneme-ai/correlator":"2.22.2-lite","@mneme-ai/embeddings":"2.22.2-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.22.2-lite_1779377753870_0.6034670319193405","host":"s3://npm-registry-packages-npm-production"}},"2.22.3":{"name":"mneme-ai","version":"2.22.3","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.22.3","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5e8bb3746ad29b78104964df5beb65a6bd89af8e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.22.3.tgz","fileCount":717,"integrity":"sha512-hBNdUIO4LKiaApz9ymCfZ1s2ABOuUyIgM26ZK4znh8DZb2q7J1sLjq/GotdcS9qEo8qTnpD/FysFkbHsJxniXQ==","signatures":[{"sig":"MEYCIQDSK3AKPGGZa7P6NthMNePHK5kaJe0zq3KVi224PLK/DgIhAK9nJs39ZHAvFwRtqCh5QyXuTOEez7DmgiZVSKrNL82N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3967504},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d80d82aa34c2a86e78c290e9fc451599c50bc4a2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.22.3","@mneme-ai/core":"2.22.3","@mneme-ai/correlator":"2.22.3","@mneme-ai/embeddings":"2.22.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.22.3_1779379429176_0.9175232623601315","host":"s3://npm-registry-packages-npm-production"}},"2.22.3-lite":{"name":"mneme-ai","version":"2.22.3-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.22.3-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c22f551bdbe3c3d0f30fe61e67b242ba1351f0f7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.22.3-lite.tgz","fileCount":717,"integrity":"sha512-RfdJuyzS7or0UdBOpnqBoP3ddXKi5CunpIuwfFYDWMrVM9w3XGqybSNkxcBBgTiNrtI+UNgwJfJ3Y+znap4DQg==","signatures":[{"sig":"MEYCIQCJbcsMu+hgdi6O5gpj79SzJdCLUuVh4/4xhOEnf8ijGAIhAICcRDVQYr96/t2RxyN67nau17y9Ou5sqYD9Yfc1GKnL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3967590},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.22.3-lite","@mneme-ai/core":"2.22.3-lite","@mneme-ai/correlator":"2.22.3-lite","@mneme-ai/embeddings":"2.22.3-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.22.3-lite_1779379528287_0.9945217077097424","host":"s3://npm-registry-packages-npm-production"}},"2.23.0":{"name":"mneme-ai","version":"2.23.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.23.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"fa9dad50be85ea6a8b702fb82fcaab8efcb3b247","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.23.0.tgz","fileCount":717,"integrity":"sha512-MdozETEVO4tiira7vrbYxcgW/+4/lSnaY/Qi+p3azdPZ1FC3DOc3MN1SYv9ugvYqT493k0Yox9E0ItPUCbkAJg==","signatures":[{"sig":"MEUCIDXwzPCdJfrYe2h1jfB9cca6MWHfRA1xXhhuBMprceWrAiEAvBUANQxB7wylV3QNuOwEgf/bxSRPNT6S4Yazfegj9M8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3975206},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3c3335346573d8abdd79be811064a09113bd06fc","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.23.0","@mneme-ai/core":"2.23.0","@mneme-ai/correlator":"2.23.0","@mneme-ai/embeddings":"2.23.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.23.0_1779420025366_0.900611759823944","host":"s3://npm-registry-packages-npm-production"}},"2.23.0-lite":{"name":"mneme-ai","version":"2.23.0-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.23.0-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"de402ee4f7b00028ceea8dbf067fa5894abb7d4a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.23.0-lite.tgz","fileCount":717,"integrity":"sha512-ik4JLd/WppDGuHsc+hnc9Wt6rgNAlNYMKDi+E2QH3CdR/2WHy4PZ6ezpNUg/9bb9vc+Dg1a9gTVdxM7qvt1OZA==","signatures":[{"sig":"MEUCIQDK0r7n2R4iGyimASc+WEHmi6SAE8stK1cQyvictuaBtwIgWf/Px6FaN5/PsAkKR7G+SDu1tPNZ7R6whYPUDD7CXsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3975292},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.23.0-lite","@mneme-ai/core":"2.23.0-lite","@mneme-ai/correlator":"2.23.0-lite","@mneme-ai/embeddings":"2.23.0-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.23.0-lite_1779420134760_0.7744808056383354","host":"s3://npm-registry-packages-npm-production"}},"2.23.1":{"name":"mneme-ai","version":"2.23.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.23.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b85d9a9dea070805a8259be651ae0a6bb867e786","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.23.1.tgz","fileCount":717,"integrity":"sha512-4lVW+AhMj+e+yISrGiyK5CDT7am+/83iP050UajxHS882/Ehi0V3TJ+k/y3byq0z13rhJ96HSYtnpl06OREojA==","signatures":[{"sig":"MEUCIQCquSPUOslwaZoqH5fy38gTGpqG16W1Pva4bMShkX230AIgBjBbJ8/qbPd1AO11wDCaXBHaWbTciRjX34KOoDdur38=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3988585},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d0fbdf68438faca3bed9bb379a7cfcfb80ed5773","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.23.1","@mneme-ai/core":"2.23.1","@mneme-ai/correlator":"2.23.1","@mneme-ai/embeddings":"2.23.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.23.1_1779421628335_0.5109042653756279","host":"s3://npm-registry-packages-npm-production"}},"2.23.1-lite":{"name":"mneme-ai","version":"2.23.1-lite","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.23.1-lite","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"082d4aa08db1ffdf9f61585fcba08b24cf9c6b3d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.23.1-lite.tgz","fileCount":717,"integrity":"sha512-jbHfjOkELoN7xJIr/iNd+FEpbivV4TJ5aXotKetL5lqtbSUuU6aJ8bWxA4gzbNxdkJOQbfJtedKEEdwpvLxRww==","signatures":[{"sig":"MEUCIBCvHqa6TGUOI0RpFmHeQZ93tcXvNQwL5/lTaCgE4wDnAiEA27fI5XZjqS6d4sogvot1sO5QRZE2LXbyJMEF/kWVND8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3988671},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS. — LITE variant (no bundled WASM embedder, no native deps).","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.23.1-lite","@mneme-ai/core":"2.23.1-lite","@mneme-ai/correlator":"2.23.1-lite","@mneme-ai/embeddings":"2.23.1-lite"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.23.1-lite_1779421723979_0.6500881707274553","host":"s3://npm-registry-packages-npm-production"}},"2.23.2":{"name":"mneme-ai","version":"2.23.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.23.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"de851671c2772f3c28d01d4252c7d9f55e16341a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.23.2.tgz","fileCount":717,"integrity":"sha512-LLXBYaoPTDOYLPR1d+5lVI0g+Sc0gr0lj204Y5amcM/QWNQG8uakBR8WILkUT2kg25Rc3Bv+efF8JHUKW5xD8g==","signatures":[{"sig":"MEYCIQCvvOoS2AVJR7SWqAafDcj1LDgsnv50qqhehx5/xUCtUwIhAPYuH4tSsbgfbbmQmsfw7Ob8Uav+vKJYPqUL+m/zPPZp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3994325},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a57df576f183dcb4d571cd6d2880c4567b3bfc4c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.23.2","@mneme-ai/core":"2.23.2","@mneme-ai/correlator":"2.23.2","@mneme-ai/embeddings":"2.23.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.23.2_1779429955470_0.10377869138296236","host":"s3://npm-registry-packages-npm-production"}},"2.24.0":{"name":"mneme-ai","version":"2.24.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.24.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"14b48093e7c8a5d0e640dfe68d936128237d43ae","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.24.0.tgz","fileCount":717,"integrity":"sha512-WHydo/jnhFoVl+pJZ1a4yIO3KqaqQZ4r8Og8lxmTbXVlqAWrblULVY42PEkqiZnRTHGHzR0pk8dy2c3iqkdTIg==","signatures":[{"sig":"MEQCIFdPIPMZsxvmURZupqyaW0O4T/DUOzQmOU4B5Ha/tHhPAiBRHQxJhZLeaC5tFcMGXEDKAYFoLkwQ6+XMWexcHilA5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3994325},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"898100a8db4530e0027c999369182a36c6773452","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.24.0","@mneme-ai/core":"2.24.0","@mneme-ai/correlator":"2.24.0","@mneme-ai/embeddings":"2.24.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.24.0_1779432814758_0.918034402543825","host":"s3://npm-registry-packages-npm-production"}},"2.25.0":{"name":"mneme-ai","version":"2.25.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.25.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"402b08e08138aff004135407409add0aa992979e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.25.0.tgz","fileCount":717,"integrity":"sha512-z52c+sHJqnx0cfm7YIPEUpTNON0gK2Gmy6YJhL8ki1Ugf6ISzaT+JKmBQCg1ZSQTMFt2aWBV1oRnRwMtRBLVgQ==","signatures":[{"sig":"MEUCIF4mdL+b8mj7hl0cdPfE8JHvWD5zsgiJVVOWqlQwpbyuAiEAlpC1EcYOitHU8J31D2PABmGyaBg5VPQt2ZFptZV908c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3994325},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"90027db8cb9b34aec4b6b9fc0127ac52ec989507","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.25.0","@mneme-ai/core":"2.25.0","@mneme-ai/correlator":"2.25.0","@mneme-ai/embeddings":"2.25.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.25.0_1779434275114_0.5313534752058859","host":"s3://npm-registry-packages-npm-production"}},"2.26.0":{"name":"mneme-ai","version":"2.26.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.26.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"af2079019a0d496c669f9b3fd4f893b9e85f60f8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.26.0.tgz","fileCount":717,"integrity":"sha512-3nW6x2QitPWpvMrTxgaWDZOFFUeDBBMPI6NHT7uGgyvaanCZC4SZU98mdmQ1aPOiOsG4sb6V2k/7xonHYl3DRA==","signatures":[{"sig":"MEYCIQCe1N6t5j30VYWCEn5rZb1J54dwPKhp0Dj1eauIMTgymQIhAI1oqFdKIr9UNfECzhxEbYcFSH1bBam6ffYrcFJa5+lA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3994325},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"22d810878ba79f3c27e86c22f3f20e342c368bd2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.26.0","@mneme-ai/core":"2.26.0","@mneme-ai/correlator":"2.26.0","@mneme-ai/embeddings":"2.26.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.26.0_1779436855452_0.478496042684569","host":"s3://npm-registry-packages-npm-production"}},"2.26.1":{"name":"mneme-ai","version":"2.26.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.26.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a0774382d3200964d1863c0fe51c5a24d561a97b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.26.1.tgz","fileCount":717,"integrity":"sha512-LESQXBdOvYOAC96uCQnMb+BVIpYCTXUTNRKX4rTjp+K2g71sqcSWlFQHxRhC7YOPzK77wzEbM8vHdX41UeCKIw==","signatures":[{"sig":"MEUCIQCV9uSKiFugzFaDayr58ByYCmPEnhP5jyIuI8/tAT8DmAIgJ9NF4kSk4q2gMW67q+pHD2CuZGGLpXnUC6JwU+drWfM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3994325},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"20a0da741f419396d0861d289991e8d64de0388c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.26.1","@mneme-ai/core":"2.26.1","@mneme-ai/correlator":"2.26.1","@mneme-ai/embeddings":"2.26.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.26.1_1779438038800_0.8654920611786718","host":"s3://npm-registry-packages-npm-production"}},"2.27.0":{"name":"mneme-ai","version":"2.27.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.27.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"748392f62e8d919271246687d5f9910874c698a0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.27.0.tgz","fileCount":709,"integrity":"sha512-VPCE8aVQKD1zM4CK0W8ziQ+zynntsmSyjGPNrwpUpYyxdd6bL5rC6FQmD86Y+YkzkF4Bo3/x6S2HUTson7qSAg==","signatures":[{"sig":"MEYCIQCCRUXg96k9AfrECpNdmHRrNhrps+ZrptJWLMRuGuhcCAIhAIja2yCWANvQ3rMcmmKFs/MF3seJn5ksDBGTqLXb31FI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3948810},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0175b681ed013acdfa3415995e2b9815262e0a8d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.27.0","@mneme-ai/core":"2.27.0","@mneme-ai/correlator":"2.27.0","@mneme-ai/embeddings":"2.27.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.27.0_1779440848354_0.07389167894898074","host":"s3://npm-registry-packages-npm-production"}},"2.28.0":{"name":"mneme-ai","version":"2.28.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.28.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"248a9e76c8177905c8a55742e3a4112f323acb12","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.28.0.tgz","fileCount":709,"integrity":"sha512-89553KvJVtsjgsYNvUX9bLUh4lmACpX833O3Ps4lAT/VG+/IpXd5PqVSwIDCzCz1UR732yZmp+Ofk4dTBMJRNg==","signatures":[{"sig":"MEYCIQDDQs3VJUqtRzzeTgxQu1ImrRgYOv++RfmkiNmnjo9PugIhAJ73qU+/Ge/2HU3N5dnianFICdKQq0WmvnG4d1C20/bq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3948810},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8771c93f29f79da2d9eb9728d24709d5531e4411","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.28.0","@mneme-ai/core":"2.28.0","@mneme-ai/correlator":"2.28.0","@mneme-ai/embeddings":"2.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.28.0_1779443567866_0.4803537439226184","host":"s3://npm-registry-packages-npm-production"}},"2.28.1":{"name":"mneme-ai","version":"2.28.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.28.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"91a25c92ee5e76ed147cfa5fb9c2170ea0b48e3d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.28.1.tgz","fileCount":709,"integrity":"sha512-sSEN8y9ACvH6tnf/vi0G/GwBS80eeYMPZs7xNGvcTUIjaMP/XFYqzN4yxXNhccILXxs265Psi3obaWDnbDmJEA==","signatures":[{"sig":"MEQCIBPg9luYa2TJN9pYEt1GYJ0SHx3vfk7aTkFwoY4Xs0H8AiB6O94/yLxwxYMFJm6XSusuLfPAeXzOe+EI0AzHNWk8qQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3948810},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ff07387d58150497bf611d52319626755a05fa58","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.28.1","@mneme-ai/core":"2.28.1","@mneme-ai/correlator":"2.28.1","@mneme-ai/embeddings":"2.28.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.28.1_1779446873693_0.5159538729547897","host":"s3://npm-registry-packages-npm-production"}},"2.29.0":{"name":"mneme-ai","version":"2.29.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.29.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9e3dba23221123293eed393a778b11f2ddaffcf5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.29.0.tgz","fileCount":709,"integrity":"sha512-L0SfrqPq8oP1jEUdS7holA0/wM7aYguVBVUylDlAYs2TfOMoMo53dusxtw44HSnmNheX9vDXEtG4OeeBtwHHZw==","signatures":[{"sig":"MEUCIDhj5yIrFN7nD82wXzmIQP8PxtJr4nyXxEdqX+uXqqn6AiEA5wzXJ5+5i2hFurXfuDh9KZx4Mt7TBP/MhZhPJxoS7Vg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3948810},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"fd18d0b10c96728fa4547413a1ed49a0b19b5612","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.29.0","@mneme-ai/core":"2.29.0","@mneme-ai/correlator":"2.29.0","@mneme-ai/embeddings":"2.29.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.29.0_1779518120970_0.998057485112561","host":"s3://npm-registry-packages-npm-production"}},"2.29.1":{"name":"mneme-ai","version":"2.29.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.29.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9d9119e47206f62c3b7683f317c24d07c58db257","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.29.1.tgz","fileCount":709,"integrity":"sha512-Mu3hiVY0Ua1aHPpabMeaCFmCWeMysvdb7rhzMCR1jymLHaTjUbfQW66TU2imkUHdHy2vOhZ6ypX1Cm0GUBxuqg==","signatures":[{"sig":"MEYCIQDb3CSNIHZgfRcsdWomcK+rAwcbxm99jO7rVeKEu7JY+QIhAOItxA5y7PyV6fGSX+mQP+tdYcacY1b3FUTN5eYrgM1d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3948810},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e34b0554481f9dde6dbad0f05e084933a1b2b853","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.29.1","@mneme-ai/core":"2.29.1","@mneme-ai/correlator":"2.29.1","@mneme-ai/embeddings":"2.29.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.29.1_1779519975984_0.39196157580301305","host":"s3://npm-registry-packages-npm-production"}},"2.30.0":{"name":"mneme-ai","version":"2.30.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.30.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"71d75759f14d222751456e960adc7c5bbef99460","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.30.0.tgz","fileCount":709,"integrity":"sha512-Sjde041d2IspfEk0PDLbdQdQnN5K5sKF8HEKYVDK1PUpxJpAq+hw9NuxxAgbnXIfX+6CXNWee51k8YvquwwrMQ==","signatures":[{"sig":"MEUCIQDXEwQ/QZpLvNkJfCzTUcP4N4w0dwxbauJ0Sl184cyEEwIgPb85PX2xp50+PDQqpQ88cGJSMvHXAsGj+nS+mwtIQ0I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3948810},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5d6972269ca5cfe01d4f812d3b9f472caea0a746","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.30.0","@mneme-ai/core":"2.30.0","@mneme-ai/correlator":"2.30.0","@mneme-ai/embeddings":"2.30.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.30.0_1779524264735_0.7262061918347551","host":"s3://npm-registry-packages-npm-production"}},"2.31.0":{"name":"mneme-ai","version":"2.31.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.31.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9534316b820409b0a26bf06ee5e15d6258c691fc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.31.0.tgz","fileCount":709,"integrity":"sha512-ziOTf/ov9fHTzi6WXo/WdZzyBUrO7lG7Hm/3ybmUTKcSdAqiNbXLc97tn9FBkeqOkfk5378z8clD/yeZETLIig==","signatures":[{"sig":"MEYCIQDzb3suARGL0cbCz5nI91GeIUiEOoAPEWsI7gotapjYmAIhAMGuoeprGc9BBDrEGRRJ5gCghhRNC7oM8Zvtm2ROxyTm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3948810},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5ed76c3b7a52ec82c51d3521e75de49a1662823a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.31.0","@mneme-ai/core":"2.31.0","@mneme-ai/correlator":"2.31.0","@mneme-ai/embeddings":"2.31.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.31.0_1779526708936_0.7246763515919039","host":"s3://npm-registry-packages-npm-production"}},"2.32.0":{"name":"mneme-ai","version":"2.32.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.32.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"31c3abf1d6a77273b78c4431033952c4407343e9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.32.0.tgz","fileCount":709,"integrity":"sha512-DV7DgFowTU1FB+vsBRAQpqb8fWGiawNS1KJ4kkl8m8vkZCGALYR3+0NcFkBhe7BZmfG2f+2L19lyoVw6CjAeyQ==","signatures":[{"sig":"MEUCIEkfNbDYqyYhF2Uf2jYtzVS84KGNxmySw+y+83NUaCmEAiEA1uhTjm7otttJTLvjuV/Fcw75+D0IzJrqRK+xbYBf53I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3948810},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3fe9bdcec609515a6d33a6059a723b308519b07c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.32.0","@mneme-ai/core":"2.32.0","@mneme-ai/correlator":"2.32.0","@mneme-ai/embeddings":"2.32.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.32.0_1779528773248_0.7139454049279959","host":"s3://npm-registry-packages-npm-production"}},"2.33.0":{"name":"mneme-ai","version":"2.33.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.33.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8a4e379152c2321e505688ab41dd379098b2f315","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.33.0.tgz","fileCount":709,"integrity":"sha512-ecdxonKK+IH2A/ZO3jgnleBwSZRpJFrmFrZ16kumF2YDD17NCWUnjRuwV0RlAMsq7fLkYpI4zYfyV1+pM4GdtQ==","signatures":[{"sig":"MEQCIEPEbeNviCocpsxodmIa3oNGrMAn3Xc1MXfVqX3rdnPeAiAw/EvTY3TAyXCHSnSXpOix0b5UCL+JFBduA9otE4OR7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3948810},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2ef886f29abf5e3819f34fee8e90b2237826a3f1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.33.0","@mneme-ai/core":"2.33.0","@mneme-ai/correlator":"2.33.0","@mneme-ai/embeddings":"2.33.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.33.0_1779531062118_0.6263368521671924","host":"s3://npm-registry-packages-npm-production"}},"2.34.0":{"name":"mneme-ai","version":"2.34.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.34.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"98909ab91d10083f781b32dc73150232d047bf3f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.34.0.tgz","fileCount":709,"integrity":"sha512-f+LhJBLKyXrGO2OeiwkXY8w+eMABXcANFbDe3sJ6zTgu12EnHg+w1pK+HR0EsM9tfWShZAPclj/b6XYSjvHktQ==","signatures":[{"sig":"MEQCIA+N/fBm0rGTodTNXpBchlxd02pit3sDFB/sVcPwpPMtAiACNZpplDFYQOIVR6mOuKr95aMK5JaCrfS8PeniARRmOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3948810},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5624654e9a347b70e107d82e385db544fe6f18a1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.34.0","@mneme-ai/core":"2.34.0","@mneme-ai/correlator":"2.34.0","@mneme-ai/embeddings":"2.34.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.34.0_1779532493885_0.07269816993014189","host":"s3://npm-registry-packages-npm-production"}},"2.35.0":{"name":"mneme-ai","version":"2.35.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.35.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"062b71f0a777aa6ecfee64327027126cfc9b1e76","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.35.0.tgz","fileCount":709,"integrity":"sha512-HSa4G8M44WLhfY6tzt+DMTmAUYT7Mz/of2+UHZZprxcMfavsblY5+6f3WhOZsXj7Z9bUhfgPCgNbWf4ZHGGaOw==","signatures":[{"sig":"MEQCIEcDk7OugbAISZ2IrlfcCtJJ7WrWD281q0sfctkkbIqjAiBl9kvSXp50HtK7kJbStrFxaf3LJbcVeyCyMbAwMc/DKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3951278},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"08a341094ade7f500f2c7dc08214394fea5e5353","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.35.0","@mneme-ai/core":"2.35.0","@mneme-ai/correlator":"2.35.0","@mneme-ai/embeddings":"2.35.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.35.0_1779533964379_0.9904038911615118","host":"s3://npm-registry-packages-npm-production"}},"2.36.0":{"name":"mneme-ai","version":"2.36.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.36.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1ebe6b02579cf6c3b53b91da8f1e1ee00f33a6ca","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.36.0.tgz","fileCount":713,"integrity":"sha512-jzaBobjOmJ9u2IyQGZyCv1DVC7DQq7CSGHXf/MfHC2IoxteDSuQYfXb13b/h3yFKjwKjL/VHeHYpg1oWpdn1zA==","signatures":[{"sig":"MEUCIQDO3WJO0lDB9FL8NAJ6Gh+FzxQIEvdysPvXk8QNvWM4LwIgTJB0jonBDV9IM1xhcIHeHGY5sGNChRqRtoL/nInFmFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3974045},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0be39677b90b60bce70c63f886441077a0931f5f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.36.0","@mneme-ai/core":"2.36.0","@mneme-ai/correlator":"2.36.0","@mneme-ai/embeddings":"2.36.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.36.0_1779535517701_0.014051760045618256","host":"s3://npm-registry-packages-npm-production"}},"2.37.0":{"name":"mneme-ai","version":"2.37.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.37.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"66286759d16c7c27e099c85314d2066a3b05a2eb","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.37.0.tgz","fileCount":713,"integrity":"sha512-GFGwC8PJvKPp3OjCQvmPgeAP9P6S3q0XOMpmteaCrQ3/CU2PQOneaHE4LPrBMyrnQfz24w8GFL1Q/P1VwW/BZA==","signatures":[{"sig":"MEYCIQC0XY3/ENWC1Jv8u+tUVK9+bEY5JKn7W7WC/qxwqOPnGQIhAK5VPpAD+f1nxYP1VPmn9fhu4ZzO08DEy+cYNqq6zni6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3982792},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c5be686df13a23df2f20d11cae8ca6a370461317","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme เนโฌโ€ the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.37.0","@mneme-ai/core":"2.37.0","@mneme-ai/correlator":"2.37.0","@mneme-ai/embeddings":"2.37.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.37.0_1779537379256_0.02338392184215854","host":"s3://npm-registry-packages-npm-production"}},"2.37.1":{"name":"mneme-ai","version":"2.37.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.37.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2d65f52a22033d40d3d530459f9f4b553e1ec200","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.37.1.tgz","fileCount":713,"integrity":"sha512-H6m4Qofrl5/rlwnGT31yEamPHR7Ethgsw5H0JKOf6pex/7RTqUA8HqRPou2uKd6qICGRgIzhh/mrG8JNPG+sEw==","signatures":[{"sig":"MEUCIQCyTSU+vqKTz1JrIxLqFAyfFNRrwlcxPFXVjbEKJwvthwIgT2WDOr6EwPSWcboiKbGbD6SItYOAEylJpl2CCpJaDxY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3982771},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5bb91eb373dba4d7716ecaf982337a72b2916f2b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.37.1","@mneme-ai/core":"2.37.1","@mneme-ai/correlator":"2.37.1","@mneme-ai/embeddings":"2.37.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.37.1_1779539198347_0.12416532337355113","host":"s3://npm-registry-packages-npm-production"}},"2.38.0":{"name":"mneme-ai","version":"2.38.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.38.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7aaca15ddfee2ce8bfe82de016018d0bd65a825a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.38.0.tgz","fileCount":713,"integrity":"sha512-k7EDLhxq2tE5ajt/ixqzj+3rJ1hXJAjE1gGtbciO6jBGE6Mo4bZzh9rvq0szAR88EB7Be4jV81ZdPRrJ5EZM7A==","signatures":[{"sig":"MEQCIBE8qhYUrKh8o3sB0al7BdMlwV+Mb9tKBB4zCkbEdCbaAiBn76TJJxkpCJlgZM8vONLCnsilL5bQrPn/02jss6xw1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3982771},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ab6bb7f18deac6cbd6da796c3894e6579941c542","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.38.0","@mneme-ai/core":"2.38.0","@mneme-ai/correlator":"2.38.0","@mneme-ai/embeddings":"2.38.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.38.0_1779541478351_0.6948439619604554","host":"s3://npm-registry-packages-npm-production"}},"2.39.0":{"name":"mneme-ai","version":"2.39.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.39.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0eb8b71a27edb856d06b9832648a83ebf7d3803e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.39.0.tgz","fileCount":713,"integrity":"sha512-8nGbS14/1sfnIbYPtvXdQP+gl8j+chHPm3sjD3w4aKrt/Fi+rxYqxMt6+hRi0XQAD9bJBkfmIQJXs3zD4noG7A==","signatures":[{"sig":"MEYCIQDFKBEo3cjAP/EplMrUwyID0FgrQuhpcoa1Qt/i2MWd2QIhAJONLFVeEU5zRuKF1bMjrepyFbwfimtm8BJcsc2nYkq5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3992588},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"71228155db2b85ddfb394aba20e82373dcd1ece8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.39.0","@mneme-ai/core":"2.39.0","@mneme-ai/correlator":"2.39.0","@mneme-ai/embeddings":"2.39.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.39.0_1779543300451_0.5144483852775921","host":"s3://npm-registry-packages-npm-production"}},"2.40.0":{"name":"mneme-ai","version":"2.40.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.40.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"cd4647e2e13cdcb4de94dfbb86e59a291927114f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.40.0.tgz","fileCount":713,"integrity":"sha512-a7w2VcV6MdBM7kUMK5mFwry1fC9hsiN1+0+BxlIz5AV8dEkXImkquUoqUI7sjasZpZ9PsYJmhko4Y/T93FoL5w==","signatures":[{"sig":"MEUCIA4oA/GlpyyxOtIR0hHPz10O51osCEjA1Pqn9NqsB3+pAiEAoQATxWK91Sz9FnxMusRwP9e3/4XDXnb8Yow5FCohYzo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4002412},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"cf88d912ecea8d84b51b5c2e90448deea48b8c51","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.40.0","@mneme-ai/core":"2.40.0","@mneme-ai/correlator":"2.40.0","@mneme-ai/embeddings":"2.40.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.40.0_1779547240857_0.4642197589296917","host":"s3://npm-registry-packages-npm-production"}},"2.41.0":{"name":"mneme-ai","version":"2.41.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.41.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"69d25466d51623c6d3394b7f54b9b2ad1dcb08cc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.41.0.tgz","fileCount":713,"integrity":"sha512-j2QcSJIMkkNs1J9+g4sHglh7fLfqfbXM2YT6KFaQg3X6GdVyc/p6W2OLLGV279gi5XmjrW0PfV+710rGIuYsmw==","signatures":[{"sig":"MEYCIQDrWcZ3hqscUp+559C1qWI3dRVWyvlVAkMRotB7dDFEfQIhAMbyo0TTUjLQYKyR4FIGDfwnK4x1uQX9fbBeIWInEiz1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4009831},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d9d01d3a6ffe6848d5cacb3977bb75914a6669d5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.41.0","@mneme-ai/core":"2.41.0","@mneme-ai/correlator":"2.41.0","@mneme-ai/embeddings":"2.41.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.41.0_1779548970596_0.9946059408402383","host":"s3://npm-registry-packages-npm-production"}},"2.42.0":{"name":"mneme-ai","version":"2.42.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.42.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"41fa1bb1ca5732a9fed4b4e96a7f0ce47dbe4f6f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.42.0.tgz","fileCount":713,"integrity":"sha512-LBjsLuWqp/4L7Q/xI9SpFsG27wF/J/ppubfC4Ez/yZEeeSWhXTfhU/7IT5vcHUmEHXS7SL1y86g0IbtmB5NtIg==","signatures":[{"sig":"MEQCIHbQZA8YeorqaEj1r6vTNPpkR+TJCZJLF3Jgz7TnbUAOAiADU/mcj+P+LeKlXmKwy4jlKtOHA9mX//LkrRcExOfLlA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4009831},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"140395580684b1fcedf5dbb2bd534e5092d28a93","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.42.0","@mneme-ai/core":"2.42.0","@mneme-ai/correlator":"2.42.0","@mneme-ai/embeddings":"2.42.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.42.0_1779550347968_0.19226829767280895","host":"s3://npm-registry-packages-npm-production"}},"2.43.0":{"name":"mneme-ai","version":"2.43.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.43.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e0cad40b78094bf8a4a961fcd8c4ccadf680d5dc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.43.0.tgz","fileCount":713,"integrity":"sha512-FdyJ8n27vRSoZCTqSbIjgxqFh8r+CyFeQQN2OTN5ZTRp9VJz5O0slxFDkKH9eiuwjOV/g9GLIg4bmqLEAc3Yiw==","signatures":[{"sig":"MEUCIQCj3CrNqvVZbGGsxVzsa5/2qPSMM+zJtsJkWZyNE2v3EgIgCV4yijsS0q4XA/FlUfZ6Sf7uYkRu6pnmERtmy8Yz+VI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4014996},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a5b57ac5f086446b9b54e21ca2181439bc960d69","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.43.0","@mneme-ai/core":"2.43.0","@mneme-ai/correlator":"2.43.0","@mneme-ai/embeddings":"2.43.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.43.0_1779553287324_0.42102558724344563","host":"s3://npm-registry-packages-npm-production"}},"2.44.0":{"name":"mneme-ai","version":"2.44.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.44.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d5b0045b1f545b5b49f46caba47210d6d0bcaedd","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.44.0.tgz","fileCount":713,"integrity":"sha512-AltylA04QzMGMjAJAdsa5GPf+/92FcGO0h+L+UeFS/mpAGh4biXdu4E7DfUlfCTstO065UO4PkQP4eae5Sj0Rg==","signatures":[{"sig":"MEUCIQDpHjcsyAhwrFTLccEBKlt1J0cg4wpxacNT7GsX9feWXAIgZMP4jlx91q88AyunAF0BIDxCEy2H92GHBA9yh/4wFLQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4021210},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"fdf0cfb544c6c44ac2c70b8faaf0a156abb58a9c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.44.0","@mneme-ai/core":"2.44.0","@mneme-ai/correlator":"2.44.0","@mneme-ai/embeddings":"2.44.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.44.0_1779672946599_0.07131826622704351","host":"s3://npm-registry-packages-npm-production"}},"2.45.0":{"name":"mneme-ai","version":"2.45.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.45.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"16b48426f507cfc5692dffe5ab339a7d922a6357","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.45.0.tgz","fileCount":713,"integrity":"sha512-6uVOPuKBvReTx9RsaPDO6kjZH62ff5OJMey2vdv/+P+dwOv7KK+EoxOo8bLQw/Mk4b9yJI+82Js6dna4nkFcOg==","signatures":[{"sig":"MEUCIQDiEfO+DsK4DHW5j5uni+9TMb/E1YveMzc5F4ZW2rHmQwIgfjHBSEPEUv8/7oVJvQpIpMr6Y1FAAQQVOGagkx5eE3U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4021210},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"75c5310aa27001b50d5feca0d593c4f43f09ccaf","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.45.0","@mneme-ai/core":"2.45.0","@mneme-ai/correlator":"2.45.0","@mneme-ai/embeddings":"2.45.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.45.0_1779674691446_0.3331473697370282","host":"s3://npm-registry-packages-npm-production"}},"2.46.0":{"name":"mneme-ai","version":"2.46.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.46.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2ba3f5ffadc8c619b0103737327006cdcc50eb98","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.46.0.tgz","fileCount":713,"integrity":"sha512-D3tNpGt9Vvs4jTnxI+7WtswTXZOR7FmYS4kq3USvMyIH/X5VKZS5sI7vcFpraMjyotlJc5fWpil8sbf5t1aO7Q==","signatures":[{"sig":"MEQCIGMG6hgKVXiCPnZ2TmIYcBu308L1mNzXnxj/J5iJ6jS4AiBHyAHVpjAxLHqc6FpiyWHS5X/kKK/vNGPCsUngbx2FMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4034361},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"71b3ce391fdad42dbb21784dc39d0556bcdd2737","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.46.0","@mneme-ai/core":"2.46.0","@mneme-ai/correlator":"2.46.0","@mneme-ai/embeddings":"2.46.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.46.0_1779689647184_0.6778114496234309","host":"s3://npm-registry-packages-npm-production"}},"2.47.0":{"name":"mneme-ai","version":"2.47.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.47.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6a1229e64e325449ee0468b7f8aeb22b367f1de6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.47.0.tgz","fileCount":713,"integrity":"sha512-aDQoZJH/dgdlLErQtAy0fi278ahBO/iOrru+KZYMAK09nm05I31EoEuBWy20I15boOCBoRMlcfkcK1/fN8E3tQ==","signatures":[{"sig":"MEYCIQCswbUFg3yYZ4jEFQcokflSU3JnNDgs8/RV1uqWRgbF7wIhALRkPEyB1NciRgh7+QUp4tgjjQq4j8RmlCqkLPtVEb5Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4037854},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4926b74db3b7178b5a13c6e61c490b7a6a5db324","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.47.0","@mneme-ai/core":"2.47.0","@mneme-ai/correlator":"2.47.0","@mneme-ai/embeddings":"2.47.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.47.0_1779695797486_0.8794423102237312","host":"s3://npm-registry-packages-npm-production"}},"2.48.0":{"name":"mneme-ai","version":"2.48.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.48.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8a01c9c575df8201576d2d492fb2dfb9211fb6d3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.48.0.tgz","fileCount":713,"integrity":"sha512-dGCj6WdSCzV8pfIUY/ijw5Dxv2arxJSTZ8+tTXux8sI4RbzmBFIK4JSWCuC6zE7rFsIKO6XB5SVThM6dgsiztQ==","signatures":[{"sig":"MEUCIAvFLAkrX1BKK6vGSpnds/2LwaRh+YeSgHmBO7ubVJYFAiEAozM5arl3ekj+YN9xW9yP+7cSidBcIFEswqKmgVUypEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4041982},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8fddbc43637c28612642a5977e1e980963c8be01","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.48.0","@mneme-ai/core":"2.48.0","@mneme-ai/correlator":"2.48.0","@mneme-ai/embeddings":"2.48.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.48.0_1779698279407_0.0673660324113452","host":"s3://npm-registry-packages-npm-production"}},"2.49.0":{"name":"mneme-ai","version":"2.49.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.49.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"afc4a26e9484ee6886f405de7cc7cafa5375321b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.49.0.tgz","fileCount":717,"integrity":"sha512-WfbNYV5A/IO5AdC0hTOH80j5kZEVQt1FbwWC7QwcFZRi03MMuH59vxlcxRVyfyyzGSAqDgu2xUKeh52veQNdYw==","signatures":[{"sig":"MEUCIFXceN7NVKW8tL4j8kfFH4TwDj/a+csD4d2ggTPOX7tgAiEAwuatNIwcgi6GHblKKjpTiOgJNbWudDhBnELTwrPaXFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4064962},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b61af14f6c2b1f35926b32729663d97cbd9bffc8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.49.0","@mneme-ai/core":"2.49.0","@mneme-ai/correlator":"2.49.0","@mneme-ai/embeddings":"2.49.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.49.0_1779700604027_0.10133546597000631","host":"s3://npm-registry-packages-npm-production"}},"2.50.0":{"name":"mneme-ai","version":"2.50.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.50.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d30c55ce18629650cae96654b32c0cb5a2bbaf4f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.50.0.tgz","fileCount":717,"integrity":"sha512-R0uuoasa9mybd079kSrKQfW/XHjJgLOVt+Mon+tEeVLQXZPkgXpqG3vWvh64nQL3iUK+KDFHyYCyrsDkO3K8oQ==","signatures":[{"sig":"MEYCIQCMmCzBAlJT7y57JGP/8MAsvswcKgi9Fa9gPEClR8KPnAIhAOVvykGCAH2QRRumIjlFnLdkHQ+sYXxTYG5GCT3awjBN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4074979},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"03406175a1d58388cb0f181e550f486f2c707a7d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.50.0","@mneme-ai/core":"2.50.0","@mneme-ai/correlator":"2.50.0","@mneme-ai/embeddings":"2.50.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.50.0_1779703921343_0.25376987646471405","host":"s3://npm-registry-packages-npm-production"}},"2.51.0":{"name":"mneme-ai","version":"2.51.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.51.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"eeb0e346809b27fc7e6b18251a4fe9ba097d34b4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.51.0.tgz","fileCount":717,"integrity":"sha512-hXC9zC6tt9ZMjSShSJ+zuyyNEE0dGf5uUlLHcHozsywAy7IawJ2lQH6XFT4P/8wWLuvyWq/smdRhDaTV50DNRQ==","signatures":[{"sig":"MEUCIQDnFGb7B5UkOUWBR6S+91x2RGlqtL+QrBaTq+buePan2AIgNX/WzPwhlmTtOJbKrtvDTypTaf1J+LvfdG9rXx2Z0m0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4074979},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ea6e9a64cc11bf1428a7d38f695f251a89548d70","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.51.0","@mneme-ai/core":"2.51.0","@mneme-ai/correlator":"2.51.0","@mneme-ai/embeddings":"2.51.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.51.0_1779706515209_0.10165147586556178","host":"s3://npm-registry-packages-npm-production"}},"2.52.0":{"name":"mneme-ai","version":"2.52.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.52.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ed716948bf5265cbd8b5476c962c4cd4cc0eedbe","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.52.0.tgz","fileCount":717,"integrity":"sha512-vv1UIkcs9ybGLWhibDlaUyotF2XGWRUAUW8Ee331gVoieO/054aKNxlsRqJmhP/SfcPjmrg1L/jj2fgBf1XWnw==","signatures":[{"sig":"MEUCIQD7KvmPgiANa6ZLNF2Fj3Tmnwb3F+XIi+Q32swOUuZ8fwIgCX/kO1BqjRuWRrGRMtsUGGG6Duohh4HjGRZEK5Y1mTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4108210},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6009e0460668da8a47aa87f42753933ed0189f82","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.52.0","@mneme-ai/core":"2.52.0","@mneme-ai/correlator":"2.52.0","@mneme-ai/embeddings":"2.52.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.52.0_1779709014383_0.13863261556438133","host":"s3://npm-registry-packages-npm-production"}},"2.53.0":{"name":"mneme-ai","version":"2.53.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.53.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"943b44ab969e42d32a300fc6edfc673d4baf682f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.53.0.tgz","fileCount":717,"integrity":"sha512-HACmYpf6hlok+zDE53gDkxLDpFlEhWRqVnRb5LlB9LXz6w75h4j7aDEPguPkX38kSFC8DcVHbDqhCa0S7RcpMQ==","signatures":[{"sig":"MEUCIQDi0HQfqJh6VEZXfUJgkkjfmiJjJnSmRjJs/NgRf3LyFgIgVZUV27Bm0hd6zNZR77hc/YWnxfA+kRxf5tqQM+9BH3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4125565},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"cca8d9d9e38b4ba9288a9180ad4f583d408f470b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.53.0","@mneme-ai/core":"2.53.0","@mneme-ai/correlator":"2.53.0","@mneme-ai/embeddings":"2.53.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.53.0_1779713136244_0.7306591850482285","host":"s3://npm-registry-packages-npm-production"}},"2.54.0":{"name":"mneme-ai","version":"2.54.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.54.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"136bcf1ef0169844ddbfdf32c2695fefa148d2b9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.54.0.tgz","fileCount":717,"integrity":"sha512-QI0Tr2i19S60tM+bBCmixOiJvNx/RbXfONHcPOA+KlnVyFCbbps+n6OAif/ZfX/sK+OnOlC1LZ8Cule0FMF0Sw==","signatures":[{"sig":"MEUCIFcQpolesQk8vsgQ7UiN/unbmgZzLLnimCUwlWavL+h2AiEAyhHbAdP8FUefM2FOHh/S9vurP4c2BOOmv/eEwXtdW48=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4146118},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"33418401bea5355d949d9995868838c8fce6e2f0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.54.0","@mneme-ai/core":"2.54.0","@mneme-ai/correlator":"2.54.0","@mneme-ai/embeddings":"2.54.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.54.0_1779715245484_0.6533384731142637","host":"s3://npm-registry-packages-npm-production"}},"2.55.0":{"name":"mneme-ai","version":"2.55.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.55.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ae282b9ef82b80e97b95ec82867fa007466b8537","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.55.0.tgz","fileCount":717,"integrity":"sha512-NuQQsJdr9t48/4yKwt10wkj10jYD8Wt6Y1+zeV16UcKFpfmoNHYXYaAnpiu3vgDKhXiray1CdBORoVQVcet/DA==","signatures":[{"sig":"MEQCIFzSHwVgeV4TwH2PbNG72Tfb7+N8jD2rkDxZGkLvnDFTAiB6LElioV+74hDi89+xtE+63Ae8E7rSgecVnETOHfhfVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4146118},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2d44bd464d51aa6274c21cb6f8efbd45ce963d22","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.55.0","@mneme-ai/core":"2.55.0","@mneme-ai/correlator":"2.55.0","@mneme-ai/embeddings":"2.55.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.55.0_1779716923087_0.11822079459277224","host":"s3://npm-registry-packages-npm-production"}},"2.56.0":{"name":"mneme-ai","version":"2.56.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.56.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4338f4582aba14924537667774f2107d38f4da77","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.56.0.tgz","fileCount":717,"integrity":"sha512-q0RCCy6caWEFII+7bBYQ5BSBTQGN2/4R4bs3IQ3v6v3TpYH7dHg4N2rDJTfP4JBHR4ZmsUQPwrexs58Ml2YwwA==","signatures":[{"sig":"MEQCIFT7H6Gpem7RQA1hupXTGU+Osgt9dIIfrEc9WXhvmtKsAiBMRjB73NcPxOsv1f+PyOWu0YxKoEiKaFIMlIMtDlwDzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4158887},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a9f37922a750c4585a1c5127ad81eb8a7909ce1f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.56.0","@mneme-ai/core":"2.56.0","@mneme-ai/correlator":"2.56.0","@mneme-ai/embeddings":"2.56.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.56.0_1779720130404_0.8577373130131967","host":"s3://npm-registry-packages-npm-production"}},"2.57.0":{"name":"mneme-ai","version":"2.57.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.57.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8aadc165a5d96cfb45d3685b442a20f6f18b281a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.57.0.tgz","fileCount":717,"integrity":"sha512-y45R5H19GeaUE9PsolZwC1G4t+AdXay+dK4aHHb3L6KLmrYZDAeIrzjvf+9oAe8Ao2Vo0whIX4j9bHRXzHdK7A==","signatures":[{"sig":"MEUCIBw2KFIjDA3lSKItwYrUViiyPRTMhJ6hNBzCu7KiOwwYAiEAtmm/e4spC4VQgebQHGXiktmB1sqQ7zSw1YF7yLSeYSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4177476},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ab6cdd3df13d15151ca5afc121c2bc8c197d5ce9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.57.0","@mneme-ai/core":"2.57.0","@mneme-ai/correlator":"2.57.0","@mneme-ai/embeddings":"2.57.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.57.0_1779771059919_0.11223925010535885","host":"s3://npm-registry-packages-npm-production"}},"2.58.0":{"name":"mneme-ai","version":"2.58.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.58.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d4aec6b8b4baef81b5df44152a7048ae3c5705aa","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.58.0.tgz","fileCount":717,"integrity":"sha512-Hk83sqdY6R9rSJVIwK1VTxAzO+wgqOaIsNYj8djr+AraHimDdEWAl4f4dk6WGSJbEN3di+A9jPgBxJwZvDZs7g==","signatures":[{"sig":"MEYCIQCcyjsMRXrAG2JVHiCb1BfR6g4S1F55xthAoUnD8bCTFAIhAIyGUWRV7dr8u+3Mg1juGhwMpT/mhU+CRtaX8MqqmqVE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4194333},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c77335fc3fdc0d4bdb44261a4b8d62afddddd6c6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.58.0","@mneme-ai/core":"2.58.0","@mneme-ai/correlator":"2.58.0","@mneme-ai/embeddings":"2.58.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.58.0_1779772609395_0.12975886420278826","host":"s3://npm-registry-packages-npm-production"}},"2.59.0":{"name":"mneme-ai","version":"2.59.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.59.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d3299e9e0afe26b11c13767c9415018ad1ec06fd","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.59.0.tgz","fileCount":717,"integrity":"sha512-PZcOpsaS5FWRg5/rulkkYE9Os5yndphErG7CWamd+pQNMotRQ9VeOx9e/bUF821wTM5zg56YWMEzrB3Esbe/qg==","signatures":[{"sig":"MEQCIBxude1MIYIhsiVY6eNVIrRMB5k0iJZMm+YfUlN3mgjQAiAi4AJApqOruTRdnbwK/dufjqjnrLmrdKRJvmPLjX0ACA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4200014},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6763be40563ecb195faee1ddceda0057661907f9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.59.0","@mneme-ai/core":"2.59.0","@mneme-ai/correlator":"2.59.0","@mneme-ai/embeddings":"2.59.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.59.0_1779776522757_0.5683815005935349","host":"s3://npm-registry-packages-npm-production"}},"2.60.0":{"name":"mneme-ai","version":"2.60.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.60.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"10eacd1161d723f3773170d4432a18fae0550193","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.60.0.tgz","fileCount":717,"integrity":"sha512-LphDycNk/BDxpqONRXVzHmPlEC0y+xCGmxKxonSLD88/ydElHb184UnVTse/NSyqVV0IufN8iE6F/KosL7G7Qg==","signatures":[{"sig":"MEUCIEnXxaAgaqJeEgj/amZEVIOpDaWQpY/GDdzPB9WzaG0VAiEA8ocIRA3D6EVquJ1YzQzPjQijGxQ4WH+K4oP02Z3aZ1U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4210818},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"aa52fad3f64d53a8833890664d82324c763507ff","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.60.0","@mneme-ai/core":"2.60.0","@mneme-ai/correlator":"2.60.0","@mneme-ai/embeddings":"2.60.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.60.0_1779783667663_0.5794436520403827","host":"s3://npm-registry-packages-npm-production"}},"2.61.0":{"name":"mneme-ai","version":"2.61.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.61.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"284293b21eb66273a893a015ca3515e0c3eb5421","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.61.0.tgz","fileCount":717,"integrity":"sha512-/76ZpaYPCn3DKqoUmzW9c/zh39Rqwdt62GVgnUYy/p73BskjZZ7sRORmnzfnyf66WpGXCpLhaWUOSTF8xkMSXQ==","signatures":[{"sig":"MEYCIQD529+CHEwiC001LJ5HlXZGYrhT8lCOfE3M5zUTw1+0qgIhAOB+yeQlLlIf7kCrnDfaRZAMz2I1TwkyGNiWoqm0Kz8m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4223366},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a416359432d7947ef1bec612a3097aa70e7b497f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.61.0","@mneme-ai/core":"2.61.0","@mneme-ai/correlator":"2.61.0","@mneme-ai/embeddings":"2.61.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.61.0_1779785107530_0.18405704217360497","host":"s3://npm-registry-packages-npm-production"}},"2.62.0":{"name":"mneme-ai","version":"2.62.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.62.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"bf9b46f675f91718d83b7caea65675ba6c5f7b26","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.62.0.tgz","fileCount":717,"integrity":"sha512-7cq5YxaBNgkyItzYNpNZerb7aEbPPFjIWkRDVhJYGE/TmQAqpfHWfmkNL8f6Kv6blDLxYLK0vitc+Nav21B4Fw==","signatures":[{"sig":"MEQCIGBeOoxwAXUiTDAzelcZFHPA2Ai4TkJBmpmdjfLIMQvlAiBApyyfAkGRMpPv1rjxB5C2Q1o2tOybJ010uxKivibwvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4233908},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"117babf28612fb9b806190876b089eb1b03a817c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.62.0","@mneme-ai/core":"2.62.0","@mneme-ai/correlator":"2.62.0","@mneme-ai/embeddings":"2.62.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.62.0_1779786093884_0.05522935230673087","host":"s3://npm-registry-packages-npm-production"}},"2.63.0":{"name":"mneme-ai","version":"2.63.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.63.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"74637422c0feea8beac8b3604ce38e41490cecfe","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.63.0.tgz","fileCount":717,"integrity":"sha512-4KK/mmkIVwmjkaruoG/7CKUi7HjSOrUnNB3bbP2D6c9oglEdoBV0omeykKdW9tFlphKxHO2CyLXBXsrc0UQlBw==","signatures":[{"sig":"MEYCIQCX0Vs3Pewb9TVJz5et2QofGU7iAhYRRMkPZ6kE6gNUCQIhAJ1glFoiMFB/4UMNhLZyWFE8bk3vR9PCchyuIq8LZ9aw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4244434},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7579e19a7102ecd0dfaa276723b64a80728ae311","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.63.0","@mneme-ai/core":"2.63.0","@mneme-ai/correlator":"2.63.0","@mneme-ai/embeddings":"2.63.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.63.0_1779787063066_0.35024177491372943","host":"s3://npm-registry-packages-npm-production"}},"2.64.0":{"name":"mneme-ai","version":"2.64.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.64.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5a815e857948c94faf30537033832ddd2595e20f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.64.0.tgz","fileCount":717,"integrity":"sha512-wzP+yV5lA9sj13I/UTYZ1XzJRRv5U23g5cixoZnxuis5GOxDYg0Xfaiqu2zWHaPtuF9YS4+EkhCfU9s2OB/ffw==","signatures":[{"sig":"MEYCIQDb67UJFojc1owI3yXlhwrC/En7+ZxeWX0PioY/XzQxogIhAKhRtMLhpCcdEfBSqrC9IPe2yAW3UrxQBp4jFT14ap8A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4251036},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"111577faca9941a64e24be2eb276fb90739844bd","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.64.0","@mneme-ai/core":"2.64.0","@mneme-ai/correlator":"2.64.0","@mneme-ai/embeddings":"2.64.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.64.0_1779788420139_0.785040415754215","host":"s3://npm-registry-packages-npm-production"}},"2.65.0":{"name":"mneme-ai","version":"2.65.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.65.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4c0c7b6fb0e9491bb1b31466543f30b1f9e50083","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.65.0.tgz","fileCount":717,"integrity":"sha512-CEbNxdRzK4kLM1tdC4Cb9BLac+aBBngJM7JuDOHohjvUESBLAcl+iIp5dpAkRmVI5h931AcaTqMcSPSJYKkKZw==","signatures":[{"sig":"MEUCIGjJJb3HxNBqu5UM28ZEg5Ar9AA1O2e0+MA9lW7hxGtSAiEAs7FGY8qqFW5Huem8YgcZb5tE17AH3tNiTkPGgwF9J3g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4264928},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0812f31e09a52d6cd82457830f9e17cb7b9eb75c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.65.0","@mneme-ai/core":"2.65.0","@mneme-ai/correlator":"2.65.0","@mneme-ai/embeddings":"2.65.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.65.0_1779789334736_0.4254270590526479","host":"s3://npm-registry-packages-npm-production"}},"2.66.0":{"name":"mneme-ai","version":"2.66.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.66.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5980840fbca836e1a095290096e97f86d19b526a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.66.0.tgz","fileCount":717,"integrity":"sha512-bvDl2CGmOnllFR1f045qa04t1XRRcIbyjPsfsMrbOjnLoETV5Qnyd/xnpujQUnqkyEtZ9a+AkPuSCZUzAqlOVQ==","signatures":[{"sig":"MEQCIGSLDAF9u9ggkhU7YYaHECr3hb5WYQHIC4I2rmFpEEJrAiBCF6piIZSpOhwBa1t+WgFuF13TITNVn9kIJZli321Q2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4275047},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"55ebfaabfacca0aec779f49977c954445f721fc8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.66.0","@mneme-ai/core":"2.66.0","@mneme-ai/correlator":"2.66.0","@mneme-ai/embeddings":"2.66.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.66.0_1779790250873_0.6753162426993724","host":"s3://npm-registry-packages-npm-production"}},"2.67.0":{"name":"mneme-ai","version":"2.67.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.67.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8a455baf2bfea282ad90a82b073dc10b03cb6b3a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.67.0.tgz","fileCount":717,"integrity":"sha512-PDdRBfy4dthFFg9weAhFyo5C+m2mcAYsfHjzvd5By7SOVO4BhXxzxciIZYbDitqip8mnLNwESgKJ43aH5BiTFg==","signatures":[{"sig":"MEYCIQC+d4OubG0jXPMGPr2UunEpzbC5f6sexK4Vl9Z0a83AaAIhAOO/ZwwoUAD8IeqewCR+gLUFW3w2MKwDZgQe0/k/ULpR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4280788},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7667aeab56c6bea56286bcfcc4d898e723ad0fb8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.67.0","@mneme-ai/core":"2.67.0","@mneme-ai/correlator":"2.67.0","@mneme-ai/embeddings":"2.67.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.67.0_1779852628791_0.11696290205396465","host":"s3://npm-registry-packages-npm-production"}},"2.68.0":{"name":"mneme-ai","version":"2.68.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.68.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4c29c73918423e95e6b65b47b0cc30287a54ee38","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.68.0.tgz","fileCount":717,"integrity":"sha512-qLroF6hKyN0gvjKheQ0ZumoKRULdkCTUBJRSHgAdcD3Xgq7xf+c3ubDtQitIkG0w+8aRdK5J9NR06G70SWJN/A==","signatures":[{"sig":"MEQCIDD2wD9bOMo6zeZwpTVrYoady9z05Wf5CFoASvoDyjARAiBRx2OVfQVs1VaMfr3gJvZXPGHWL5TJn6HbImDNS0yMTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4280788},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b00ad366a538a839808dec67f7879009debcef5a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.68.0","@mneme-ai/core":"2.68.0","@mneme-ai/correlator":"2.68.0","@mneme-ai/embeddings":"2.68.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.68.0_1779853662137_0.6028465687332349","host":"s3://npm-registry-packages-npm-production"}},"2.69.0":{"name":"mneme-ai","version":"2.69.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.69.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"570d08cf1708728135e9edcffcd67b36774a57c4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.69.0.tgz","fileCount":717,"integrity":"sha512-RliGp8ZeaxQnEP/0vKdotzWdeQaRA17gmbkUKk2r6vQOB/VhN2Kg8PgmA0QVW57N+URRzplR9ZNZuOL+OKrz0g==","signatures":[{"sig":"MEQCIGMGDeYoLPONR8YJlrtTOtS8ypkkJbN2Y++grIteF1iAAiBTwZ3xrQ1qiNvPUVwuyABn6caKY2QsH+muVYFmBD96qg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4280788},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"221f006c5b338856080c63cc1030ef5727c39c91","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.69.0","@mneme-ai/core":"2.69.0","@mneme-ai/correlator":"2.69.0","@mneme-ai/embeddings":"2.69.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.69.0_1779855452495_0.5168033531785452","host":"s3://npm-registry-packages-npm-production"}},"2.70.0":{"name":"mneme-ai","version":"2.70.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.70.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c57d61e774c93182a0d3dc88d0e5b8d902ee322e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.70.0.tgz","fileCount":717,"integrity":"sha512-CM1IQlkKKoGpqFaKdcNfuAQILSEPIyhkOTEnn2c+vmj6gyYzjpG2Fz2ODhyYDsZ/NHv64MntdWUgKY/hRI17lw==","signatures":[{"sig":"MEQCIC898Z4lVpwKktj/1vABCpKXml9SlDkyN5kQmzLYz54bAiA/800o2hGTZKnMd5df/edaSEoRJ4kGqKOjUkFkgRKy5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4280788},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8772f4e7eab066fbc89d2b161b33b5f479de92d8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.70.0","@mneme-ai/core":"2.70.0","@mneme-ai/correlator":"2.70.0","@mneme-ai/embeddings":"2.70.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.70.0_1779856355029_0.21232158113574595","host":"s3://npm-registry-packages-npm-production"}},"2.71.0":{"name":"mneme-ai","version":"2.71.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.71.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"75ecb61e52206c703ef7c24d37b68f2e1609aaf1","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.71.0.tgz","fileCount":717,"integrity":"sha512-hanQ0P9m8Cz9l3gsAtOs8iKTRuvFFxmSCnWMP+7ALyQhwRGoSz32MBACygTpO1/p0FzuqRoiAMXBJQesN4gwVQ==","signatures":[{"sig":"MEUCIHs2vRwZloe7F0LFmlTKzNZEpaqRuGn+DKiPPexeBMC3AiEA9MRxMu/lEF0kBXFKm1PmIogLXXUVU8jwgCn8Pfk4Gds=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4286871},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"026d0c9dd30185d406972eba46142c561e514ee3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.71.0","@mneme-ai/core":"2.71.0","@mneme-ai/correlator":"2.71.0","@mneme-ai/embeddings":"2.71.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.71.0_1779870608104_0.8025543308284209","host":"s3://npm-registry-packages-npm-production"}},"2.72.0":{"name":"mneme-ai","version":"2.72.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.72.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"86b828ea59e1f1ab65bc91b45c88767250bedbfe","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.72.0.tgz","fileCount":717,"integrity":"sha512-bBF0B7/ADDe0MToiyWeZbimLXgOv8KO45L+HlCbhg5IBVM4On55frRdQyInGygTPi4R50ammqOxNi14vPye8Dw==","signatures":[{"sig":"MEQCIGC+7KAuudlZQaGFwq8U/Z+83j2iHAbuHtK0kuJg7ScSAiBD0YBf2scuGurFGd2Mh4gPecnCDfArPIxO9m1v02gZGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4286871},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"276e9e4f954cfdd20d4a3f0e826b1a75023d2101","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.72.0","@mneme-ai/core":"2.72.0","@mneme-ai/correlator":"2.72.0","@mneme-ai/embeddings":"2.72.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.72.0_1779871452122_0.22109641106540545","host":"s3://npm-registry-packages-npm-production"}},"2.73.0":{"name":"mneme-ai","version":"2.73.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.73.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7c2b57b56a14f48c3f6d207b2666a3befaf06d6d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.73.0.tgz","fileCount":717,"integrity":"sha512-m2YEfUUnC14h3PV7r41SPNNcQx0D6EAqGRiH00y/jE0UJ4/Hs8gZmciesiDIiGHt5NH6WLXjjBFrct7v4YQHAw==","signatures":[{"sig":"MEQCIH6y+a3AClnnvcK7LcI0abnpBcqfeijdWg6TmevoZFxyAiAJMJ0bqDABu81IX0VaNHw8tlrod/Al+nYYevr8Wb56Tg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4286871},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9933d9ca0791eb3f31d48bf9fa0d44d9c10dac20","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.73.0","@mneme-ai/core":"2.73.0","@mneme-ai/correlator":"2.73.0","@mneme-ai/embeddings":"2.73.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.73.0_1779944032975_0.28906345837043035","host":"s3://npm-registry-packages-npm-production"}},"2.74.0":{"name":"mneme-ai","version":"2.74.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.74.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e9bdbd18e414b3e065f93c1b3b3e04c8a0c8937d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.74.0.tgz","fileCount":717,"integrity":"sha512-aK/smHli6DFHjMTBt6CHblgf0Niuip3++R7l+MDZ55WXI8k6wEulIYlV8NKeJ57w6W310pDFeCG0S3OY14DXjA==","signatures":[{"sig":"MEUCIBr6WfhSKJ+YBHh/wIWdcXYrj0i/K39mFMC8sy1SbEzhAiEA1LosNVkBsPck16zqFrwrEmE6bXbpc9qchZmwmCxA95M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4297535},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5c70b05ca63528b58894b65fdddfac2a13396889","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;try{const target=dll+'.locked-'+Date.now()+'-'+process.pid;fs.renameSync(dll,target);renamed++}catch(e){for(let i=0;i<20;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);break}catch(e2){wait(500)}}}}}}}catch(e){}trail('dll-renamed-sideways',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.74.0","@mneme-ai/core":"2.74.0","@mneme-ai/correlator":"2.74.0","@mneme-ai/embeddings":"2.74.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.74.0_1779949628056_0.5273554919578278","host":"s3://npm-registry-packages-npm-production"}},"2.75.0":{"name":"mneme-ai","version":"2.75.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.75.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"90bca0a7e1672c31fc182212d96385db137db04f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.75.0.tgz","fileCount":718,"integrity":"sha512-1etR7LCFzGGN2KFZx1Y9wnI8GJOZvxCriRtZkCzfEr7++dZmpMPAYJE2Gjc4yscCmG+78lGE6VUAMhe5FQx1CA==","signatures":[{"sig":"MEQCIFckSk7sgCFCaIRqGi6UUu+6vuFLcSsAEetATyPxC/+1AiBDBUwIt5GlnSkoNLVlhEgQ1+IftWD62W9OihXVaRpOPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4331393},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"add728dae1d70e881ffa40f17b9dba5991b73ff4","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"/**\\n * v2.75.0 — MNEME preinstall reaper (HANDLE-ORACLE + PID-LEASE + CMDLINE-MATCH).\\n *\\n * THE BUG THIS CLOSES. The old inline preinstall did `taskkill /F /IM\\n * mneme.exe /T` — but the Mneme daemon on Windows runs as\\n * `node.exe …\\\\bin\\\\mneme.js nucleus daemon`, whose IMAGE NAME is\\n * `node.exe`, NOT `mneme.exe`. So image-name kill never touched it. A\\n * daemon that loaded a native module (libvips-42.dll via the OPTIONAL\\n * @huggingface/transformers→sharp path) keeps that DLL memory-mapped and\\n * locked → `npm i -g mneme-ai` fails with EBUSY when it tries to\\n * overwrite the DLL.\\n *\\n * THE FIX — three deterministic, pure-JS layers (no native, no deps):\\n *\\n *   1. PID-LEASE          read ~/.mneme-global/heartbeats/*.beat — every\\n *                         live Mneme process leases its {pid, holdsPaths}\\n *                         there. Authoritative for daemons that registered.\\n *\\n *   2. CMDLINE-MATCH      query the OS process table (wmic → PowerShell on\\n *                         Windows; `ps` on POSIX) and kill any process whose\\n *                         COMMAND LINE looks like a Mneme daemon\\n *                         (`mneme.js`/`nucleus daemon`) even if it never\\n *                         wrote a heartbeat (old version, crashed registry,\\n *                         deleted beat file). This is the real node.exe fix.\\n *\\n *   3. HANDLE-ORACLE      replace the old blind `wait(300)`/`wait(500)` with\\n *                         a DETERMINISTIC gate: loop `fs.openSync(dll,'r+')`\\n *                         (exclusive on Windows) and proceed the instant the\\n *                         OS confirms the handle is free — proof, not hope.\\n *                         Falls back to the v2.19.61 rename-sideways trick if\\n *                         the handle never frees.\\n *\\n * CONTRACT: this script must NEVER block an install. Every path is wrapped\\n * best-effort and the process ALWAYS exits 0. It depends on ZERO node_modules\\n * (preinstall runs before deps are installed) — node builtins only. It is\\n * ALSO importable: `require()` exposes the pure functions for the test suite\\n * without running the IO side effects (guarded by require.main === module).\\n */\\n\\n\\\"use strict\\\";\\n\\nconst fs = require(\\\"node:fs\\\");\\nconst path = require(\\\"node:path\\\");\\nconst os = require(\\\"node:os\\\");\\nconst { spawnSync } = require(\\\"node:child_process\\\");\\nconst crypto = require(\\\"node:crypto\\\");\\n\\nconst IS_WIN = process.platform === \\\"win32\\\";\\n\\n/* ── tiny helpers ─────────────────────────────────────────────────────── */\\n\\n/** Bounded synchronous sleep. preinstall must be synchronous (npm waits on\\n *  the process), so we busy-wait — but the HANDLE-ORACLE exits early the\\n *  instant the lock frees, so total spin time is normally a few ms. */\\nfunction busyWait(ms) {\\n  const end = Date.now() + Math.max(0, ms);\\n  while (Date.now() < end) { /* spin */ }\\n}\\n\\nfunction organDir() { return path.join(os.homedir(), \\\".mneme-global\\\"); }\\nfunction heartbeatDir() { return path.join(organDir(), \\\"heartbeats\\\"); }\\n\\n/* ── PURE FUNCTION 1: does a command line look like a Mneme daemon? ────────\\n *\\n * The daemon is spawned as `node …/bin/mneme.js nucleus daemon [--detach]`\\n * (see nucleus_daemon.ts). We match the SCRIPT path + the daemon subcommand,\\n * NOT a bare \\\"mneme\\\" substring (which would false-positive on, say, an editor\\n * opened on a file called mneme.ts, or this very preinstall process). */\\nfunction matchesMnemeDaemonCmdline(cmdline) {\\n  if (typeof cmdline !== \\\"string\\\" || cmdline.length === 0) return false;\\n  const c = cmdline.toLowerCase();\\n  // Never match the installer/preinstall itself.\\n  if (c.includes(\\\"preinstall-mneme\\\") || c.includes(\\\"postinstall-mneme\\\")) return false;\\n  // Must reference the mneme CLI entrypoint (bin/mneme.js or a `mneme` shim\\n  // invoking a .js) AND a daemon-shaped subcommand.\\n  const refsMnemeJs = /(^|[\\\\\\\\/\\\\s\\\"'])mneme\\\\.js([\\\\s\\\"']|$)/.test(c) || c.includes(\\\"bin\\\\\\\\mneme.js\\\") || c.includes(\\\"bin/mneme.js\\\") || c.includes(\\\"mneme-ai\\\");\\n  const isDaemonish = c.includes(\\\"nucleus\\\") || c.includes(\\\"daemon\\\") || c.includes(\\\"--detach\\\");\\n  return refsMnemeJs && isDaemonish;\\n}\\n\\n/* ── PURE FUNCTION 2: parse the Windows `wmic … /format:csv` table ────────\\n *\\n * wmic CSV columns are: Node,CommandLine,ProcessId (header order varies, so\\n * we locate columns by header name). CommandLine itself can contain commas,\\n * so we DON'T naive-split: we take the FIRST field (Node=hostname) and the\\n * LAST field (ProcessId) and treat everything between as the command line. */\\nfunction parseWmicCsv(stdout) {\\n  if (typeof stdout !== \\\"string\\\") return [];\\n  const lines = stdout.split(/\\\\r?\\\\n/).map((l) => l.trim()).filter(Boolean);\\n  if (lines.length < 2) return [];\\n  // Find header row (contains \\\"ProcessId\\\").\\n  let headerIdx = lines.findIndex((l) => /ProcessId/i.test(l) && l.includes(\\\",\\\"));\\n  if (headerIdx < 0) return [];\\n  const out = [];\\n  for (let i = headerIdx + 1; i < lines.length; i++) {\\n    const row = lines[i];\\n    const first = row.indexOf(\\\",\\\");\\n    const last = row.lastIndexOf(\\\",\\\");\\n    if (first < 0 || last <= first) continue;\\n    const pid = parseInt(row.slice(last + 1).trim(), 10);\\n    const cmdline = row.slice(first + 1, last).trim();\\n    if (Number.isFinite(pid) && pid > 0) out.push({ pid, cmdline });\\n  }\\n  return out;\\n}\\n\\n/* ── PURE FUNCTION 3: parse PowerShell CSV (ProcessId,CommandLine) ──────── */\\nfunction parsePowershellCsv(stdout) {\\n  if (typeof stdout !== \\\"string\\\") return [];\\n  const lines = stdout.split(/\\\\r?\\\\n/).map((l) => l.trim()).filter(Boolean);\\n  const out = [];\\n  for (const line of lines) {\\n    // \\\"<pid>\\\",\\\"<cmdline maybe with commas>\\\"\\n    const m = line.match(/^\\\"?(\\\\d+)\\\"?\\\\s*,\\\\s*\\\"?(.*?)\\\"?$/);\\n    if (m) {\\n      const pid = parseInt(m[1], 10);\\n      if (Number.isFinite(pid) && pid > 0) out.push({ pid, cmdline: m[2] || \\\"\\\" });\\n    }\\n  }\\n  return out;\\n}\\n\\n/* ── PURE FUNCTION 4: parse POSIX `ps -eo pid=,args=` ─────────────────────  */\\nfunction parsePosixPs(stdout) {\\n  if (typeof stdout !== \\\"string\\\") return [];\\n  const out = [];\\n  for (const line of stdout.split(/\\\\r?\\\\n/)) {\\n    const t = line.trim();\\n    if (!t) continue;\\n    const m = t.match(/^(\\\\d+)\\\\s+(.*)$/);\\n    if (m) {\\n      const pid = parseInt(m[1], 10);\\n      if (Number.isFinite(pid) && pid > 0) out.push({ pid, cmdline: m[2] });\\n    }\\n  }\\n  return out;\\n}\\n\\n/* ── PURE FUNCTION 5: select daemon PIDs to kill (exclude self) ──────────── */\\nfunction selectDaemonPids(procs, selfPid) {\\n  if (!Array.isArray(procs)) return [];\\n  const seen = new Set();\\n  const out = [];\\n  for (const p of procs) {\\n    if (!p || typeof p.pid !== \\\"number\\\" || p.pid <= 0) continue;\\n    if (p.pid === selfPid) continue;\\n    if (!matchesMnemeDaemonCmdline(p.cmdline)) continue;\\n    if (seen.has(p.pid)) continue;\\n    seen.add(p.pid);\\n    out.push(p.pid);\\n  }\\n  return out;\\n}\\n\\n/* ── PURE FUNCTION 6: known libvips/native DLL candidate paths ───────────── */\\nfunction libvipsDllCandidates(npmGlobalPkgDir, isWindows) {\\n  if (!isWindows) return [];\\n  const nm = path.join(npmGlobalPkgDir, \\\"node_modules\\\");\\n  return [\\n    path.join(nm, \\\"@img\\\", \\\"sharp-libvips-win32-x64\\\", \\\"lib\\\", \\\"libvips-42.dll\\\"),\\n    path.join(nm, \\\"@img\\\", \\\"sharp-libvips-win32-x64\\\", \\\"lib\\\", \\\"libvips-cpp-8.17.3.dll\\\"),\\n    path.join(nm, \\\"sharp\\\", \\\"build\\\", \\\"Release\\\", \\\"sharp-win32-x64.node\\\"),\\n  ];\\n}\\n\\n/* ── HANDLE-ORACLE: deterministic \\\"is this file unlocked?\\\" ────────────────\\n *\\n * On Windows, fs.openSync(path,'r+') fails with EBUSY/EPERM while another\\n * process holds the file mapped. Success = nobody holds it = safe to\\n * overwrite. We inject openFn for testing. Returns true if free / absent. */\\nfunction tryExclusiveOpen(filePath, openFn) {\\n  const open = openFn || ((p) => { const fd = fs.openSync(p, \\\"r+\\\"); fs.closeSync(fd); });\\n  try {\\n    if (!fs.existsSync(filePath)) return true; // nothing to lock\\n  } catch { /* fall through to open attempt */ }\\n  try { open(filePath); return true; }\\n  catch { return false; }\\n}\\n\\n/** Loop tryExclusiveOpen until released or tries exhausted. Deterministic\\n *  proof-of-release; returns the moment the OS frees the handle. */\\nfunction waitForHandleRelease(filePath, opts) {\\n  const o = opts || {};\\n  const tries = typeof o.tries === \\\"number\\\" ? o.tries : 40;\\n  const intervalMs = typeof o.intervalMs === \\\"number\\\" ? o.intervalMs : 50;\\n  const openFn = o.openFn;\\n  const sleep = o.sleep || busyWait;\\n  for (let i = 1; i <= tries; i++) {\\n    if (tryExclusiveOpen(filePath, openFn)) return { released: true, attempts: i };\\n    if (i < tries) sleep(intervalMs);\\n  }\\n  return { released: false, attempts: tries };\\n}\\n\\n/* ── IO: read PID leases from the heartbeat registry ─────────────────────── */\\nfunction readHeartbeatLeases(dir) {\\n  const d = dir || heartbeatDir();\\n  const out = [];\\n  let entries;\\n  try { entries = fs.readdirSync(d); } catch { return out; }\\n  for (const f of entries) {\\n    if (!f.endsWith(\\\".beat\\\")) continue;\\n    try {\\n      const beat = JSON.parse(fs.readFileSync(path.join(d, f), \\\"utf8\\\"));\\n      if (typeof beat.pid === \\\"number\\\" && beat.pid > 0) {\\n        out.push({ pid: beat.pid, holdsPaths: Array.isArray(beat.holdsPaths) ? beat.holdsPaths : [], beatFile: path.join(d, f) });\\n      }\\n    } catch { /* corrupt — skip */ }\\n  }\\n  return out;\\n}\\n\\n/* ── IO: query the OS process table (best-effort) ────────────────────────── */\\nfunction queryProcessTable() {\\n  try {\\n    if (IS_WIN) {\\n      // Prefer wmic (fast, present on most Windows); fall back to PowerShell\\n      // CIM (wmic is removed on some Win11 builds).\\n      const w = spawnSync(\\\"wmic\\\", [\\\"process\\\", \\\"get\\\", \\\"Name,ProcessId,CommandLine\\\", \\\"/format:csv\\\"],\\n        { shell: true, windowsHide: true, timeout: 6000, encoding: \\\"utf8\\\" });\\n      if (w.status === 0 && typeof w.stdout === \\\"string\\\" && /ProcessId/i.test(w.stdout)) {\\n        return parseWmicCsv(w.stdout);\\n      }\\n      const ps = spawnSync(\\\"powershell\\\",\\n        [\\\"-NoProfile\\\", \\\"-NonInteractive\\\", \\\"-Command\\\",\\n         \\\"Get-CimInstance Win32_Process -Filter \\\\\\\"Name='node.exe'\\\\\\\" | Select-Object ProcessId,CommandLine | ConvertTo-Csv -NoTypeInformation\\\"],\\n        { shell: false, windowsHide: true, timeout: 8000, encoding: \\\"utf8\\\" });\\n      if (typeof ps.stdout === \\\"string\\\") return parsePowershellCsv(ps.stdout);\\n      return [];\\n    }\\n    const r = spawnSync(\\\"ps\\\", [\\\"-eo\\\", \\\"pid=,args=\\\"], { timeout: 6000, encoding: \\\"utf8\\\" });\\n    if (typeof r.stdout === \\\"string\\\") return parsePosixPs(r.stdout);\\n    return [];\\n  } catch { return []; }\\n}\\n\\n/* ── IO: kill a list of PIDs (Windows-correct taskkill /F /PID) ──────────── */\\nfunction killPids(pids, isWindows) {\\n  const win = typeof isWindows === \\\"boolean\\\" ? isWindows : IS_WIN;\\n  const out = [];\\n  for (const pid of pids || []) {\\n    if (typeof pid !== \\\"number\\\" || pid <= 0 || pid === process.pid) { out.push({ pid, killed: false, reason: \\\"skip\\\" }); continue; }\\n    try {\\n      if (win) {\\n        const r = spawnSync(\\\"taskkill\\\", [\\\"/F\\\", \\\"/PID\\\", String(pid), \\\"/T\\\"], { shell: true, windowsHide: true, timeout: 4000, stdio: \\\"ignore\\\" });\\n        out.push({ pid, killed: r.status === 0 });\\n      } else {\\n        try { process.kill(pid, \\\"SIGTERM\\\"); } catch { /* */ }\\n        busyWait(120);\\n        try { process.kill(pid, \\\"SIGKILL\\\"); } catch { /* */ }\\n        out.push({ pid, killed: true });\\n      }\\n    } catch { out.push({ pid, killed: false, reason: \\\"throw\\\" }); }\\n  }\\n  return out;\\n}\\n\\n/* ── HMAC-chained trail (tamper-evident install breadcrumb) ──────────────── */\\nfunction makeTrail(organ, version) {\\n  const trailPath = path.join(organ, \\\"preinstall-trail.jsonl\\\");\\n  const secret = process.env[\\\"MNEME_PREINSTALL_TRAIL_SECRET\\\"] || \\\"mneme-preinstall-trail-v1\\\";\\n  const lastSig = () => {\\n    try {\\n      if (!fs.existsSync(trailPath)) return \\\"genesis\\\";\\n      const lines = fs.readFileSync(trailPath, \\\"utf8\\\").trim().split(\\\"\\\\n\\\").filter(Boolean);\\n      if (lines.length === 0) return \\\"genesis\\\";\\n      const last = JSON.parse(lines[lines.length - 1]);\\n      return typeof last.sig === \\\"string\\\" ? last.sig : \\\"genesis\\\";\\n    } catch { return \\\"genesis\\\"; }\\n  };\\n  return (step, ok, details) => {\\n    try {\\n      const prevSig = lastSig();\\n      const body = { v: 2, ts: new Date().toISOString(), version, step, ok, ...(details ? { details } : {}), pid: process.pid, prevSig };\\n      const sig = crypto.createHmac(\\\"sha256\\\", secret).update(prevSig + \\\"::\\\" + JSON.stringify(body)).digest(\\\"hex\\\");\\n      fs.appendFileSync(trailPath, JSON.stringify({ ...body, sig }) + \\\"\\\\n\\\", \\\"utf8\\\");\\n    } catch { /* trail is best-effort */ }\\n  };\\n}\\n\\n/* ── ORCHESTRATOR ─────────────────────────────────────────────────────────  */\\nfunction runPreinstall(opts) {\\n  const o = opts || {};\\n  const home = os.homedir();\\n  const organ = o.organDir || organDir();\\n  const beatDir = o.heartbeatDir || heartbeatDir();\\n  // Injection points (default to real IO; tests override for hermeticity).\\n  const queryProcs = o.queryProcs || queryProcessTable;\\n  const killFn = o.killFn || killPids;\\n  const version = process.env[\\\"npm_package_version\\\"] || \\\"unknown\\\";\\n  const result = { ok: true, version, killedPids: [], handleOracle: [], renamed: 0, swept: 0, leasePids: [], cmdlinePids: [] };\\n  try { if (!fs.existsSync(organ)) fs.mkdirSync(organ, { recursive: true, mode: 0o700 }); } catch { /* */ }\\n  const trail = makeTrail(organ, version);\\n  trail(\\\"preinstall-start\\\", true, { v: \\\"2.75.0\\\", reaper: true });\\n\\n  // 1. announce incoming install (other Mneme processes back off on seeing this).\\n  try {\\n    fs.writeFileSync(path.join(organ, \\\"install-incoming.flag\\\"),\\n      JSON.stringify({ v: 2, announcedAt: new Date().toISOString(), announcerPid: process.pid, reason: \\\"preinstall-hook\\\" }),\\n      { encoding: \\\"utf8\\\", mode: 0o600 });\\n    trail(\\\"flag-written\\\", true);\\n  } catch { trail(\\\"flag-written\\\", false); }\\n\\n  // 2. image-name kill (legacy; catches a real mneme.exe shim if one exists).\\n  if (IS_WIN && o.imageKill !== false) {\\n    try { spawnSync(\\\"taskkill\\\", [\\\"/F\\\", \\\"/IM\\\", \\\"mneme.exe\\\", \\\"/T\\\"], { shell: true, windowsHide: true, timeout: 5000, stdio: \\\"ignore\\\" }); } catch { /* */ }\\n  }\\n\\n  // 3. PID-LEASE: kill every daemon that leased a heartbeat (authoritative).\\n  const leases = readHeartbeatLeases(beatDir);\\n  const leasePids = leases.map((l) => l.pid).filter((p) => p !== process.pid);\\n  result.leasePids = leasePids.slice();\\n  for (const l of leases) { if (l.beatFile) { try { fs.unlinkSync(l.beatFile); } catch { /* */ } } }\\n  const killedLease = killFn(leasePids);\\n\\n  // 4. CMDLINE-MATCH: the real node.exe fix — kill daemons NOT in the\\n  //    registry (old version / crashed / deleted beat) by matching cmdline.\\n  const procs = queryProcs();\\n  const cmdlinePids = selectDaemonPids(procs, process.pid).filter((p) => !leasePids.includes(p));\\n  result.cmdlinePids = cmdlinePids.slice();\\n  const killedCmd = killFn(cmdlinePids);\\n  result.killedPids = killedLease.concat(killedCmd).filter((k) => k.killed).map((k) => k.pid);\\n  trail(\\\"daemons-reaped\\\", true, { lease: leasePids.length, cmdline: cmdlinePids.length, killed: result.killedPids.length });\\n\\n  // 5. HANDLE-ORACLE: deterministically wait for the native DLLs to free,\\n  //    then rename-sideways only if the lock genuinely persists.\\n  let renamed = 0;\\n  const dllPrefixes = o.npmGlobalDirs || defaultNpmGlobalDirs(home);\\n  for (const pkgDir of dllPrefixes) {\\n    for (const dll of libvipsDllCandidates(pkgDir, IS_WIN)) {\\n      let present = false;\\n      try { present = fs.existsSync(dll); } catch { /* */ }\\n      if (!present) continue;\\n      const gate = waitForHandleRelease(dll, { tries: 40, intervalMs: 50 });\\n      result.handleOracle.push({ dll, released: gate.released, attempts: gate.attempts });\\n      if (!gate.released) {\\n        // Lock never freed — fall back to the v2.19.61 rename-sideways trick\\n        // so npm can lay down the new DLL beside the locked (orphaned) one.\\n        try { fs.renameSync(dll, dll + \\\".locked-\\\" + Date.now() + \\\"-\\\" + process.pid); renamed++; } catch { /* */ }\\n      }\\n    }\\n  }\\n  result.renamed = renamed;\\n  trail(\\\"handle-oracle\\\", true, { checked: result.handleOracle.length, renamed });\\n\\n  // 6. sweep abandoned npm staging dirs (.mneme-ai-* leftovers).\\n  let swept = 0;\\n  try {\\n    for (const npmParent of (o.sweepDirs || defaultNpmNodeModules(home))) {\\n      let entries;\\n      try { entries = fs.readdirSync(npmParent); } catch { continue; }\\n      for (const entry of entries) {\\n        if (entry.startsWith(\\\".mneme-ai-\\\")) {\\n          try { fs.rmSync(path.join(npmParent, entry), { recursive: true, force: true }); swept++; } catch { /* */ }\\n        }\\n      }\\n    }\\n  } catch { /* */ }\\n  result.swept = swept;\\n  trail(\\\"staging-swept\\\", true, { swept });\\n  trail(\\\"preinstall-end\\\", true);\\n  return result;\\n}\\n\\n/* ── npm global location heuristics (Windows + POSIX, multi-version-mgr) ──── */\\nfunction defaultNpmGlobalDirs(home) {\\n  const dirs = [];\\n  const push = (p) => { if (p) dirs.push(path.join(p, \\\"mneme-ai\\\")); };\\n  if (IS_WIN) {\\n    push(path.join(home, \\\"AppData\\\", \\\"Roaming\\\", \\\"npm\\\", \\\"node_modules\\\"));\\n    push(path.join(path.dirname(process.execPath), \\\"node_modules\\\"));\\n  } else {\\n    push(\\\"/usr/local/lib/node_modules\\\");\\n    push(\\\"/usr/lib/node_modules\\\");\\n    push(path.join(home, \\\".npm-global\\\", \\\"node_modules\\\"));\\n  }\\n  return dirs;\\n}\\nfunction defaultNpmNodeModules(home) {\\n  if (IS_WIN) {\\n    return [path.join(home, \\\"AppData\\\", \\\"Roaming\\\", \\\"npm\\\", \\\"node_modules\\\"), path.join(path.dirname(process.execPath), \\\"node_modules\\\")];\\n  }\\n  return [\\\"/usr/local/lib/node_modules\\\", path.join(home, \\\".npm-global\\\", \\\"node_modules\\\")];\\n}\\n\\n/* ── exports (for the test suite) ─────────────────────────────────────────  */\\nmodule.exports = {\\n  matchesMnemeDaemonCmdline,\\n  parseWmicCsv,\\n  parsePowershellCsv,\\n  parsePosixPs,\\n  selectDaemonPids,\\n  libvipsDllCandidates,\\n  tryExclusiveOpen,\\n  waitForHandleRelease,\\n  readHeartbeatLeases,\\n  queryProcessTable,\\n  killPids,\\n  runPreinstall,\\n};\\n\\n\\ntry { runPreinstall(); } catch (_e) { /* never block install */ }\\nprocess.exit(0);\\n\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.75.0","@mneme-ai/core":"2.75.0","@mneme-ai/correlator":"2.75.0","@mneme-ai/embeddings":"2.75.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.75.0_1779956100495_0.21722395436124242","host":"s3://npm-registry-packages-npm-production"}},"2.75.1":{"name":"mneme-ai","version":"2.75.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.75.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"22e6c48c90d405683bdd58ba88460e0e2a5943d4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.75.1.tgz","fileCount":718,"integrity":"sha512-ocbEWFgygDgJ3FOIxgEKLBCqQkKNr2TcJDBikbXDMWbQVCvvb3pGNYVkHtX2Vp7qiEjtWq3Bh4Q7x9o6weZDvQ==","signatures":[{"sig":"MEUCIQCyu/Tphb3skRWl2wIDrfFsKhyOG5tB2t/xXpqdQs/pHwIgKwEI2af0Oz4Rntc6dkT3YwIERufXaxU9VegNYAgSfks=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4318750},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5acbf7cd0858beae6048b704408e40fc90de4e5d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};const isDaemon=(c)=>{c=(c||'').toLowerCase();if(!c)return false;if(c.includes('preinstall-mneme')||c.includes('postinstall-mneme'))return false;const refs=/(^|[\\\\\\\\/\\\\s\\\"'])mneme\\\\.js([\\\\s\\\"']|$)/.test(c)||c.includes('bin\\\\\\\\mneme.js')||c.includes('bin/mneme.js')||c.includes('mneme-ai');const dae=c.includes('nucleus')||c.includes('daemon')||c.includes('--detach');return refs&&dae};const killPid=(pid)=>{if(!pid||pid<=0||pid===process.pid)return;if(w){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'})}else{try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}}};if(w){spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'})}else{spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'})}let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){killPid(pid);try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped});let cmdKilled=0;try{let procs=[];if(w){let r=spawnSync('wmic',['process','get','Name,ProcessId,CommandLine','/format:csv'],{shell:true,windowsHide:true,timeout:6000,encoding:'utf8'});let txt=(r&&r.stdout)||'';if(/ProcessId/i.test(txt)){const lines=txt.split(/\\\\r?\\\\n/).map(l=>l.trim()).filter(Boolean);const hi=lines.findIndex(l=>/ProcessId/i.test(l)&&l.includes(','));for(let i=hi+1;i<lines.length;i++){const row=lines[i];const f=row.indexOf(',');const la=row.lastIndexOf(',');if(f<0||la<=f)continue;const pid=parseInt(row.slice(la+1).trim());const cmd=row.slice(f+1,la).trim();if(pid>0)procs.push({pid,cmd})}}else{const ps=spawnSync('powershell',['-NoProfile','-NonInteractive','-Command',\\\"Get-CimInstance Win32_Process -Filter \\\\\\\"Name='node.exe'\\\\\\\" | Select-Object ProcessId,CommandLine | ConvertTo-Csv -NoTypeInformation\\\"],{windowsHide:true,timeout:8000,encoding:'utf8'});for(const line of(((ps&&ps.stdout)||'').split(/\\\\r?\\\\n/))){const mm=line.match(/^\\\"?(\\\\d+)\\\"?\\\\s*,\\\\s*\\\"?(.*?)\\\"?$/);if(mm){const pid=parseInt(mm[1]);if(pid>0)procs.push({pid,cmd:mm[2]||''})}}}}else{const r=spawnSync('ps',['-eo','pid=,args='],{timeout:6000,encoding:'utf8'});for(const line of(((r&&r.stdout)||'').split(/\\\\r?\\\\n/))){const t=line.trim();const mm=t.match(/^(\\\\d+)\\\\s+(.*)$/);if(mm){const pid=parseInt(mm[1]);if(pid>0)procs.push({pid,cmd:mm[2]})}}}const seen=new Set();for(const p of procs){if(p.pid===process.pid||seen.has(p.pid))continue;if(isDaemon(p.cmd)){seen.add(p.pid);killPid(p.pid);cmdKilled++}}}catch(e){}trail('cmdline-reaped',true,{cmdKilled});let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.75.1","@mneme-ai/core":"2.75.1","@mneme-ai/correlator":"2.75.1","@mneme-ai/embeddings":"2.75.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.75.1_1779957495178_0.5218155406738332","host":"s3://npm-registry-packages-npm-production"}},"2.75.2":{"name":"mneme-ai","version":"2.75.2","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.75.2","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"16ec83a02bcae0a9ff95a481ced4a9f922d8ec46","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.75.2.tgz","fileCount":718,"integrity":"sha512-mTZ54Mq2jjoCfghvTlUJXgTe4h7jx2FtLuio67ZVDQO2jO6j8IY/F5/Phtk2dPYRqiXnlPkZrr2HBG7zlKwHLw==","signatures":[{"sig":"MEQCIFPcB+ZzuLMORitT8tsWj3NUd8kuujGSLuXsQPX1EoJUAiAGjHoysIoRdsuTuI3LOSqw4QBKDtcJGqtoVn5F8a2w6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4317840},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1976363fc105f2312bffec292c84701d0e2dd040","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.75.2","@mneme-ai/core":"2.75.2","@mneme-ai/correlator":"2.75.2","@mneme-ai/embeddings":"2.75.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.75.2_1779959215699_0.14455636331842392","host":"s3://npm-registry-packages-npm-production"}},"2.76.0":{"name":"mneme-ai","version":"2.76.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.76.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3e6a25bf8f5b71f834ecfc2a77296f42d69e20d7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.76.0.tgz","fileCount":722,"integrity":"sha512-2RtFajil6EuGcAxlEwENFIqvtGkcZgy8Bxrn6DCHp9EkHsIdeKmPdocv+Vm7R+v9vww0S4aJjBUrlJs4LJU/Og==","signatures":[{"sig":"MEUCIQC1HcIA8ZoyL+cTafeElcPjHc/3AJQcdSogXQeb1aX/6gIgC8RQ9BCL2m2rxSN2YsFxw/MnkMiBYET8nDNEfSFOKKw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4328629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4e0194693e4418df02656d9eccc69a72b4836f9a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.76.0","@mneme-ai/core":"2.76.0","@mneme-ai/correlator":"2.76.0","@mneme-ai/embeddings":"2.76.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.76.0_1779967157190_0.9818456219519902","host":"s3://npm-registry-packages-npm-production"}},"2.77.0":{"name":"mneme-ai","version":"2.77.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.77.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b26e47c6a55ff36f33c70868293945b979cac9eb","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.77.0.tgz","fileCount":734,"integrity":"sha512-Ty/vG432CeVOSFG2L6oskeNkM/kydzNZqAFZ/aRWOL6snOcuHP1l4yUI65B9Q+HQnJAL6UlOaegf6YH5+fQWaQ==","signatures":[{"sig":"MEYCIQDFLENud3y+Yr1jN43QEKlSu7sQRKM6yU6cVZlGeTcxxgIhAKN1B+rwzQDji0yeCEvwrHrGaRVPTr/2pfNgmcx0lDmd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4372963},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0f3db3931fbe940ec3468c176fa134a973e49780","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.77.0","@mneme-ai/core":"2.77.0","@mneme-ai/correlator":"2.77.0","@mneme-ai/embeddings":"2.77.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.77.0_1779970194109_0.6324396006018449","host":"s3://npm-registry-packages-npm-production"}},"2.78.0":{"name":"mneme-ai","version":"2.78.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.78.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"54240f296b1515d0ba6df228d4e3dcbe965906c6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.78.0.tgz","fileCount":738,"integrity":"sha512-QhIfxP1YmCumfPrUnaRlDsFfYIrwRZUcOaiLDjNsGa3gbSnnOsOGHvP988FhTbrL92OE9jv58Jk/uzJ8/4G+CA==","signatures":[{"sig":"MEQCIH2P6mnW0PS7J5VX5gMub7iyQ3UPXjiphmlYAllolHW3AiBEvAJmEg8B3CHandJyEAFEi9p7uIhahP2b77zOvLpJfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4383218},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e264ceaab2e582e030f0baf8c896c1761fdf8777","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.78.0","@mneme-ai/core":"2.78.0","@mneme-ai/correlator":"2.78.0","@mneme-ai/embeddings":"2.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.78.0_1779974411453_0.33984527012953314","host":"s3://npm-registry-packages-npm-production"}},"2.79.0":{"name":"mneme-ai","version":"2.79.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.79.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"99de729bcfd2a377c19507e9d81d9f1e9d38dccb","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.79.0.tgz","fileCount":742,"integrity":"sha512-vQxvnp3/rAIgsRbwEEq4h1aCXoTUX8wHztemgkVJu6FWU7BnU4J3jqDYXHf3+j52TzmOIR/+A+/pqKeiP5TFug==","signatures":[{"sig":"MEUCIQDE4oFsDD1HvUs2R726kZMVfh0iWOunUtsQYc2nRe2JrwIgGPFZW2ZCQ29/IyZAxfhTK2A3trf2FQGgKoksZfVJCrQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4393453},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"46428bf4fb81ef7c60b7242ccb4fd8dc90afaf0e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.79.0","@mneme-ai/core":"2.79.0","@mneme-ai/correlator":"2.79.0","@mneme-ai/embeddings":"2.79.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.79.0_1779977464718_0.5863375640905846","host":"s3://npm-registry-packages-npm-production"}},"2.80.0":{"name":"mneme-ai","version":"2.80.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.80.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d84fc6e6207f010db6e38e72e5dbb670d27a728e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.80.0.tgz","fileCount":746,"integrity":"sha512-Mki0fZ7TQP7FO9t01R0uCILgevkJjtU36lYDm0MRrUXDU8vyea23Tt+bEGgKGQJl91F9hBL+zCJed7/hxf5qiw==","signatures":[{"sig":"MEYCIQDsoOMzrIALdHWpAraB5BGsg4JuKMg8qesv+Poi2SAUPwIhAN4cMVwpZkk9qUwQP97hY7/sxzRovlAU9q4lKZbH6ws+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4404833},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d5f4673bf85878b822553308397aba9ad63b41fc","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.80.0","@mneme-ai/core":"2.80.0","@mneme-ai/correlator":"2.80.0","@mneme-ai/embeddings":"2.80.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.80.0_1779979438799_0.7228328775723263","host":"s3://npm-registry-packages-npm-production"}},"2.81.0":{"name":"mneme-ai","version":"2.81.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.81.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7a38ec4170e647f3d654abe6a214f0b58ed134b2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.81.0.tgz","fileCount":750,"integrity":"sha512-+SyMcAE/8g3fog4vsimD2A6VZp4IMrv1hfvuYxwQHOes0pcWuLF4hrZ/pfT1KBG8jbuDTyGJVMqOUED3npb/MA==","signatures":[{"sig":"MEQCIDT1zOQGpUEprVbmaf+byLpQ54KpkGrmXqzM9GlWPe8pAiAoLti1k2B5BJ0qbdZRyR7oyvj8RPZNCGMmJwQQ69EckQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4416550},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"30872df9d3792ae103f5325a9c0bab8884906c3e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.81.0","@mneme-ai/core":"2.81.0","@mneme-ai/correlator":"2.81.0","@mneme-ai/embeddings":"2.81.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.81.0_1779980778585_0.3672354162096183","host":"s3://npm-registry-packages-npm-production"}},"2.82.0":{"name":"mneme-ai","version":"2.82.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.82.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f7bde4eeb8c352e175f25f7e827b2654d00ff0df","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.82.0.tgz","fileCount":754,"integrity":"sha512-Pvr+TjKTgLWxCKkVUFYrvsBzdrwzqloVX6fcIdSZAgE3J4rD+ikCfpbjgeKWLCCTvo1E5So5gZyfVBPoy02k4g==","signatures":[{"sig":"MEYCIQCVEZIJKdq3+f4vYWa7eTLhebMydc97Y2/CDXPQsxOWoAIhAIY/80VnLzqBrg8vWObPujTYv4i49HtUF62n/T5ag+QB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4432323},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7d573fec9d231bf4693f3e37ab866f7a1b9d4a4f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.82.0","@mneme-ai/core":"2.82.0","@mneme-ai/correlator":"2.82.0","@mneme-ai/embeddings":"2.82.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.82.0_1779984788755_0.05562460306000405","host":"s3://npm-registry-packages-npm-production"}},"2.83.0":{"name":"mneme-ai","version":"2.83.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.83.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0e45a329ae465d88a8973f48aad2815fcff42170","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.83.0.tgz","fileCount":758,"integrity":"sha512-Gsd4f+9XbDkjjzOrSghl7/0H1J9MZtGHmScSgAxm/5gyS7JmvsR0l+qDrJ/6vJPpT0CO/fl1XmYps/1R+V3xgQ==","signatures":[{"sig":"MEQCICo9shnoo0l6lhEtoPBuhYFQgnX3qqk2jf51lB7rKSRVAiB4LsgP2Sz3zl2QRiwiC1NDsYmNJWSkkNDp8ZV90EJYTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4442231},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"85902b4870d0dfe7d2749ea4ade6dac286ba8f15","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.83.0","@mneme-ai/core":"2.83.0","@mneme-ai/correlator":"2.83.0","@mneme-ai/embeddings":"2.83.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.83.0_1779986337174_0.04535354161353378","host":"s3://npm-registry-packages-npm-production"}},"2.84.0":{"name":"mneme-ai","version":"2.84.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.84.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6b81383e29cc15afdaa6f6e1ad92c2cb8bbdf273","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.84.0.tgz","fileCount":758,"integrity":"sha512-iggg40zgdf1fuC2dP69pP8EXpi9qbtXp/dZvHR3AFFetaERFeIVyNWABYTPct6GhNT9deh9xma4rsB9L1c/C/g==","signatures":[{"sig":"MEYCIQD0FnK0FRw/H8AbhAS8xxQPoK7DTkO3TmhjjJn3eFoHhwIhANdX+f9AiPRCmbHG2X1l5T2pE0izTLEwsf9Ds/KZZEIc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4446446},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9987b1cd4ccef4f964cf68c86d5a0bb6030b3253","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.84.0","@mneme-ai/core":"2.84.0","@mneme-ai/correlator":"2.84.0","@mneme-ai/embeddings":"2.84.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.84.0_1779987744164_0.3751275663031919","host":"s3://npm-registry-packages-npm-production"}},"2.85.0":{"name":"mneme-ai","version":"2.85.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.85.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"903846eac06cae9e2f0638cd4622165a89713546","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.85.0.tgz","fileCount":758,"integrity":"sha512-3Gs5UWEpxBFH2NBkeN3T6bHsBFfemJEFHHT/qlOaOPcQ9upUeS8PzRZ8ToOJcXvTPFxAGJCW4Cb4LF8NHxCSjg==","signatures":[{"sig":"MEYCIQD4eNv99oHUB++iQR2cc+yOnCSZulU6hhhaEik1RhrYrwIhAKD3gxH8Ap8mlns+Nb215D/GRrSqNdhCAGd0LrqO0AS1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4446446},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"dd459904220aeea79998e4ec33f41b64cf508ee0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.85.0","@mneme-ai/core":"2.85.0","@mneme-ai/correlator":"2.85.0","@mneme-ai/embeddings":"2.85.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.85.0_1779989321219_0.6873319796962256","host":"s3://npm-registry-packages-npm-production"}},"2.86.0":{"name":"mneme-ai","version":"2.86.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.86.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"882f4a2066f8d0d2281957aaa2d34922d4b0917b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.86.0.tgz","fileCount":762,"integrity":"sha512-+Y66lcWUPtMP4J730JK3kRUIFmv0Z2LDYQnaKVivmvxSPSjc62hnRMY9fX9F+I8TLm/uwsWdCVuHMkZaGEE9Aw==","signatures":[{"sig":"MEQCIHDDDldfP0kPzclMR4+LpzYJsg0LJOhZ4s/RQ8C4z04KAiBDnUJrZMPBdCjyuD0Qw0+KUCHj0gNrhcnabgnfQpJGnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4459740},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"096aed0934c689d24b873aeb4cb2c8fba32e2f06","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.86.0","@mneme-ai/core":"2.86.0","@mneme-ai/correlator":"2.86.0","@mneme-ai/embeddings":"2.86.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.86.0_1779990893075_0.2981233331535198","host":"s3://npm-registry-packages-npm-production"}},"2.87.0":{"name":"mneme-ai","version":"2.87.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.87.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c3050f4dc7803d6b231cefa0bb074be460e3b6fa","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.87.0.tgz","fileCount":762,"integrity":"sha512-k8usIFmGGmVLo6Inf86+qztMZM2HfSB883mR/oJaFSjHIb365VV7CYerLKFW4PCGuS/OvxTQNaFTWbh7+YEoug==","signatures":[{"sig":"MEUCIAayS7cIBqUTMouKaPDmKah14zJh/OnPonLPLlG5ockDAiEAyOrVGnWSdAba28SceiMzdLw/QH0Z53crmzSlwpuOwro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4460839},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"04042cc096c61c668f4198c36bd3e5449364863e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.87.0","@mneme-ai/core":"2.87.0","@mneme-ai/correlator":"2.87.0","@mneme-ai/embeddings":"2.87.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.87.0_1779995183216_0.552181476457309","host":"s3://npm-registry-packages-npm-production"}},"2.88.0":{"name":"mneme-ai","version":"2.88.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.88.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b3e2c51441950327eef2b21d80049e97c06c94a6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.88.0.tgz","fileCount":762,"integrity":"sha512-BaOZDuEAT1FghpfiigNbB3rOJ23NvNaLgd2m4TyNi8Jd0sibOkUrQymDFjCm3xaL6phkC/LrmDkiCxNYgslKdA==","signatures":[{"sig":"MEQCIBxs+SYjKbh5jOzxvY5NHi0zKDl1FB7Oc6FF0M8S4L8ZAiBwCImIepRM1rMiB2Jj25g3R4qaW46bm8bloT0k/F4jxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4460766},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"185eb87a08605acd9afda9b25182602ec33c32c1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.88.0","@mneme-ai/core":"2.88.0","@mneme-ai/correlator":"2.88.0","@mneme-ai/embeddings":"2.88.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.88.0_1780028483544_0.1190417514515818","host":"s3://npm-registry-packages-npm-production"}},"2.89.0":{"name":"mneme-ai","version":"2.89.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.89.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"bd61a47a36c02c165ddf34aa4658190d38825c4c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.89.0.tgz","fileCount":762,"integrity":"sha512-N43MwJmRkrCXFUcGr/AhKGb2aQQZgARysbyPoO86WpavjFqlCTMNhOxFB6mxT8+zT5Art7pKN+JpbuYe/0KWtw==","signatures":[{"sig":"MEUCIGfGzQXp2UGT5uKbq+c3eQGj3DqzDOJ4WJvpkLJGAE+FAiEApMsd18cGDuP1N/Jp07yrwDtwkaeVZ9NgTSaijUEj43o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4460766},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4dfeb54ad4690f17c22db306183c1c48af914565","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.89.0","@mneme-ai/core":"2.89.0","@mneme-ai/correlator":"2.89.0","@mneme-ai/embeddings":"2.89.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.89.0_1780031180212_0.14444806938995436","host":"s3://npm-registry-packages-npm-production"}},"2.90.0":{"name":"mneme-ai","version":"2.90.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.90.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9551e80ce44af1f21517e19b1debfb0d77ba9935","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.90.0.tgz","fileCount":762,"integrity":"sha512-T0frt+VqQp2tnDkgIBlBvVBeI72i7XPP4m+wyIyfx5h+MV1NXPCJnosttK80hSLmKR/cs7NysLVd42UFQjKNZQ==","signatures":[{"sig":"MEQCIDgA68QPvJyv9ORKlOQepV/vDfHX1gxEyxMVKHE1Lo3dAiBe0cAqA7bxG8+/CnGXGGgXC4JlmLiBVwCKHoHcNPX+Lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4461764},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8164aa93465dc3c851e3bc6e2c2c784e303ad827","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.90.0","@mneme-ai/core":"2.90.0","@mneme-ai/correlator":"2.90.0","@mneme-ai/embeddings":"2.90.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.90.0_1780033323172_0.38514340440281525","host":"s3://npm-registry-packages-npm-production"}},"2.91.0":{"name":"mneme-ai","version":"2.91.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.91.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"788a3619e52ce1de7bdb5e1642fa5454d7c82073","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.91.0.tgz","fileCount":762,"integrity":"sha512-idqACxUkNITpu7lvOiwpRXgiCtxqTEnvELhLnEc1f3CfNrZ7W3fnlv+KSbR4lSBP3S85bE+fhkC9I85EWaD6EQ==","signatures":[{"sig":"MEQCIAMo88bzFuzlNZUUTFzUOBoFjU/o+UnXu1KExjPT32UxAiAFXuVH7x7YwFTUa11aAfcKj+A+P8nq01mn/oKuHK4JVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4461764},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e6af9603aaaaeee8d5b10713623b77a0463627e6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.91.0","@mneme-ai/core":"2.91.0","@mneme-ai/correlator":"2.91.0","@mneme-ai/embeddings":"2.91.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.91.0_1780040957361_0.6124216357017482","host":"s3://npm-registry-packages-npm-production"}},"2.92.0":{"name":"mneme-ai","version":"2.92.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.92.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e149dc4bef8f819ebe32a0888892dee7ef46b8fa","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.92.0.tgz","fileCount":762,"integrity":"sha512-wI0NGf6YAG1RTOVDX+AbRyM/Y0JovOhbzY1Yj5FgPpkjmSsyp12vimpbOm5nXxEs7iM9TVKtl1Lmnmbj3Uagdw==","signatures":[{"sig":"MEQCIDbE4rL1t4/uxkf6iCnEF8/PJ02BCuOKYVsH8oIoGuxeAiB005cG96ULXckVD2fczgxyhVkThewoTvxdAndMJHKP1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4461764},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"09a997581b7c188b3c3c5e9bec6190737caa867c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.92.0","@mneme-ai/core":"2.92.0","@mneme-ai/correlator":"2.92.0","@mneme-ai/embeddings":"2.92.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.92.0_1780043102848_0.12409157983759767","host":"s3://npm-registry-packages-npm-production"}},"2.93.0":{"name":"mneme-ai","version":"2.93.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.93.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"38ce750a2354705a0ba72f1c8f6c8434ffddc013","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.93.0.tgz","fileCount":762,"integrity":"sha512-PAGkA3TIFL+xzUWYe/1NUE1ymw9lGDwsrg8biQ1SHkWuzTmT4AFqAML8ZbkLZYmE2MyHA8veVQzxx2FclmTt0Q==","signatures":[{"sig":"MEQCIHHCtg/rF51VpcRTGLcQVRjgRj23WDOL1TxwZlTcaoLNAiBLftWBZyZvrUL2k7UDMyc3ZoLfjulHHfwpKvce+n0Kww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4461764},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"69b0e7561fe23105fb274c482c92ac3e27afd6d8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.93.0","@mneme-ai/core":"2.93.0","@mneme-ai/correlator":"2.93.0","@mneme-ai/embeddings":"2.93.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.93.0_1780046024945_0.9216444241179278","host":"s3://npm-registry-packages-npm-production"}},"2.94.0":{"name":"mneme-ai","version":"2.94.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.94.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b206be7446eefb8fb7265d9a026a2423f56f5caa","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.94.0.tgz","fileCount":762,"integrity":"sha512-lYN8mgsHDrMqFcTWOVN90LEz8nOVzALaClRLF2aqH4TEcwf99jKMj3bkYqLDEtKbY/9HVBu9LHOJpXy7cef2XQ==","signatures":[{"sig":"MEUCIGPyNvT0rjrrYb5XIwakl9G6aud4nzFKo2TwO5Br99uKAiEAmP861YECKpiry6i/qUvFlrfNt9NBpBz06RJwNrEQeIE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4461764},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e53b1ba544a69f2f8d0816da7f37acd1fe1aac83","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.94.0","@mneme-ai/core":"2.94.0","@mneme-ai/correlator":"2.94.0","@mneme-ai/embeddings":"2.94.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.94.0_1780048023561_0.9729201081004888","host":"s3://npm-registry-packages-npm-production"}},"2.95.0":{"name":"mneme-ai","version":"2.95.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.95.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a6d5a99a2426cbce1654a3b6ed743b8e4f23f9ad","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.95.0.tgz","fileCount":762,"integrity":"sha512-COqTg2VRMruHulyUEpmnk8vcxh1T34d81kAWD3jfW0pb3PTQ9nikJdZ1ajO4KurTldtdNPBWLzNMQnpsj/jeQw==","signatures":[{"sig":"MEUCIBVc4zfm52+Gqy9BjH8f+7SlqsTUR3KEuPPL5i8+ZUr0AiEA4uqVW0GYGcnM4aKSM+ZfQFgi6Een0BU4tsY0Bs9Ylrc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4466512},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d612a89a4875a82433922a6a9d92eadc5ca06da5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.95.0","@mneme-ai/core":"2.95.0","@mneme-ai/correlator":"2.95.0","@mneme-ai/embeddings":"2.95.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.95.0_1780127911090_0.03721832569433703","host":"s3://npm-registry-packages-npm-production"}},"2.96.0":{"name":"mneme-ai","version":"2.96.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.96.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"55bbd49adc95402ffa1290e94d92479d15156d52","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.96.0.tgz","fileCount":766,"integrity":"sha512-nIKpFLqFRTWj0AUAWZ4ylCD9GafFMnox3j7Ky2UvHLdH4/gvMO8hdKYPVB4J4XCh82vEYYTetLhbgLJMcO4XVQ==","signatures":[{"sig":"MEQCIAFwtYPMl1Ms6YIU+Q2gLHbmrHlPQSM3p4IBNDEX+XPpAiBU3p0OVB5R1mDr9hnWsx4bHvLhl9VoFf6hV4NQHd5vTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4480077},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b427bc07e2927eaaa5f6df562896d025ffaac7d6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.96.0","@mneme-ai/core":"2.96.0","@mneme-ai/correlator":"2.96.0","@mneme-ai/embeddings":"2.96.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.96.0_1780130416005_0.2574468196143189","host":"s3://npm-registry-packages-npm-production"}},"2.97.0":{"name":"mneme-ai","version":"2.97.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.97.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d194e385b905ca07f6f22f0fdda4d4106641c9b3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.97.0.tgz","fileCount":766,"integrity":"sha512-bhlbdcg/rXJkG7Y/FIGi4SMAD6Rq2OUmcnBSyHSGbqxxwTFzjefAZ1jyPeg82a8iAB1fQGhB5JcQmEV+13W49w==","signatures":[{"sig":"MEYCIQDdvSIkRVvj0LMWdgrHfZsegdfjloN2bm/sGIDDX1AZsgIhAJlaKwnfu9VyGWoCsaQwASlP8IjBe++6w6zN2GACG/ZL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4484494},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4e164a144160ca3bb80355510272eb745e4bd035","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.97.0","@mneme-ai/core":"2.97.0","@mneme-ai/correlator":"2.97.0","@mneme-ai/embeddings":"2.97.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.97.0_1780131225906_0.4958181930614587","host":"s3://npm-registry-packages-npm-production"}},"2.98.0":{"name":"mneme-ai","version":"2.98.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.98.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2a0e6de733d84e64739fc4984cbb316476014246","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.98.0.tgz","fileCount":766,"integrity":"sha512-8WA/s6JZaerBRA2TsQ3vmeUX8p5V73L+P5la88RCn76u3dJU8a6Ulafx9NS9LpwR7kb5V8BQQCM4CVGZTEDjRQ==","signatures":[{"sig":"MEUCIQD7CULv7Hc9QIDjD0fT1F57iV6P7iqbh9YzEYj3WUYV0gIgEn/2OCBAENVsnbWYRQOfEL/xd4eUgQ4NIkzfUMpbQuo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4489739},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4a985cf47b330ac8b27de3550b75b922a68b7bea","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.98.0","@mneme-ai/core":"2.98.0","@mneme-ai/correlator":"2.98.0","@mneme-ai/embeddings":"2.98.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.98.0_1780135070713_0.698881232897383","host":"s3://npm-registry-packages-npm-production"}},"2.99.0":{"name":"mneme-ai","version":"2.99.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.99.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ce397962b06b0c85f9cfe5531daa6e77cf889e24","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.99.0.tgz","fileCount":766,"integrity":"sha512-xJUaAJFr6ExZiKbcg+LN+8t1yn00tNjCi8YgvBE+29LSYxQZLzU6kj7Hf8Kd9/iTh7xmZbj5VQDb9dfececbDg==","signatures":[{"sig":"MEUCICrg1UBvieP06TIjqkXSQHC/euLni89oj4XT72bxk/FxAiEA0sxi7WnX/6hkTlQv+Jqtfzwm4k9L1q2NZz6/8R9tGq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4501066},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5f39935a46805adf24c2c84bae48c8387854bf1d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.99.0","@mneme-ai/core":"2.99.0","@mneme-ai/correlator":"2.99.0","@mneme-ai/embeddings":"2.99.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.99.0_1780135912459_0.6885956107752857","host":"s3://npm-registry-packages-npm-production"}},"2.100.0":{"name":"mneme-ai","version":"2.100.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.100.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"be587ab5a0101cf2a5025c0c35b18c4d34e1dc1e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.100.0.tgz","fileCount":766,"integrity":"sha512-HrV7yRHjLS9EupAGRp0De2ngJ4lS+kXQkLzMKnOfOMnRqdQ7LjtZf7rBA54AdFjk+cD51nU2SCjPRI0aQ5EKJw==","signatures":[{"sig":"MEYCIQDrwMKV/fG/AWRaKdkkYFHblRvSU8w3f4igHkW15MUMfQIhAK8Qv4gDvymLPI6EQQiJR7/75NdRjcEhIM82GgLTzC+e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4506668},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9d93ad61fac98395d0b6832707a4bf56dc985da5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.100.0","@mneme-ai/core":"2.100.0","@mneme-ai/correlator":"2.100.0","@mneme-ai/embeddings":"2.100.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.100.0_1780136810706_0.8005664922576641","host":"s3://npm-registry-packages-npm-production"}},"2.101.0":{"name":"mneme-ai","version":"2.101.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.101.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3bf12bfed5e1b905e236522b551e59ffd88af424","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.101.0.tgz","fileCount":766,"integrity":"sha512-u4qJE2mRtiDKoviWKUxJE4cHKALhoqjQHgnUPHnabbeoMO8LlsgdTzkSgAkwJY51NkMjuP6YMZw+bYd9Qs18sg==","signatures":[{"sig":"MEQCIBBT4ZWFTe1QyEG8/2dvO5JdBKwOCKEl3tO71GkUwFl4AiB04JygMX6E7C4Vz8Os+nxOSBs5HGc07siYhD10oXWEAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4506668},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e9e44ff07bba0feea9ebe564ee545bec8e099526","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.101.0","@mneme-ai/core":"2.101.0","@mneme-ai/correlator":"2.101.0","@mneme-ai/embeddings":"2.101.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.101.0_1780138091418_0.2097322583034109","host":"s3://npm-registry-packages-npm-production"}},"2.102.0":{"name":"mneme-ai","version":"2.102.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.102.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e986b846e56d0332f0db01fd6e04316cdda2a16a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.102.0.tgz","fileCount":766,"integrity":"sha512-MUNSWwmMFO1wtAKrk2a/ekgpvZ2V1XWdr6c91vTovAgf4I+V4Rcv6Sqmv0Nyc+hCND/72pPqzp4uPjsPfdDDzQ==","signatures":[{"sig":"MEQCIGwHXOnxIAJNxY1EYFC5vaYil64ufQQ7GsufQpXETcXSAiAJQRlKA+hxDGXFmzzn+s8KJDJndpUmv282w7iuI0wn1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4511283},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"feb6f90c8e6044679d907f669a1e50356cbe2ca1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.102.0","@mneme-ai/core":"2.102.0","@mneme-ai/correlator":"2.102.0","@mneme-ai/embeddings":"2.102.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.102.0_1780139175884_0.9608972408573553","host":"s3://npm-registry-packages-npm-production"}},"2.103.0":{"name":"mneme-ai","version":"2.103.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.103.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"be19d70318738924a4ffdaa50484c1a0af40919e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.103.0.tgz","fileCount":770,"integrity":"sha512-6Yzci8qpuFRSBuDorLlw8WsETZClLj+YtHdgZJUmG2GUYZg+m/Dtn6+WN6FtBX6mVkNl2aaOapJ3/aCH4VJRMA==","signatures":[{"sig":"MEQCICaamMqpvZv1T4Ij+jEvh5mO6/R5F2A2mZ/IcVRMfr6xAiBEUatD8YGDL03zpqO4/S/G1SPNqm/Dz58dcDMPmyU3Fw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4525196},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"42d661a008761b8c39ae2dbc8024798d219e4dc5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.103.0","@mneme-ai/core":"2.103.0","@mneme-ai/correlator":"2.103.0","@mneme-ai/embeddings":"2.103.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.103.0_1780141046569_0.2874856042199505","host":"s3://npm-registry-packages-npm-production"}},"2.104.0":{"name":"mneme-ai","version":"2.104.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.104.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6f1a1e92183ec25cf048bec9e65d8d6af2f5cbb4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.104.0.tgz","fileCount":774,"integrity":"sha512-XoOq3TIB3RkdGPBJa+lPlRZ0id1UDw9fE4PsZ8Jw7G6ysnKiVZTN9ZlZp7QYWHJYhnDg2K7EAAKoSn9AKUtd3A==","signatures":[{"sig":"MEUCIQDUvLShDnCD4qeldMHG0koSqihtpQu5kMUVFvQajrPSWgIgXMlspT4lvafQXWZcslLwdPUrJgElSne9aeMDYfXMt4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4535853},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1cb72073315fee75a3289e057c048a28aa1919dd","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.104.0","@mneme-ai/core":"2.104.0","@mneme-ai/correlator":"2.104.0","@mneme-ai/embeddings":"2.104.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.104.0_1780142555499_0.5683403009654551","host":"s3://npm-registry-packages-npm-production"}},"2.105.0":{"name":"mneme-ai","version":"2.105.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.105.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4389c90e62ed26d08e1588565e86d90c87f30437","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.105.0.tgz","fileCount":774,"integrity":"sha512-lmOc5yOvQKRfkaqVPO4NcTogKFNSgs3prF88kkrrSN6OkZNg9Sz/fSUcwrIZBdMtvCYzHKRzA3U6CPV455+mBA==","signatures":[{"sig":"MEQCIDR5yzWfYmu/aRmST7UjSyIcmdxqgIgqj52/7iTuAKzJAiAvhkbjA/FThSZohgTXMPSJYM3jhkp97xQVkiN2nfoTuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4535853},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"fc1dfa9a04509012ae7631c7ade749cfe7767c86","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.105.0","@mneme-ai/core":"2.105.0","@mneme-ai/correlator":"2.105.0","@mneme-ai/embeddings":"2.105.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.105.0_1780143269263_0.41133013221402415","host":"s3://npm-registry-packages-npm-production"}},"2.106.0":{"name":"mneme-ai","version":"2.106.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.106.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"53543f3fe31ef6381cd3490a56cfc8045991e0ee","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.106.0.tgz","fileCount":778,"integrity":"sha512-k1wugsbN70Cr2PhK3LjW/FCKiN27NHNd4AUzNwGX/W64NPgnYlCI43UEgnFKKdVm8ugP/naSDmAur2s/y4q6hA==","signatures":[{"sig":"MEQCIETkIvm0hiET/DWLNsvj7xpPNho8Rbs/UiQ3sc9w6/xhAiA46cu2SdDdzvESFirmzPSF5gsK4ASQYdXiuNgs8M/afQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4552825},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a84d892981e3f11a8dd3f298a99400a6365effca","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.106.0","@mneme-ai/core":"2.106.0","@mneme-ai/correlator":"2.106.0","@mneme-ai/embeddings":"2.106.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.106.0_1780144104868_0.5058428926239609","host":"s3://npm-registry-packages-npm-production"}},"2.107.0":{"name":"mneme-ai","version":"2.107.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.107.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"72f48b6b0dcb194e75f2f4e8b24070b777be0164","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.107.0.tgz","fileCount":782,"integrity":"sha512-StH3sT12+jdwJTjaFrCmG7IbHeyNFsqg0fKpZqEq7gzhwbCH/G3EF28ZyW41w0ydXjHtSgjpeanhOJtp3+A4DQ==","signatures":[{"sig":"MEUCIEvJ02CRg8ouenOhGVYn00nLKqJQ1ReFGnSA48HUPNF0AiEA5vdoJklw/R7rJ1A8UfGHojTE2TJGL/xH1wx0hKHODpA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4569314},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"49b0ed9abea8e195765aec05c014d1b852294468","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.107.0","@mneme-ai/core":"2.107.0","@mneme-ai/correlator":"2.107.0","@mneme-ai/embeddings":"2.107.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.107.0_1780144950472_0.5137263201823483","host":"s3://npm-registry-packages-npm-production"}},"2.108.0":{"name":"mneme-ai","version":"2.108.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.108.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a2a570058a342b0b4da84ba82ff493ccc46d205c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.108.0.tgz","fileCount":786,"integrity":"sha512-cULr3xsHpJaP4w4yaUb2DYKpWHqV554m+7yVBGgH6UaEhD47/0frP0IsP0iLc/HRdhO7maToaERIRThX7RflFA==","signatures":[{"sig":"MEUCIQCAkwpYu1ZdXvcBzDjQJ8QUABn0pWJ9sf4/w86zMWwYpwIgOar0pyqepZuFQ0iCtGhBS9lelcwmabW6saKVkDkJe6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4583111},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8268d4a111ed37bc9321fe4d2e78ea5601753490","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.108.0","@mneme-ai/core":"2.108.0","@mneme-ai/correlator":"2.108.0","@mneme-ai/embeddings":"2.108.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.108.0_1780146744979_0.6586946390467019","host":"s3://npm-registry-packages-npm-production"}},"2.109.0":{"name":"mneme-ai","version":"2.109.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.109.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"192edf8d0f4dfafce2225f1760046a48b99e1feb","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.109.0.tgz","fileCount":790,"integrity":"sha512-9GnWg548hRA8W8cOLwWTnOw6cbrCdYZh+DQ+7PUtNnpVFa5t5jaHTDoKUXFpN7tYD6oyGRmEzDld87iMNbf2aw==","signatures":[{"sig":"MEUCIQDdMHmnIBRmC8z2yYgcYJd9GpDRFVSsAkrtIb07J9hxrwIgD/VfcqrgT7ulKZz9HwBTanBBWthNEoeHRfHti5I9Ehs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4592880},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e0fa7adc7b885a3447105a70df649b377726a4ee","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.109.0","@mneme-ai/core":"2.109.0","@mneme-ai/correlator":"2.109.0","@mneme-ai/embeddings":"2.109.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.109.0_1780147472108_0.4977468878527149","host":"s3://npm-registry-packages-npm-production"}},"2.110.0":{"name":"mneme-ai","version":"2.110.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.110.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"227a7c0d0287e8eba2694c395b136811ab225370","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.110.0.tgz","fileCount":794,"integrity":"sha512-44PIq9fqWDGCUI9jSxYise9Glzs9P/pWP4vSrW/9cOQWIZSPjLYHwTY6GzdgwG6UxQZ1rgEwASGBRyp2xfF1dg==","signatures":[{"sig":"MEUCIQCxWpDqC2V9z6M7RzOMolpx117Ih4V9qsq7GuqIT7jUwwIgeoGPiF9HYIDEAtBrLGAiXw7m5UyHzcX8cRiQ/6smGMA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4604702},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8e4bedff41036f06aa81a0799a0ae80ebd74e359","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.110.0","@mneme-ai/core":"2.110.0","@mneme-ai/correlator":"2.110.0","@mneme-ai/embeddings":"2.110.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.110.0_1780154791174_0.33262379242111795","host":"s3://npm-registry-packages-npm-production"}},"2.111.0":{"name":"mneme-ai","version":"2.111.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.111.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"30167b4508dcc662661a6c18be289418f5572fff","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.111.0.tgz","fileCount":798,"integrity":"sha512-Fsfv5TdSc0G+NYSPg9MclkpN+nbUY2LTITdY8EJGqUMa8Tw/3Vau8pyQK43sYt8D0mDDYH1iLhY2vafTCuxqlg==","signatures":[{"sig":"MEYCIQCidz+bwmtuSHbCnxCts69XPEchmour/FuRrCrpkBOF8gIhAJnEZTunLNB9wQIizoSY1kHS73SW89GAHYQy5Cvg4aXj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4615441},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"811aef80489c666aecd63934c6afb9db7eb7ea31","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.111.0","@mneme-ai/core":"2.111.0","@mneme-ai/correlator":"2.111.0","@mneme-ai/embeddings":"2.111.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.111.0_1780156604843_0.41439957403585015","host":"s3://npm-registry-packages-npm-production"}},"2.112.0":{"name":"mneme-ai","version":"2.112.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.112.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"95d1ff735468de9049ceda48388f8d747a3d33d9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.112.0.tgz","fileCount":798,"integrity":"sha512-m1y3iLYMtQIgPcidLEwY43jPWCMcM9otzSWg/MGZq/UyTjDrfT7VU1ku8ZogHAkDESEDmfTTBs6SqoXDgA7G6A==","signatures":[{"sig":"MEYCIQCJI0pWs21HIyLyisRTJVCZelhH5naO9eKVO4ZvpWzbDQIhAKcxWdAiF2UmlEqoSoHH+MZUeGLiXMq8KGwUnkfgOQVT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4616280},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"40fc1d1054442e99b8b975c37854c524850ce416","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.112.0","@mneme-ai/core":"2.112.0","@mneme-ai/correlator":"2.112.0","@mneme-ai/embeddings":"2.112.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.112.0_1780157809039_0.511702036208364","host":"s3://npm-registry-packages-npm-production"}},"2.113.0":{"name":"mneme-ai","version":"2.113.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.113.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5cd057d484e77ad869d976a67630b881f8921518","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.113.0.tgz","fileCount":798,"integrity":"sha512-1NCc1e0elXuXKJrCilx4uCf5Qj7jFs7oecGE7DLCvmHLifVFPVlG/zATrKIFqOx6/IxqEPvMlGwE0deX5iY13g==","signatures":[{"sig":"MEUCIC+wbsoNRs5rdKJX+AFcuBhZJgex6vseFJKJKaRA9k4DAiEAjHAFi68TUYdQylT6PKAcrzy6QggeJlaljROxzsm8Mrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4617314},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"35d5f0b29568314c8c4a3b82cdeb77b875595333","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.113.0","@mneme-ai/core":"2.113.0","@mneme-ai/correlator":"2.113.0","@mneme-ai/embeddings":"2.113.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.113.0_1780160491213_0.06587758853433745","host":"s3://npm-registry-packages-npm-production"}},"2.114.0":{"name":"mneme-ai","version":"2.114.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.114.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5664e1eb99b6a1c03918bf546b676c67906e3294","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.114.0.tgz","fileCount":798,"integrity":"sha512-vfUN8i0y5OXzfP0fw0t3A4awZ8xrQKOd1Ksa8ltTs2mr6uu069tEzSnKaVsbPIpXmv3uwxA4Jyd4riNXTskGYw==","signatures":[{"sig":"MEUCIFQ0BVgkKBN4V0MB2NRwAxMI7fHQi4Su+jr0vislXSncAiEAhAMipuM8FgAkT6HWiMFFmJ0c0tRVjaFaHwRTLPF6P1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4617869},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"342b9a4bafd60e6903ad4d717971eca8c02e3bc0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.114.0","@mneme-ai/core":"2.114.0","@mneme-ai/correlator":"2.114.0","@mneme-ai/embeddings":"2.114.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.114.0_1780165914143_0.9097309472044883","host":"s3://npm-registry-packages-npm-production"}},"2.115.0":{"name":"mneme-ai","version":"2.115.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.115.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b956bc063e502a0f2311514b76983fd7a87b4103","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.115.0.tgz","fileCount":802,"integrity":"sha512-ixQv28illh2mm0GV5XDjCJg91EqI5nddLB+Q4+oTEAofw5ttvbvvyj2GHc3byziXOdUrMST52nX8GTG1vclkXw==","signatures":[{"sig":"MEQCIAiYNjJoyfb1x5BAhEePS5JFrZzedjDp1MGn6UwNkBkfAiBuLttpSoVKOLqlpXDEyAlfZSzV65P6isOYl+OuIs/WLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4630431},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d7735f3defc5cc6a64a72e75f0af7bb3579ccc16","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.115.0","@mneme-ai/core":"2.115.0","@mneme-ai/correlator":"2.115.0","@mneme-ai/embeddings":"2.115.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.115.0_1780167395830_0.3412681734742793","host":"s3://npm-registry-packages-npm-production"}},"2.116.0":{"name":"mneme-ai","version":"2.116.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.116.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"51ed64de2687eb52aab0504614d92c63bb71edd0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.116.0.tgz","fileCount":806,"integrity":"sha512-g6lZmkh69fIv4MjhGOjg9G8g2gMPRV5FrdJ9ojG3dDIrXVEc8NltWMiWvPw7+EsTDVYkgWHKAHxpsVaWwly9KA==","signatures":[{"sig":"MEQCIAdCURQPK10EQuOE698NlsHcm9V9WDigdCA4SAhOgXeyAiBvddUTrVrKCR8cfAioQLbrRmAx3K6khyW4aamUSnKpGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4640878},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9c807e7650c92f2e1318797eeb5d96b636539084","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.116.0","@mneme-ai/core":"2.116.0","@mneme-ai/correlator":"2.116.0","@mneme-ai/embeddings":"2.116.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.116.0_1780168919878_0.23342282600308528","host":"s3://npm-registry-packages-npm-production"}},"2.117.0":{"name":"mneme-ai","version":"2.117.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.117.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"61ed57aa0a1f7342e3b88db6c5accffdf930cc4d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.117.0.tgz","fileCount":806,"integrity":"sha512-scGUwKt2a4NSBofRZFPCxMn59x76XtsKyt10wBvqWhDzgEs0I/nC4HL5STfpOm0iH9bl2BQB0H7XUfGhePsLkg==","signatures":[{"sig":"MEYCIQCcGhbjg+WNfuPXnhLfAYf2cO0/fHp4WsxwJO48IvGC7gIhALWz6drbgtE2GtcxHBQwJ8gv/F5QTywIpM6WgaWlt+wv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4646647},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"39eb70cb4755d7fa0a869ae8c884dc69bfa322e6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.117.0","@mneme-ai/core":"2.117.0","@mneme-ai/correlator":"2.117.0","@mneme-ai/embeddings":"2.117.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.117.0_1780170819294_0.7321850982364673","host":"s3://npm-registry-packages-npm-production"}},"2.118.0":{"name":"mneme-ai","version":"2.118.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.118.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3beda6c423d1572a1f3efe2dc442b5b1d402f22c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.118.0.tgz","fileCount":810,"integrity":"sha512-OdVDIJy0ZrV67is3hQDgxlo7EXNhW67tJonAXcaBOcoLwE/kKhMNC3sJcvd8uLa8+2V48xOA6OXQpIj8XpjpXQ==","signatures":[{"sig":"MEYCIQCKyQn0uPN0bkreC0S4XTcm0tY9I55DGWZMawLlDkwEwgIhAOiRUWfAPeKeUI+yv7pyzCUu4FtJ4hPyE0rC+5RQOdaY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4660761},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"dd417e3adafcbae5ca5d16bf346c53068321157a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.118.0","@mneme-ai/core":"^2.118.0","@mneme-ai/correlator":"^2.118.0","@mneme-ai/embeddings":"^2.118.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.118.0_1780173944351_0.646458908393035","host":"s3://npm-registry-packages-npm-production"}},"2.119.0":{"name":"mneme-ai","version":"2.119.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.119.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"bd39b2e9ceb9dea535bb7de2cdcb644e1094b44e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.119.0.tgz","fileCount":810,"integrity":"sha512-fo2WsyexHhoo6J8mC8/hPPnf48h6fM/M8AtAd+wLzNBVO6K/znQPGqACHrldxhdCdUMRbtaOgtV43stq+i3vTQ==","signatures":[{"sig":"MEUCIQDA7ut8v7S5dpG+7jGXlUognGBSjcEWXZOQtJTTCSSbeAIgDMAK5c4VWyhsxz7/Rqdkx+0+Y0kspT2JrJTYsYcuqkA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4662973},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"551655dfe3fb62cc98e303e67884aac68feaf000","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.119.0","@mneme-ai/core":"^2.119.0","@mneme-ai/correlator":"^2.119.0","@mneme-ai/embeddings":"^2.119.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.119.0_1780280678803_0.950938051126129","host":"s3://npm-registry-packages-npm-production"}},"2.120.0":{"name":"mneme-ai","version":"2.120.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.120.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f2988fa6b99369c621b97d81ff9bf3562f641c76","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.120.0.tgz","fileCount":814,"integrity":"sha512-MULcEjUPxygKqbaiZ5zj+bsuMQhd0n8HydmJTS0hKtBQZdzTDIhipLde2oaEkZVTTdBlEoTOX/Jb3oc/Q7b+iQ==","signatures":[{"sig":"MEQCICOJybawsxvcTlybGtimkFQ/HpQsqmsNchISE/HRAq4SAiAKk+RFxLyPa5tfH/f5hy5x4fc7lzX6DkLGoFlsuI8gyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4690930},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4c48bed705cc95559a5aa33a08a8e89f4c008287","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.120.0","@mneme-ai/core":"^2.120.0","@mneme-ai/correlator":"^2.120.0","@mneme-ai/embeddings":"^2.120.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.120.0_1780281510358_0.3129737106128516","host":"s3://npm-registry-packages-npm-production"}},"2.121.0":{"name":"mneme-ai","version":"2.121.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.121.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"65329eaceb0f4da37f720f32d5b1eb3208c1ba1b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.121.0.tgz","fileCount":814,"integrity":"sha512-RYiLXJnllyuQ9o01qDUIsGTP9SOaCk0FS25lGD7BwH2BoWVvrp08EVUxBAOHA+qTSCxE5qSnugVHMv4WGAtk7Q==","signatures":[{"sig":"MEYCIQC7JBfMdvBZ3QunOtKfxGLK4pjV3KdG+c4dMa89f6U1iQIhAPzxb2sOghbyziQVTts1SIBeBo9js+2NbdfvY6LXFHby","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4690930},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5e8568d6d6b871e42c68ba1eeb1415812df9e5ca","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.121.0","@mneme-ai/core":"^2.121.0","@mneme-ai/correlator":"^2.121.0","@mneme-ai/embeddings":"^2.121.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.121.0_1780284623884_0.8820399840537294","host":"s3://npm-registry-packages-npm-production"}},"2.122.0":{"name":"mneme-ai","version":"2.122.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.122.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e38b97b20b6983f89dceaf2dc457489424ae0329","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.122.0.tgz","fileCount":818,"integrity":"sha512-0WjUQIQNWUpPLJwN/Hwb9+K2zyO5SVi+raT0zA2gK7XHsnQVO9NNMqE26wzzDwNK7/L6RxwtaujJ7rHWTomkiQ==","signatures":[{"sig":"MEUCIFAq/Bhp+nCg+foDf96WHYbyOvvJ5I/9uuYsNwhvCD2mAiEA6QHu106PKxz7s8t2TiFOEsmOGHolHIo1vnMVT7w8hXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4717057},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e68b8bc264a1c74e1aef09586bd3c1206b8e64cc","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.122.0","@mneme-ai/core":"^2.122.0","@mneme-ai/correlator":"^2.122.0","@mneme-ai/embeddings":"^2.122.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.122.0_1780288535965_0.8815165358996642","host":"s3://npm-registry-packages-npm-production"}},"2.123.0":{"name":"mneme-ai","version":"2.123.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.123.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"348322c1132e26d8d9ef2ceb9018445521ff416a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.123.0.tgz","fileCount":818,"integrity":"sha512-34bRavDe8iqRpAHTcr2fNBmC7iiL5czsm0bYShSNXFNJz2nSXHXcmfX0bf9z2q3gKbuzvZbNyw39hXh+Aove3Q==","signatures":[{"sig":"MEYCIQD6CZ1UH5kNFhA3GCEtUpwsTI67X5sE/5d4PGFJkXlL4AIhAMRMP4U20orhg5GSRxyT196p561UfGHISWchoYV9TTHX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4720421},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"074e3291d72dbdf20818e3854913788abf122032","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.123.0","@mneme-ai/core":"^2.123.0","@mneme-ai/correlator":"^2.123.0","@mneme-ai/embeddings":"^2.123.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.123.0_1780291218649_0.29599224392154366","host":"s3://npm-registry-packages-npm-production"}},"2.124.0":{"name":"mneme-ai","version":"2.124.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.124.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5ad191b23ac13958c0d4845746cc83a3d2e584cc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.124.0.tgz","fileCount":822,"integrity":"sha512-Jaw4Bi+/L4Z6vIlhOX4KMb96nNjqejfSutn5plSyJt1n3/04vmcCXOKDg7VovfyXxlw9X4oAtilfkiQBdhm3sw==","signatures":[{"sig":"MEUCICX/R+chzHYNUQ6Gv5iFHA91MwnNrR5iZMgfAFtjVNNiAiEA+g4jqQlErrFgzgOWpC4dXi4f/TbiO/5hgXmnxFXAf60=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4727601},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2bc10238b0ce0ffb56be6cd85399907f3b4468e0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.124.0","@mneme-ai/core":"^2.124.0","@mneme-ai/correlator":"^2.124.0","@mneme-ai/embeddings":"^2.124.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.124.0_1780293231008_0.38773730287773067","host":"s3://npm-registry-packages-npm-production"}},"2.125.0":{"name":"mneme-ai","version":"2.125.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.125.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"bc66e3b33fb9626aee42b0d8a39a6dcbdbf1b54d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.125.0.tgz","fileCount":822,"integrity":"sha512-GluAkrEhzQA0zcEMnzu8cMW7NNg5kFYqDYuyecbvq2eqOlWZUJlAH7EuN5gES50couDmC5GlOqrquZVddl+YFA==","signatures":[{"sig":"MEYCIQDUSfFvU1pCPbWyKaI6NNMjhTR7/32HvTS1mLIsSh8zCwIhAMDapWZGejK++wKNj3EgdDy6dtA0S7y1viLo0CGkAZFN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4727738},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4b9ed2154e5a39a1873079a7c718d26fc615eaa3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.125.0","@mneme-ai/core":"^2.125.0","@mneme-ai/correlator":"^2.125.0","@mneme-ai/embeddings":"^2.125.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.125.0_1780295580758_0.23719908427447667","host":"s3://npm-registry-packages-npm-production"}},"2.126.0":{"name":"mneme-ai","version":"2.126.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.126.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"47da03ef30b4b0ac20b9f5d52654a535238009f9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.126.0.tgz","fileCount":826,"integrity":"sha512-OZ4iseyr82Q1FtgbuP547SQaa0lV1zVoy7hqkXKCntyFC13tlmVrVUPbBnVVWFKB1RGpopCV8CQA/3TbmeU+Tw==","signatures":[{"sig":"MEQCIEINr9I+qJfn38UPjrZuwUsT7pzm7Q3k5WmB+Bsojt7zAiAv9mgONChSpD6rrV58w3RHbuiXHWAoknA52QtCHLtRIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4736329},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1dd8917e19d9ec6c68cc175477d462dcf265cc42","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.126.0","@mneme-ai/core":"^2.126.0","@mneme-ai/correlator":"^2.126.0","@mneme-ai/embeddings":"^2.126.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.126.0_1780296854469_0.7055647499532103","host":"s3://npm-registry-packages-npm-production"}},"2.127.0":{"name":"mneme-ai","version":"2.127.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.127.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ad419e6c23ab53368329c00b44a9dee8f0343db9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.127.0.tgz","fileCount":830,"integrity":"sha512-j0m3lc5chogQY7KsyhqgMo2UATzMwy7h65aVX2mkjFy9Km4nbU6K+xqUcoghJEjOy8WLKqEFkQmA5Uhk+Ppfsg==","signatures":[{"sig":"MEUCIQC4URr/LAuy9eD72ZplUmhF4dUNb1r8+eGkjbsNbN0VUgIgRnudeqv3TFwMQ+xWzNVP+kBsP6irlu9/scx1kPo4LF0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4745714},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a07a5f32d8293e8ce137b32eae2cf36d2afa4643","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.127.0","@mneme-ai/core":"^2.127.0","@mneme-ai/correlator":"^2.127.0","@mneme-ai/embeddings":"^2.127.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.127.0_1780300865059_0.4518425219410167","host":"s3://npm-registry-packages-npm-production"}},"2.128.0":{"name":"mneme-ai","version":"2.128.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.128.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4e870d0f5e88c3b763b0285c2adfc2a36474c0b0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.128.0.tgz","fileCount":834,"integrity":"sha512-doCID/2ti74bA7FUxZimKsoU8fTNecun1tBMUhfaX8WKwDs8/vGZc+t8mj/4F3u07TNav1MiSHFY2+AZQHR2dQ==","signatures":[{"sig":"MEUCIAaBmwSrx1T+onahvWOpQZXvMpCEwd31haGM6wy3iidNAiEAqfY0+bKM13SmYstUdrOqTG6yQ5a2XEJm1VA5+qr7j9s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4762014},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f21ac891b40901d91648b4a9c81ecab108b0ad76","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.128.0","@mneme-ai/core":"^2.128.0","@mneme-ai/correlator":"^2.128.0","@mneme-ai/embeddings":"^2.128.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.128.0_1780302332831_0.667812201945112","host":"s3://npm-registry-packages-npm-production"}},"2.129.0":{"name":"mneme-ai","version":"2.129.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.129.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ac264a3fb35493ff69ff6a8c5687a666136c0cca","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.129.0.tgz","fileCount":838,"integrity":"sha512-ARm4R2GULSdA4j+x67Vyc2mV3DAM9e/RSW07oyQuc4BlCmJBOl3Ae5Vdzf188oSkBf1FMKrH62AXFGpMD94ykg==","signatures":[{"sig":"MEUCIAK4uDksMfStGP99VBBzsfX+Vnjylp6kVCaRv0RxoYtFAiEA9TLttfEe3jFOdkfL9x/Z6x/vvJ8NOpmxHXRledg6TMw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4773368},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2c244f5b52102f3105a6a22e48710adaad607548","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.129.0","@mneme-ai/core":"^2.129.0","@mneme-ai/correlator":"^2.129.0","@mneme-ai/embeddings":"^2.129.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.129.0_1780304298483_0.11965990685919947","host":"s3://npm-registry-packages-npm-production"}},"2.130.0":{"name":"mneme-ai","version":"2.130.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.130.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f95bfbc3a93d39b3f1b43b7f1acaf49f0470e18e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.130.0.tgz","fileCount":842,"integrity":"sha512-MDQcVKbSbgrK+/AIyblMfK2H3e6Yhhed5V4xu/E+LmoRi1+I5nHShHzGD4Zt9rvCGuGwXr9T2tGe/hPmx3cp6A==","signatures":[{"sig":"MEUCIQCfUhTuaHvjmFSszxhjbtpbltT+OaKiTwGn3PKa+cpXmgIgFcc5qKpi0b2mCNjIb+bwfsctH8AeB7qvGo/d9FLiF0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4781774},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d846177160ad2141a32c7a5c8638d422f2f6eda6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.130.0","@mneme-ai/core":"^2.130.0","@mneme-ai/correlator":"^2.130.0","@mneme-ai/embeddings":"^2.130.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.130.0_1780307907456_0.5744269479673385","host":"s3://npm-registry-packages-npm-production"}},"2.131.0":{"name":"mneme-ai","version":"2.131.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.131.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5c9a20740634097c340d1b81e37207c4d94f1178","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.131.0.tgz","fileCount":846,"integrity":"sha512-TXrY3reg9YF1E1XSgOzOJjmuNip+Sdf6Qx/2oU31gI6bVqMJj2IjhgxktmAG4IpbtFtLjGqEQ4rapFhzVD0sNQ==","signatures":[{"sig":"MEUCIHDu/6Y079PBZm/3Z5N+MdzQpYVlXMsMv0YCy+OuCppOAiEA9yiRtYTvF2vYThhCPNUoT+SeQmjkIFrP2XcTTd3qgMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4809558},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c68fd10e6bffa56d4cd64878a0903776cf07ef26","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.131.0","@mneme-ai/core":"^2.131.0","@mneme-ai/correlator":"^2.131.0","@mneme-ai/embeddings":"^2.131.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.131.0_1780311206621_0.5125679555998159","host":"s3://npm-registry-packages-npm-production"}},"2.132.0":{"name":"mneme-ai","version":"2.132.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.132.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5dd66ee8868674665e491bd93cd32b1892f403c3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.132.0.tgz","fileCount":846,"integrity":"sha512-qIvwaIY3Fyupok13k51AHl4iAS7JLfD5CdmC5xK2uO5hmZtPARMhgHsUP3Ngse+45olNAV10gwPszjvSx8lC5g==","signatures":[{"sig":"MEUCIGZ8W7onoaZWH8I/8JnoRPykOGeBJI/Oq2AdYo3CB031AiEA2FPTpa71Gy7B602JYYIKKOyd7+33meH94RtEOT+gc1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4809558},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"db103e211466a9d62f412847730a25c1d5c99f87","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.132.0","@mneme-ai/core":"^2.132.0","@mneme-ai/correlator":"^2.132.0","@mneme-ai/embeddings":"^2.132.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.132.0_1780313117946_0.8950823397146106","host":"s3://npm-registry-packages-npm-production"}},"2.133.0":{"name":"mneme-ai","version":"2.133.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.133.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"970f9efda4da950d84a71a351c6af74066b260f9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.133.0.tgz","fileCount":850,"integrity":"sha512-vF9om6x0ZKNRwablh99AlSJZHAix2dehTE1icCfW50FLn63v8ie+8k9xgz8n6CJKwY6AaE8v426IuXrn2tlKsA==","signatures":[{"sig":"MEUCIQCyR4QUtEbLhW5kgx6kz/k+YHcHUOh+BDbhwatkuur6VQIgKfmaJK7d5/a+HK7JK+cW7Q6+AoJBRyqT0k8l/KNPAns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4819357},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d4f68b3ff674ecef7c8de928fd129d0e3470190d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.133.0","@mneme-ai/core":"^2.133.0","@mneme-ai/correlator":"^2.133.0","@mneme-ai/embeddings":"^2.133.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.133.0_1780315065079_0.6855852794978534","host":"s3://npm-registry-packages-npm-production"}},"2.134.0":{"name":"mneme-ai","version":"2.134.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.134.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"df4e97f890441692f52fd93b3d19b1a6197add6a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.134.0.tgz","fileCount":850,"integrity":"sha512-3qcJZl3Ij0GN00rZv1xQoAiMm+kWqcy+3SBQB3gdQhYw2+0m6k4dvfpev4qG63Nb3pWW3vQ1DAbLphBOE10klA==","signatures":[{"sig":"MEUCIQCf6GzCzKr7fVk1S25ygp/T/WXNzZzIHU3dM5okN5OjaQIgTIKCi/PbPPt+czg+TpowGJnY/4Sk8dVhZ/WMCLFAAFA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4825490},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8a81796243d6f56d1991151d29035b1f150ab366","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.134.0","@mneme-ai/core":"^2.134.0","@mneme-ai/correlator":"^2.134.0","@mneme-ai/embeddings":"^2.134.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.134.0_1780317608392_0.5279845621663031","host":"s3://npm-registry-packages-npm-production"}},"2.135.0":{"name":"mneme-ai","version":"2.135.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.135.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b9dab9b80cfac3dbba716747f6594f8bcff42226","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.135.0.tgz","fileCount":850,"integrity":"sha512-B5oBW/O+XttZd2tJKVYWjz44vfj1SjnIZwwwWj6Gdg2JXy0rVEl9pT5N8xkCe7lLP/Da087pTN1JGsmxuIjkHg==","signatures":[{"sig":"MEUCIQDZnhuyM5hj8SD2JjvLOLN7nW/+1Ll2dTrPBJ/Um7chVAIgDVajDP8izmMGOt/VNfnjXIr408RPx1zEd5Zu9v06ius=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4825490},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d72f6d3ae3b935c65174e26f2abc2f294a8818c3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.135.0","@mneme-ai/core":"^2.135.0","@mneme-ai/correlator":"^2.135.0","@mneme-ai/embeddings":"^2.135.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.135.0_1780323454619_0.2579495803290819","host":"s3://npm-registry-packages-npm-production"}},"2.136.0":{"name":"mneme-ai","version":"2.136.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.136.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e04981fef7d73e859895b085851c741746cae988","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.136.0.tgz","fileCount":854,"integrity":"sha512-lqK+1ALsxgajtJmJyrG6rc4FGpKF4MJEbJy3zaxhbzmkA0tsweEwaQRYUXBbg5JGPAD7A1kW4/E/0t03xrl6IA==","signatures":[{"sig":"MEUCIQCoWlGK4DTwF5g/26KR5LraCvho2SFHkKdxHodr8BebTgIgO5l3xg0m8gc3+AznCmZKTYYQzqpbRx3ZGnEBcKxL3JU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4833140},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0f49053d3f2de8677259dd1be3e6692bbf572c54","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.136.0","@mneme-ai/core":"^2.136.0","@mneme-ai/correlator":"^2.136.0","@mneme-ai/embeddings":"^2.136.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.136.0_1780326111709_0.8513632599362873","host":"s3://npm-registry-packages-npm-production"}},"2.137.0":{"name":"mneme-ai","version":"2.137.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.137.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"84200db644f935753e418d048735c32c2c2a9ea8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.137.0.tgz","fileCount":858,"integrity":"sha512-jMFy0ZeBkMcAXnVCXwBL3RjWKHZA1TuORygKn9itP4NemzVV+4qHfxqrL323TpVpBCc+PP1P3nc8j71xtsLgFQ==","signatures":[{"sig":"MEQCIBUgeO5wY6eVNnF6/I8cve7TnnAYKtAvUNJSxe9ziI/nAiBJkHr9pHuC4LEiKdcMgwdrzQo3uM3HdgJF8QSrw7felA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4843209},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"cf01fd0e6b8e3666c792d0205af7abbf79378307","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.137.0","@mneme-ai/core":"^2.137.0","@mneme-ai/correlator":"^2.137.0","@mneme-ai/embeddings":"^2.137.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.137.0_1780329130839_0.40498763841324825","host":"s3://npm-registry-packages-npm-production"}},"2.138.0":{"name":"mneme-ai","version":"2.138.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.138.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0ffb80e7b9a40c34168d8ee00b5f5b43718be244","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.138.0.tgz","fileCount":862,"integrity":"sha512-om1Uo6ob6NxpC8eKNYBmSFA+eH5BH8gWUc6aXz5/4yDHjDKgrgVVSsHqt9zshKlqT85XfdRQFTgDc7tH+6nDzw==","signatures":[{"sig":"MEUCIHMfr+oeE/yYHjVx4JvAMV2C5LPGfdkuFhO0k5x26q2iAiEA7QhlIo8vxt//Mj7uSwnVH5KCDj0WD+K2FTmxV+Y4WmY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4858477},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5d0fcb6f8413856fe45c468a5ec695bc0d9c25b9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.138.0","@mneme-ai/core":"^2.138.0","@mneme-ai/correlator":"^2.138.0","@mneme-ai/embeddings":"^2.138.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.138.0_1780331384348_0.337457405596276","host":"s3://npm-registry-packages-npm-production"}},"2.139.0":{"name":"mneme-ai","version":"2.139.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.139.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"14f57af38eb60b89a02d94a3356c011aab5b3aca","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.139.0.tgz","fileCount":866,"integrity":"sha512-ZeJU6QPPxfXraaTXeQ03yEmDBYF6I6FDUbKzAP5I4YKBoI43Ff6fSyEl+8jGmorY6XuJfHlr7iKVRo3QOeGEpw==","signatures":[{"sig":"MEYCIQDcHZJFs59IMSyxvaT3Nh5rXbhuvC2I6vUjijFqD9vahwIhAIw2HDX0m6Cv4KvzaLket20UQmqA6UpWQQOKe2XiMMRW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4869214},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b90608f43fa66a0f817189e10b9c94eaa351c689","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.139.0","@mneme-ai/core":"^2.139.0","@mneme-ai/correlator":"^2.139.0","@mneme-ai/embeddings":"^2.139.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.139.0_1780332638032_0.1440536051877721","host":"s3://npm-registry-packages-npm-production"}},"2.140.0":{"name":"mneme-ai","version":"2.140.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.140.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"947864cb1556add976b0fb172153c8c6b9dd88f8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.140.0.tgz","fileCount":870,"integrity":"sha512-BLpvU+UF5/wQC1wU+LTIWs5Q3w29JpqBfgKWxVLNTZUxTxeHKUmtL9LfnOlZhmrrRq13b+1sxju9laofOiQtUw==","signatures":[{"sig":"MEUCIQD6WCgVCG4fhMvb9j+wKFcoqrsdfFP91avgx65F+hsdXgIgD7cHUFmUTJCCO+7jeDr4GnB31Aeai/ASgj/2v+Y4vjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4886525},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c74067c32f2f3548fa0cf9dec1974138b6d89fc2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.140.0","@mneme-ai/core":"^2.140.0","@mneme-ai/correlator":"^2.140.0","@mneme-ai/embeddings":"^2.140.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.140.0_1780334373073_0.7528560552517662","host":"s3://npm-registry-packages-npm-production"}},"2.141.0":{"name":"mneme-ai","version":"2.141.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.141.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"56b6c37af3218684adc9a2ccc5faded4529faece","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.141.0.tgz","fileCount":874,"integrity":"sha512-SlFgmof6T+hnMG0xs1KS2BZGLyv3xcoINSV9CnPENOZ4qNHK876h7AW7LBePt4eXjYFjXfVGe8GUiHBoFOgGOQ==","signatures":[{"sig":"MEUCIQD1thfz6Abh/z0ddrJim4/tlRJl51ZE9LbCcgjL4UqqyAIgS7aIxUAe0SORCn3q3utgaQWjXCFISA/zcoHDgKWjNro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4899780},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"bcafb97f5a0d48ec4d0482270ca44d7332408916","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.141.0","@mneme-ai/core":"^2.141.0","@mneme-ai/correlator":"^2.141.0","@mneme-ai/embeddings":"^2.141.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.141.0_1780375145943_0.7647564888943625","host":"s3://npm-registry-packages-npm-production"}},"2.142.0":{"name":"mneme-ai","version":"2.142.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.142.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c06f5f162cac6c5e421b27f05abe657e5ea4272e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.142.0.tgz","fileCount":878,"integrity":"sha512-f3/Gur2Bq5YQOQZZUtpH9yftnUoHDud8iray1jJGVYvoJKnfBcCraWmjfb6tMc9i0fem+s8I2+fJRfhBJDlyYQ==","signatures":[{"sig":"MEUCIQCuemNZP4hBlOpNJkL1g58mEoQhFbMWtm9ve7LKhILHtgIgBCnYI1ZA8uOcHNfzeuC1+FJy5uABISyKz/R3SvL6/zo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4915549},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"eb4e36c50ad7a33679889b9c11fd190f460c60f6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.142.0","@mneme-ai/core":"^2.142.0","@mneme-ai/correlator":"^2.142.0","@mneme-ai/embeddings":"^2.142.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.142.0_1780384834758_0.39820760531407995","host":"s3://npm-registry-packages-npm-production"}},"2.143.0":{"name":"mneme-ai","version":"2.143.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.143.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8a594e5ecc4b7d318e9fca466c117e363ae6d27b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.143.0.tgz","fileCount":882,"integrity":"sha512-s29QSSpQVTAopa/DE/r8xSAQ9MiLz0rau6v/f/8viYzjXW8eEHgvG/myZDWObT/bAN6tGU9L873jdaKT3EFEjQ==","signatures":[{"sig":"MEUCIFUVl094qEhqGUcEQVGj2E2p+4cw0eW2a4AERZC548AdAiEAswz/cMP077KDrncjqP8GEsPbxz96A4vJVnxI+thqPUM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4926628},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0e531c868c2aa07f3eac58c3525ce48b31ef4587","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.143.0","@mneme-ai/core":"^2.143.0","@mneme-ai/correlator":"^2.143.0","@mneme-ai/embeddings":"^2.143.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.143.0_1780388527090_0.3171071576108744","host":"s3://npm-registry-packages-npm-production"}},"2.144.0":{"name":"mneme-ai","version":"2.144.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.144.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"424c626c0aeca18b46b959750368eda02c34f418","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.144.0.tgz","fileCount":882,"integrity":"sha512-brZ7jWLBO/j/IrBvvJkQTiTwMRb0tYJ1Sp04bj1RL7un++GaqJa/frt5OH2sGdF6wjJBG83kXWnjtYGznzqK7Q==","signatures":[{"sig":"MEQCIBcLmy8070G/bN3/KnHdkhK4ku+N9YlK3/r2R/4YM5XMAiB3aYyK3TBW20CCLRJ7T/qLN1AqknBRWcVT5pj1PvfN5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4937429},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5bdde3b6703772e58e6dd1df24e4f420354bbf41","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.144.0","@mneme-ai/core":"^2.144.0","@mneme-ai/correlator":"^2.144.0","@mneme-ai/embeddings":"^2.144.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.144.0_1780391030023_0.09076644666834954","host":"s3://npm-registry-packages-npm-production"}},"2.145.0":{"name":"mneme-ai","version":"2.145.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.145.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4701a2d1649875d56c8c5c8300cda85ef85ba128","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.145.0.tgz","fileCount":886,"integrity":"sha512-BgWlhAK8QItfsuxsOOSJRzgZx3L61ZGwNR//454b5N7CE1yz4w4b7C6XLV9DgR4e1t2kYVUvHUo2PuB8mwRxmQ==","signatures":[{"sig":"MEYCIQDdr3R5k9b7AqmD1meHZCEghTO5CZTpWdLAHiOTF8sSAQIhAIzplYD+aMSLVhisl2ed+FDM8r3NhKCITSw0PJg4GlDJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4954215},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"43e66da5dd1a932fbee678ea95c29f1f24b690b2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.145.0","@mneme-ai/core":"^2.145.0","@mneme-ai/correlator":"^2.145.0","@mneme-ai/embeddings":"^2.145.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.145.0_1780392612003_0.48910014668900414","host":"s3://npm-registry-packages-npm-production"}},"2.146.0":{"name":"mneme-ai","version":"2.146.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.146.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f2239e9231e1e3f74558bffd3d9589a6a9fece61","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.146.0.tgz","fileCount":890,"integrity":"sha512-rnAfkPrJbVzX+/L5pbSm4XZx6v3QKmUs6toHNwVyzFNf2vq9rINkkE/gN88WP5SC62hqv4GBW6m4NVxRMMR8YA==","signatures":[{"sig":"MEUCIFNgBmiTIl5g6iECIl3/vjhMmeIsW9/Ojp4ERb/ytwmoAiEA9miv5eno8pXAmb0CQpMgcueOUvPvfmQuvQeY57Y3E5Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4964087},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"cbd3f09f204f69ffddd8d2991a6fb0e0fa2bb84d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.146.0","@mneme-ai/core":"^2.146.0","@mneme-ai/correlator":"^2.146.0","@mneme-ai/embeddings":"^2.146.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.146.0_1780394497342_0.9886346907622172","host":"s3://npm-registry-packages-npm-production"}},"2.147.0":{"name":"mneme-ai","version":"2.147.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.147.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"76ef3b72c0302509ca35296777ece53837a5ecb6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.147.0.tgz","fileCount":894,"integrity":"sha512-nKDPytGc5TvoMJYNTqrJPM+NDBCH1vZEW1UAU3N3vpflQacHq32zoY44yOylT0Edh2MvaAFVAZb3imJ95HYmEg==","signatures":[{"sig":"MEUCIQDuKet97MxL+hvwVzCgo8FiLuNMNrGh9gl/pbhgW3xJ0QIgaJVMT4pLisNVkwXQ1xDHn0WJAnoLeIRU/gQjQU9UWFI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4975775},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4dc052277338141ffaac846cf404c595e9411663","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.147.0","@mneme-ai/core":"^2.147.0","@mneme-ai/correlator":"^2.147.0","@mneme-ai/embeddings":"^2.147.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.147.0_1780396071033_0.9869621141825384","host":"s3://npm-registry-packages-npm-production"}},"2.148.0":{"name":"mneme-ai","version":"2.148.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.148.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e7489cc297d94a924d9d04c09647ca526188bd2a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.148.0.tgz","fileCount":898,"integrity":"sha512-axNjOLQycPJmSlSRp/k0dJNtMp/8/U8PV6vn7fnZQvIIFwfILMYpp9OP3xU69vEXj32YlZkJv27NQzbN1dRjAg==","signatures":[{"sig":"MEUCIGA6q3+6NgJW3DEPoEV8Qik5ItEfP3QGU6MYHf85qwZlAiEAzvrZUl1r2OvCEmfDZKJoUCzpujkANRji9AYRxPP6QQU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4987985},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"579b2308abcd90ef425eb16d7b1ef2260ea6d116","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.148.0","@mneme-ai/core":"^2.148.0","@mneme-ai/correlator":"^2.148.0","@mneme-ai/embeddings":"^2.148.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.148.0_1780397500849_0.4486946058337913","host":"s3://npm-registry-packages-npm-production"}},"2.149.0":{"name":"mneme-ai","version":"2.149.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.149.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ea3fcbfc90f3db5b5ea92e28e56e1662f18292ac","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.149.0.tgz","fileCount":902,"integrity":"sha512-RNYqpEVJrsxGqhPCPZr7+D6p6B1uY1XbMWLjZutvVjjrvBcvXJWhgP7RWj20Zr+3cAzx4NYkNmKPp8mby6RJnQ==","signatures":[{"sig":"MEYCIQCASbVbDxSkAIICC68uIA2cTx9wNvI4LzojJ0UGy4D2xwIhAMwEXACCt6VQYAwPJfBQ3mNzr2kM06EK4P5Se5vjUTxF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4997262},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9df0ab5c72479333b99276cb3ac89be704c3c5d0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.149.0","@mneme-ai/core":"^2.149.0","@mneme-ai/correlator":"^2.149.0","@mneme-ai/embeddings":"^2.149.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.149.0_1780398978284_0.41938846853152034","host":"s3://npm-registry-packages-npm-production"}},"2.150.0":{"name":"mneme-ai","version":"2.150.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.150.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"90924ea09707ff840702dbf918dece50824b6d44","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.150.0.tgz","fileCount":906,"integrity":"sha512-Se/dXcpf3AFN04m9qDXAebfvnnP1Pi22mRKHR00oNXv4Vs+93uelgqn7CnQFrGfITuPqsvjM0qdFbG2RzSu1hw==","signatures":[{"sig":"MEYCIQD0O2f+qhgSeF+Ms97eRDuQHPcdSMhAuIwbXHY3lJoifAIhAP6w2dNOrWWI9z98QraT8vn5go/Tt3g88HEwQ1FqGwTP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5005912},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"aeaa3ef307d155a2bd39449efe13557d930f84f5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"^2.150.0","@mneme-ai/core":"^2.150.0","@mneme-ai/correlator":"^2.150.0","@mneme-ai/embeddings":"^2.150.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.150.0_1780400171022_0.16848975700471902","host":"s3://npm-registry-packages-npm-production"}},"2.164.0":{"name":"mneme-ai","version":"2.164.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.164.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a56a6675f34046439a7d531c5c155fc53891e4cc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.164.0.tgz","fileCount":910,"integrity":"sha512-pnBmbJOEcu266le1aIUntBhu21Vr5ZeUctaumDFTjFV5caX3YRu2aVV5Xc+cx3hzI/ZUP6JX1sVEiHNgLO1SNQ==","signatures":[{"sig":"MEYCIQC/szuUSOwH8vRxAEFAXGl2r2JWPNTFCrsJ57S0XbFAGQIhAKloeEAbuFpxlnco1w9qR/VQhx7hNz1dcoqssN/mPmDw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5016336},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"16e32ed39d2f97aafa322c1678d515a74e6365e6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.164.0","@mneme-ai/core":"2.164.0","@mneme-ai/correlator":"2.164.0","@mneme-ai/embeddings":"2.164.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.164.0_1780455409426_0.48107129411039007","host":"s3://npm-registry-packages-npm-production"}},"2.165.0":{"name":"mneme-ai","version":"2.165.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.165.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0ac15849e8488fee70afa1e7312e78803b3cb0d6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.165.0.tgz","fileCount":914,"integrity":"sha512-oJUQvuTZAyDDt7X1nHZ1g5H2b9XusE6RmYUCMxC4wclvXztnKkR2VWnnYnF6KFIlRW26/R71CBNeyrMk0OylMQ==","signatures":[{"sig":"MEUCIQDlB/Onqc6TqHATbkwdoWxFeZVCWaLaM4oFp+k5f7FiyAIgATwgEKgrjPQvZLIHITEGYDG968NFYLB8q0vebZ1gAAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5024602},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"44c13f1ea13ca6328c273ac5d1fd433ef3d0f288","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.165.0","@mneme-ai/core":"2.165.0","@mneme-ai/correlator":"2.165.0","@mneme-ai/embeddings":"2.165.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.165.0_1780458681646_0.08543669296766243","host":"s3://npm-registry-packages-npm-production"}},"2.166.0":{"name":"mneme-ai","version":"2.166.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.166.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1b68ac6aa9396dd297de324248d7d7d9ddd0b761","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.166.0.tgz","fileCount":918,"integrity":"sha512-YXKRDXL2J/qSR4AktcqvaPNUvRn3qZKTEWA5HKokPHA8/prg1XoGP9y26JKHpMP6eysCgh/sl4RtxhzzotHTVw==","signatures":[{"sig":"MEUCIAsZe1HKBjD3mio03hEnTHHQjYLvW8YidGCuMu/BD6vWAiEAwbCQGVTTrlKDYomFPZko194e025JNCq8n193b3QQayg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5031212},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1f049b7d0d006bbfb129b1723ef168847163a57d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.166.0","@mneme-ai/core":"2.166.0","@mneme-ai/correlator":"2.166.0","@mneme-ai/embeddings":"2.166.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.166.0_1780460334866_0.9064942254094037","host":"s3://npm-registry-packages-npm-production"}},"2.167.0":{"name":"mneme-ai","version":"2.167.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.167.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2f6891bc7afc4c955642459ecd4aa1894998ddd8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.167.0.tgz","fileCount":918,"integrity":"sha512-XWkSo/nSUaB0I4lyq2dqMSBuF0634W1qBzdLn735OegmSNeuMJMoIS3LFsljz3g2rIKsmnie1uka/4c11zjQTw==","signatures":[{"sig":"MEQCIFAspaFtAhOvr17JBPzH4g/shZ0R4LX3fJrkwmqLuGXfAiBghRwLlWqUXzucoOzwTEZjs/fKpR0ORvsz2mBg5idV+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5038005},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"cfd28e024eafddb2c9846db761d8e87f81470a22","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.167.0","@mneme-ai/core":"2.167.0","@mneme-ai/correlator":"2.167.0","@mneme-ai/embeddings":"2.167.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.167.0_1780544793048_0.8594805116074531","host":"s3://npm-registry-packages-npm-production"}},"2.168.0":{"name":"mneme-ai","version":"2.168.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.168.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9d698bc2267aba5b09f518a9618eb7a416f26abc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.168.0.tgz","fileCount":922,"integrity":"sha512-twW9CIG5RmzwuKVKe+KCx2FTxaBdjgHLtXumKG2RinYB/Og42ZWRyXLI8NW1qFVcnTqaAnGF6jFhVgNYtdZ3KA==","signatures":[{"sig":"MEUCIQC3mEJCTTnRpswxMI/vCBVNb3jitGWJseH7fbc5lK0/1gIgZxnSEMFi8Ryv7XRfWDp+B/8dVA+dXiTj2OtBz5rz8Vc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5047726},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"06f2337f4d4bddb109eaa8f3a51ca48aee3d0f17","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.168.0","@mneme-ai/core":"2.168.0","@mneme-ai/correlator":"2.168.0","@mneme-ai/embeddings":"2.168.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.168.0_1780552057321_0.09673287738767633","host":"s3://npm-registry-packages-npm-production"}},"2.169.0":{"name":"mneme-ai","version":"2.169.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.169.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"19aa8d91ccfbf64589917667113698717aa51132","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.169.0.tgz","fileCount":926,"integrity":"sha512-bNoIJcMylO1iiV64Mn6PIGuJhR1Hrl2OoX319G3fxqvdaD2h4iOSRd4JnWT2n+EeNrZXEdveZnbU9e2ECQXD0Q==","signatures":[{"sig":"MEYCIQDW7zrL+HBFmqLoZMBn3dHtrXujxhYoNWzjO9uCM6ly8QIhAIID0pVGKxYoCF4gBM3JRXWR7NXaX85hhJ7uVASczU5R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5056127},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e8c50dcec7bc5ed2d9913afce2c2295c3297e335","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.169.0","@mneme-ai/core":"2.169.0","@mneme-ai/correlator":"2.169.0","@mneme-ai/embeddings":"2.169.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.169.0_1780553483461_0.5527158941308783","host":"s3://npm-registry-packages-npm-production"}},"2.170.0":{"name":"mneme-ai","version":"2.170.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.170.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b4e1fa4240591c80bf261e9ff5040ee00fd99a6c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.170.0.tgz","fileCount":926,"integrity":"sha512-O7a2PZgThikj5Lj/lAekZu1/fyxmgxLxHk1SFEB9OiN4M6En0MteiCV/8NOTad863tBQgH43llZtZ5o1MZEn1w==","signatures":[{"sig":"MEUCIHjGFm5qdx4WeMcqZjwiVC1QyhgOFS7qmhHsbXpwiVWzAiEA8eOKOLluEgpDOY6D1TOj8jGMez2k/fuzSwg+tGkRiJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5056127},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f53ed6b2f71498a72bd63cf401766be639f9d7b7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.170.0","@mneme-ai/core":"2.170.0","@mneme-ai/correlator":"2.170.0","@mneme-ai/embeddings":"2.170.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.170.0_1780555886900_0.8816323781350524","host":"s3://npm-registry-packages-npm-production"}},"2.171.0":{"name":"mneme-ai","version":"2.171.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.171.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d9e619c49fc86dc125f3114d51469b3f3272a525","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.171.0.tgz","fileCount":926,"integrity":"sha512-oIzbchRkcv5X1j7XMTPruNcDfMLEz++ENJelAFAc/ADZDdf6xBgRSqKxMVQOxpd/woblPOibdRkqpsP0gOjyQg==","signatures":[{"sig":"MEUCIQC7afmc2aBurACN5/ThL5szASZvL+s+KAdAUSxm5cCHEgIgN9KhdLbVYeDQLWq6Aw7iWjzVtQApvtk6rdxYzxElejY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5056127},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8b48b9134b99631b7f1e6e401b5de6f3719f5bb7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.171.0","@mneme-ai/core":"2.171.0","@mneme-ai/correlator":"2.171.0","@mneme-ai/embeddings":"2.171.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.171.0_1780561043530_0.858982658954097","host":"s3://npm-registry-packages-npm-production"}},"2.172.0":{"name":"mneme-ai","version":"2.172.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.172.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"aa751337bc12b18cbba528fddff243ea677e3c7e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.172.0.tgz","fileCount":926,"integrity":"sha512-EYQMwLgQ0yifFIuha0/YNfMb6iIiHxCLfdouSXz6EJLuiMQwitUDv+wERvtQ37QXAy9poHyQaANMOnEhWh9KQw==","signatures":[{"sig":"MEQCIB8Z5DUmCADU9wQMtkY5f5QDG9cNphA6FiFzikTiH50fAiBtAPwE5QHBnFYdsNwywbgrZSu4LLIYcOWzvfKSb0UqHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5056127},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"aefda2c680ad386832e863542813dc29b050cc01","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.172.0","@mneme-ai/core":"2.172.0","@mneme-ai/correlator":"2.172.0","@mneme-ai/embeddings":"2.172.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.172.0_1780563651292_0.543719470935002","host":"s3://npm-registry-packages-npm-production"}},"2.173.0":{"name":"mneme-ai","version":"2.173.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.173.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f5291e39e2ecd019052c597c2371cd16b42abc5a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.173.0.tgz","fileCount":926,"integrity":"sha512-dFzx2I0swdkgePgRfvl4mB4wolaU0ywp/qaNtQIxNqJi3JI9sP2aykZCqW85nEQuWfU21FjvU4YO1T00HNmLIQ==","signatures":[{"sig":"MEUCIGAGXCkNmV/l3rSRv55usDshf5Z4Ya2uML/L/vUkzCBrAiEAv2dDy6VHD5XPI6C4QVy+nYC5PeVtZFC+ZuKncr1aYVI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5056127},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6278cf9cfbd1aa621524502d66f6e69d38e6ae8b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.173.0","@mneme-ai/core":"2.173.0","@mneme-ai/correlator":"2.173.0","@mneme-ai/embeddings":"2.173.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.173.0_1780566954699_0.4295448559230757","host":"s3://npm-registry-packages-npm-production"}},"2.175.0":{"name":"mneme-ai","version":"2.175.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.175.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8a8cdd796bf59c4a0115bdd866406ee0298c5e19","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.175.0.tgz","fileCount":930,"integrity":"sha512-BS+o7qbWMH6mjsJW37jn4uniXTHGaVLa7OLGQ9oLwveNzs56KXIUNImF3gnNej6280ADVigEuwjQxm5oWHtmkQ==","signatures":[{"sig":"MEYCIQD4sAwafxIXt4Vqqvx4N9lirgqRzW6T2y2fcdRuqefuAAIhAJM6Xryr1uHObAJKtg/AyfaLMj3Xlzb8WtziBaBdpTxd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5063689},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c6d91ccf372fbb4b343c9df4a05cf3c4a872f79f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.175.0","@mneme-ai/core":"2.175.0","@mneme-ai/correlator":"2.175.0","@mneme-ai/embeddings":"2.175.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.175.0_1780570438212_0.24599412053121217","host":"s3://npm-registry-packages-npm-production"}},"2.187.0":{"name":"mneme-ai","version":"2.187.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.187.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c8e05165df6f74eb4d267496e64a54a34c16f3b0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.187.0.tgz","fileCount":934,"integrity":"sha512-Db6yLYCOI0THiYpXq0XBRSRkklDHHuHem26ZScS7WcdyyttAYn9i0a67U1pMjjBAns3obe8Drh8sW79iVdQ64w==","signatures":[{"sig":"MEUCIQCeeSXrXBKvRD8p3bXpFpaA6+9BJsh9+Ct0fT6PLa5I2gIgLffay8U53KYGJzOSa3kAFDae4c+iYlk42SpFTe6AKnk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5073146},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e801009d6dcc4e28ba900e957123c770897c8e00","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.187.0","@mneme-ai/core":"2.187.0","@mneme-ai/xray":"2.187.0","@mneme-ai/matrix":"2.187.0","@mneme-ai/correlator":"2.187.0","@mneme-ai/embeddings":"2.187.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.187.0_1780580774434_0.27222664876672753","host":"s3://npm-registry-packages-npm-production"}},"2.188.0":{"name":"mneme-ai","version":"2.188.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.188.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ac07c1a6a88cf766d875f2c64b395305c181b74f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.188.0.tgz","fileCount":934,"integrity":"sha512-Qe+pphXDtTqCC7rmNVy8i4tq4tTwyoHQNDRIEHYrcKGX9D960PAgbxZm7OeDrs7r6jOTD6y7uCsZJPNFdgrpBg==","signatures":[{"sig":"MEQCIFkyx6XWkv10w86XFwedPVX42oL+XPx07VT5HqGGTCY6AiAbZ/ajKaKyatHjW0Bwf84qjsszkhUpqq4i0MqiYsjKFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5081266},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"23d1b695b756cc2264ac29debca8e180a236233a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.188.0","@mneme-ai/core":"2.188.0","@mneme-ai/xray":"2.188.0","@mneme-ai/matrix":"2.188.0","@mneme-ai/correlator":"2.188.0","@mneme-ai/embeddings":"2.188.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.188.0_1780582351820_0.5478698015698955","host":"s3://npm-registry-packages-npm-production"}},"2.189.0":{"name":"mneme-ai","version":"2.189.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.189.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e232a75f5c695ea7050612e64f412161d6b33f0b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.189.0.tgz","fileCount":934,"integrity":"sha512-aW3Ukf0iN9ojEuHvP1p+xO8q0jqz9zExo/a62dA9v6HCebKjRGygKaErLn2T+ez1gc1uAaOOZFrX+f3h/uotWw==","signatures":[{"sig":"MEYCIQDWxV01quUPLIigRr70/sSA5TpCIDPb6Pllwor7cuN4tAIhAIcc8GoYgRYCkoBHYLESLjEhwP2p+YJNg45xwVp6iVtp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5081266},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b7588ee996ba43d55563d45aaafc97ee70704d3a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.189.0","@mneme-ai/core":"2.189.0","@mneme-ai/xray":"2.189.0","@mneme-ai/matrix":"2.189.0","@mneme-ai/correlator":"2.189.0","@mneme-ai/embeddings":"2.189.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.189.0_1780583713566_0.0434303604200692","host":"s3://npm-registry-packages-npm-production"}},"2.190.0":{"name":"mneme-ai","version":"2.190.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.190.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f14976bc40b30d92614f1bd3c9000a2ea6e25c74","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.190.0.tgz","fileCount":934,"integrity":"sha512-/AasMOxC1cvUgcvvuA5WGmBV1vNXkpbVWO2MqXwquFwbdlxc/7Q25wD8g3lMbHZtscpJjkE6U2V4biTa5AkVTA==","signatures":[{"sig":"MEUCIEmeCVmEIWa88J72wNqK88qKaz9BVbQMlBY2l03t92ICAiEA3//EXvhCC/5yIwPKPKVwM+98EGa6Uw8PzbZ+wgqXpfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5081876},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"035150ce233742ab90ac70ea08ddac6ad7ffca05","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.190.0","@mneme-ai/core":"2.190.0","@mneme-ai/xray":"2.190.0","@mneme-ai/matrix":"2.190.0","@mneme-ai/correlator":"2.190.0","@mneme-ai/embeddings":"2.190.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.190.0_1780584918263_0.20175087419208193","host":"s3://npm-registry-packages-npm-production"}},"2.191.0":{"name":"mneme-ai","version":"2.191.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.191.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e9f75a3806a9e2c5e45a21310c949a1dee85218c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.191.0.tgz","fileCount":934,"integrity":"sha512-Q2/5hZDQ1Lu/ugoMWsiKHRqb9uLHvqIt6bckoXIRi/jK/psybmBUOuzC8CbXYcBtOf3Fgyk/BMK7zlo3gJLz2w==","signatures":[{"sig":"MEQCID73j9/7GjlO7CP9RQ3cHRA7/7y0amYT7Unocyx8O/CvAiAcq7gvJPvqtSQ6g+pjEe82zakkyAAt5865oxvuDg23Kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5081876},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"09a0c4acf6cc879c7370e90a185ec7feda4cd678","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.191.0","@mneme-ai/core":"2.191.0","@mneme-ai/xray":"2.191.0","@mneme-ai/matrix":"2.191.0","@mneme-ai/correlator":"2.191.0","@mneme-ai/embeddings":"2.191.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.191.0_1780585772276_0.8917922286844442","host":"s3://npm-registry-packages-npm-production"}},"2.192.0":{"name":"mneme-ai","version":"2.192.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.192.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"341bf382fa7b44236f0ec19c6aa91ea12f8ec5df","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.192.0.tgz","fileCount":938,"integrity":"sha512-SAw+Vz0cecVnDbjsb/SinnEqRPA0YeGjAP2SR/EcCOpyv5hd7FNpbmacEs6tob4kenv+1Iawk+qR4wgvDVnfbw==","signatures":[{"sig":"MEYCIQCpmzF7ISmgqSlARopIkdQ30qTG0szLiunWKNg1I45LTwIhAMZeXrUWq4MsxIKLy68JkCiLD0ICG+X2VB5D3GRWV2Bq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5100973},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3a7f6ec337cca9bbf29a354537f11aa23a75b5de","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.192.0","@mneme-ai/core":"2.192.0","@mneme-ai/xray":"2.192.0","@mneme-ai/matrix":"2.192.0","@mneme-ai/correlator":"2.192.0","@mneme-ai/embeddings":"2.192.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.192.0_1780625932114_0.6068036885367663","host":"s3://npm-registry-packages-npm-production"}},"2.193.0":{"name":"mneme-ai","version":"2.193.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.193.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ab32ba0c570e7684cacef852cdebd0f32aa9db98","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.193.0.tgz","fileCount":942,"integrity":"sha512-sVCGYXzwzavH5q9j9q6LlDvKhdSjrVPhYWqafDLfAWNZwdGffIB5q6oav5yPlPTzI+QEpl10KmLZkXlqRXR/tg==","signatures":[{"sig":"MEYCIQDmtzfVQZ3GFZgcTaT4FqlbAgF8lNAsQym21MKJ2pyBngIhAKBRG7aH3VRPhKklHKlhxuz6FT0GRPO0ociFlRgR4et8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5114627},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e02d950053dfee381749a4d36174982eb767b11d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.193.0","@mneme-ai/core":"2.193.0","@mneme-ai/xray":"2.193.0","@mneme-ai/matrix":"2.193.0","@mneme-ai/correlator":"2.193.0","@mneme-ai/embeddings":"2.193.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.193.0_1780627705628_0.8634932954429633","host":"s3://npm-registry-packages-npm-production"}},"2.194.0":{"name":"mneme-ai","version":"2.194.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.194.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6a1b794277c3551ebdad44cf764d1b2b7e42c158","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.194.0.tgz","fileCount":942,"integrity":"sha512-t3PcVkR5iVy81hlcF4BYk6StU9+2+Y9Ovmt0OPpF4Yupi7g3Cz1ERlsjAToOQtaVYkN6jVqbfm0xU9NdwexDzg==","signatures":[{"sig":"MEUCIQD3RH3L2FJbKSgFpsDW0D33F+y7kEjNnkOpq+x+5AMmjQIgP9CwLoMobbD0M6kA/0I1k8xn5sMBKFlz0vdLkIw7H58=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5118598},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ccc0c7877f7be1b31387c942fc339810f114d022","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.194.0","@mneme-ai/core":"2.194.0","@mneme-ai/xray":"2.194.0","@mneme-ai/matrix":"2.194.0","@mneme-ai/correlator":"2.194.0","@mneme-ai/embeddings":"2.194.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.194.0_1780629080459_0.04766606150489294","host":"s3://npm-registry-packages-npm-production"}},"2.195.0":{"name":"mneme-ai","version":"2.195.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.195.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"972209bc248ba12550815cf2a16896b31dbe53c5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.195.0.tgz","fileCount":942,"integrity":"sha512-j282NCJ+N56ZOIZsEXGgdNnR4NrQbqGrspFka1YGX1C9CzPmGpOIUlBW0o0IwNmvXx7b6oEWkxaIS5EFeD8sfA==","signatures":[{"sig":"MEQCICksBuG7lEbgx/4/A+N8QtnvLJj3VProtLeS2r9V1fpgAiBjgcuZzPFFNSVm3+lOI6NB8v9E+WXzhDAA+mjtGIb7aQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5118598},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"acd90fc2e8b08e0139cc5bea2a4c7f289f4ca891","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.195.0","@mneme-ai/core":"2.195.0","@mneme-ai/xray":"2.195.0","@mneme-ai/matrix":"2.195.0","@mneme-ai/correlator":"2.195.0","@mneme-ai/embeddings":"2.195.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.195.0_1780629851931_0.8939781545009935","host":"s3://npm-registry-packages-npm-production"}},"2.196.0":{"name":"mneme-ai","version":"2.196.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.196.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"53bb952ee0568111903b8380c0fb5838899f5c63","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.196.0.tgz","fileCount":946,"integrity":"sha512-IJiOdLkL029hizwu1bc/qAbfWdE9DuO0E/OmJ3KQoX59EA+8kVAmCtoVzNOi2eAZ8zufd8hsIu0go4BkkiStCw==","signatures":[{"sig":"MEQCIFSQxz4w7ro7y5DpDpOnxtupRLT3IqKbsz6GDvrYdv7SAiAXZ1cDNxssczSCLCW1RTX56RRWeEqKGP8R/vxvSXquLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5134720},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"86d3ce25dbafeb764c34e5413ce861a18905a69e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.196.0","@mneme-ai/core":"2.196.0","@mneme-ai/xray":"2.196.0","@mneme-ai/matrix":"2.196.0","@mneme-ai/correlator":"2.196.0","@mneme-ai/embeddings":"2.196.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.196.0_1780632119258_0.9925870536689974","host":"s3://npm-registry-packages-npm-production"}},"2.197.0":{"name":"mneme-ai","version":"2.197.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.197.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"cd83fc4c4a87efe67f612f7d47294703e1d710a2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.197.0.tgz","fileCount":950,"integrity":"sha512-CmgLvmPcs3VxcGfcm+NpqWr2501OQztqC9hu7FpInXvkLLR9Jgf9cBGzBKS2j11pCAQps2quaHTTOl14Mo/KYg==","signatures":[{"sig":"MEQCIFDhbmlI+QG6SPPI18unrftZxBSlh9h2Ecdh+MxVw0LuAiBxJ7SCJrY4Rx9k70ZZQ0Njt7JfHpKBmGsWNikgNeciuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5144357},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"caac490c04032f7d09f8715d8f287183e9cea29f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.197.0","@mneme-ai/core":"2.197.0","@mneme-ai/xray":"2.197.0","@mneme-ai/matrix":"2.197.0","@mneme-ai/correlator":"2.197.0","@mneme-ai/embeddings":"2.197.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.197.0_1780634739150_0.8895778121359612","host":"s3://npm-registry-packages-npm-production"}},"2.198.0":{"name":"mneme-ai","version":"2.198.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.198.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"dbd836284f565769da2a77256e57b705a9da0ceb","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.198.0.tgz","fileCount":954,"integrity":"sha512-Zvy4kW0ejHJFgXHWEWdHExQwN+FvPycb4PAKMYxdp7riJJ7OQ1cqcyYK6XiffQDVJhaxEKtrtXjAgck6oBg1WA==","signatures":[{"sig":"MEUCIQChwCq59YiHg6nQK26LGPe6xGIulGLC1LiKk0bvRcgPiQIgcZvFBEpJTV8Ctuc/hV7AG6LJdOOzU+9Iy8LPd5+icb4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5157326},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"03da57c0b41fdd9930c296d30e885145d3aa501b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.198.0","@mneme-ai/core":"2.198.0","@mneme-ai/xray":"2.198.0","@mneme-ai/matrix":"2.198.0","@mneme-ai/correlator":"2.198.0","@mneme-ai/embeddings":"2.198.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.198.0_1780636164938_0.051874019201263","host":"s3://npm-registry-packages-npm-production"}},"2.199.0":{"name":"mneme-ai","version":"2.199.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.199.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0867e985a2183f66c1905ee3cbffe4624f3371c9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.199.0.tgz","fileCount":958,"integrity":"sha512-bVGe1ktrlq3HPzYkTKUzQnr7bnVZrh8HXQYHjegk8k0LzmLqT1jMOlGwyUCtecRGJI2bsEJBBHbySnc1TDuYGA==","signatures":[{"sig":"MEUCICCHrFZHzPf1NPb4C6bp1TuhnjTdkFZUNTLpo3/3DRXpAiEA6FfB12NfZiKbL5WIAZ7oCMaLJezaxTy29Lg561cOXB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5169494},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e8e8c3576f3def69bfbbc33314a8dc7df07b3e66","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.199.0","@mneme-ai/core":"2.199.0","@mneme-ai/xray":"2.199.0","@mneme-ai/matrix":"2.199.0","@mneme-ai/correlator":"2.199.0","@mneme-ai/embeddings":"2.199.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.199.0_1780637149862_0.3506424197082101","host":"s3://npm-registry-packages-npm-production"}},"2.200.0":{"name":"mneme-ai","version":"2.200.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.200.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0ed54636cf4fc5ddcecc4e7ad59cc8f537d93e02","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.200.0.tgz","fileCount":962,"integrity":"sha512-juJ5aWyKat+UL+tDTUIn9OsJO6g9gz1zLw33UZWaF2w5gs/tOlWoQcDkfrP5vVfOdZll0O2y4UmLvRrPMZAPfw==","signatures":[{"sig":"MEUCIQCpIGK6axi84AfZTI1pEatEFI4DAbKbXnqtub6vlFgpOAIgGD/s159DVLKmCKbsdNUS1JGOjCraw7jSy8Cdsbk1Noc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5177238},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"125ecb8b93f68c6bf9c1719037303d68e34b4e36","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.200.0","@mneme-ai/core":"2.200.0","@mneme-ai/xray":"2.200.0","@mneme-ai/matrix":"2.200.0","@mneme-ai/correlator":"2.200.0","@mneme-ai/embeddings":"2.200.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.200.0_1780637973950_0.31642607027210023","host":"s3://npm-registry-packages-npm-production"}},"2.201.0":{"name":"mneme-ai","version":"2.201.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.201.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"74212e0945c1e0aba9765e352bdca4144c104e0f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.201.0.tgz","fileCount":966,"integrity":"sha512-/Z5RTqhGwy66Q9hfdkzSldVr0dECTKNSQrR5vpEUqUJTV3AwdnslpbZCPV8Ijhk5coeEWyfCzu5wSsWUBiL1IQ==","signatures":[{"sig":"MEUCIQCxgQ/7R5F6+WmacBuFLM43Lj2yoMDX6KKLf2EZP+peqQIgBSynHu3eXpFCZ/xXb+PMa6pDf2FLv/v76YSZRhj94SI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5202727},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"16ea6cedad7d4e040d8c8699b4de9ddf78df75df","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.201.0","@mneme-ai/core":"2.201.0","@mneme-ai/xray":"2.201.0","@mneme-ai/matrix":"2.201.0","@mneme-ai/correlator":"2.201.0","@mneme-ai/embeddings":"2.201.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.201.0_1780639478163_0.8113565678162835","host":"s3://npm-registry-packages-npm-production"}},"2.202.0":{"name":"mneme-ai","version":"2.202.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.202.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b3d12f18a8907aa2ef21953f3afaedd72ffb34d8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.202.0.tgz","fileCount":966,"integrity":"sha512-+F9gQ3SG0hwznyvXWHGUZBq4yJUSfTPmDZiCtc7XG3vbsEK/VuOizCqc9KUBFe3QYVnxeZCNaDFdqP5STxKfmg==","signatures":[{"sig":"MEQCIHNyqlym7Ai4oUEYEF4sjRVV3WUO0kN5bvgACJJBqXlEAiAlQuj1woytdP+vT2jwUQbawmnHxwBiSMddHOiBnmHedg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5214311},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7c1d0f88f4298c56012fe8146fd026b53287a6ea","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.202.0","@mneme-ai/core":"2.202.0","@mneme-ai/xray":"2.202.0","@mneme-ai/matrix":"2.202.0","@mneme-ai/correlator":"2.202.0","@mneme-ai/embeddings":"2.202.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.202.0_1780643232964_0.2096129452050135","host":"s3://npm-registry-packages-npm-production"}},"2.203.0":{"name":"mneme-ai","version":"2.203.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.203.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"fcd95ef28ec05173b0b2269a62701a5897db1942","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.203.0.tgz","fileCount":966,"integrity":"sha512-A5qkfez4i3fvMeAIZRG8gdTXa1Al6h2sQG6c2Z5IS3mZwmgfnjkgcGdEmrzggIk73vMjz21tpysiESwX2CWnUg==","signatures":[{"sig":"MEYCIQC6p8IYPkAMRJNyvaJ2YnWSTRSiONYr4WBfh89s1Er1+AIhAIYdeXMcnAFz1TAJQ10I6jl56m4BKbE5nAOOuOX1KNne","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5217378},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a29b8406a41ac7f1a2da15677921359c0841c3ca","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.203.0","@mneme-ai/core":"2.203.0","@mneme-ai/xray":"2.203.0","@mneme-ai/matrix":"2.203.0","@mneme-ai/correlator":"2.203.0","@mneme-ai/embeddings":"2.203.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.203.0_1780644969407_0.488741530223175","host":"s3://npm-registry-packages-npm-production"}},"2.204.0":{"name":"mneme-ai","version":"2.204.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.204.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"bc7bdc227c05410a0ed9920c45d1f90855d3994f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.204.0.tgz","fileCount":966,"integrity":"sha512-0pNuJ+vF6B8dR9EYYEaD6EnCX2FMDggvV3vppY7hxhycE+y3pbrPLxzx7CB8xbeaPOF12h8arY2hyeA0267onQ==","signatures":[{"sig":"MEQCICZNAStKtArbDD7vwgpGgyFr5OK0kL6nQfmCgtWhe2roAiA5n4CyIk8xmv01cAI9TUAm4TeZHal/9bKJ7MdCPPY0KA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5229490},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a090090c3e729e27566b69b3d522be21c8debb39","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.204.0","@mneme-ai/core":"2.204.0","@mneme-ai/xray":"2.204.0","@mneme-ai/matrix":"2.204.0","@mneme-ai/correlator":"2.204.0","@mneme-ai/embeddings":"2.204.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.204.0_1780646830139_0.49304859877671414","host":"s3://npm-registry-packages-npm-production"}},"2.205.0":{"name":"mneme-ai","version":"2.205.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.205.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5b43174053f1786ec965f90159a0e971e2880efe","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.205.0.tgz","fileCount":966,"integrity":"sha512-KkWeQZaafq6+RgZPK614+NOooXCBAHit2DfVt6zck9COmLe2begJiQoWAJPPNAdvkxShyWFLvlkVmmbrR13NPg==","signatures":[{"sig":"MEUCIFMj+c0ZQGgozpZiKiYwubdUSB9Pm8Jjl0O1MR3OW3lIAiEA00q9B+InulXN5SiYHMrODpwp0bLrEwIiayNasz/FB74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5233619},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"35f348658b8ded20bb00be710eba9917bc779711","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.205.0","@mneme-ai/core":"2.205.0","@mneme-ai/xray":"2.205.0","@mneme-ai/matrix":"2.205.0","@mneme-ai/correlator":"2.205.0","@mneme-ai/embeddings":"2.205.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.205.0_1780647777521_0.6109020518993731","host":"s3://npm-registry-packages-npm-production"}},"2.206.0":{"name":"mneme-ai","version":"2.206.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.206.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e558fee5f657072223a71c858181352b14d1ffc2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.206.0.tgz","fileCount":966,"integrity":"sha512-35tSI2L5juUEj3wU955IDpQF/cAX8zcLQxrpmkjaVb4pUWbcry3USY02OdHHdqfGjOWnch7nrtUwqIeljaSQ6g==","signatures":[{"sig":"MEUCIQC1l0gphlcAk61WksLjo8HmKuIG/Cwbsq9tG/Le2NReDgIgLncaLhsL31E6k+uAj6JSRjvMEGd6RzB8oggYwZ2TKmY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5240665},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"86b8aaf6ed327d291005502038c6c59a0d3745d1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.206.0","@mneme-ai/core":"2.206.0","@mneme-ai/xray":"2.206.0","@mneme-ai/matrix":"2.206.0","@mneme-ai/correlator":"2.206.0","@mneme-ai/embeddings":"2.206.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.206.0_1780648915523_0.9968430116773106","host":"s3://npm-registry-packages-npm-production"}},"2.207.0":{"name":"mneme-ai","version":"2.207.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.207.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9ca31039d770db9cd401ceca0ce89a55d0ba2925","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.207.0.tgz","fileCount":966,"integrity":"sha512-XrdR4eDaLiY9v8VQqGZvm50k927+9CbSCnfYHUYBp6DUIJsjyovPnQEtNfS8PB5fi7eaxf5qFtxhOxd8qDdvYw==","signatures":[{"sig":"MEUCIQDvgQJ5nPK2QR9tWA8a1Vp4M1dZPBZUSxc4qMD+MQL7LQIgdSU27I/qiPfYYZC5KC6PKItonPyL7ux+oGyZ196iXlc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5249564},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4ec0b0181f2023696e7200ecd49f7cec6f979d4d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.207.0","@mneme-ai/core":"2.207.0","@mneme-ai/xray":"2.207.0","@mneme-ai/matrix":"2.207.0","@mneme-ai/correlator":"2.207.0","@mneme-ai/embeddings":"2.207.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.207.0_1780649505264_0.5746202650315997","host":"s3://npm-registry-packages-npm-production"}},"2.208.0":{"name":"mneme-ai","version":"2.208.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.208.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9a79a19d6817fce833d870be4c47aa3cd159fdc8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.208.0.tgz","fileCount":966,"integrity":"sha512-c1KqUfJ85CXcwpuogFuXVKMpC7wsWyawwz013A9G2/zzKjMat6yAixdWRZMmZKAuYxMM3PegzU3wHQ/r8EO1VQ==","signatures":[{"sig":"MEQCIF1OgJWE2mO6COVPw5ls+yymojRTqGrgbppJbHx0U8NjAiA0pBv0DVmZEHdI9oVv++5zs3lNEoykPoV6NPomcE0rsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5258205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"54660eb760e3648293a4ce59b86584ce20b23256","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.208.0","@mneme-ai/core":"2.208.0","@mneme-ai/xray":"2.208.0","@mneme-ai/matrix":"2.208.0","@mneme-ai/correlator":"2.208.0","@mneme-ai/embeddings":"2.208.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.208.0_1780650558568_0.2658838022731502","host":"s3://npm-registry-packages-npm-production"}},"2.209.0":{"name":"mneme-ai","version":"2.209.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.209.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a61705386765471a74f16285e0d923ff43a13fd7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.209.0.tgz","fileCount":966,"integrity":"sha512-PE98/ND8Damsm+m+fBDIKWVrou70syGtRDsapXgzSXBLEFmByDv0+M6CKluYAiNDlOBWxuPs4SIlkxJvsmhNPg==","signatures":[{"sig":"MEUCIGU4qi/DoPdHdSDZsfxZ/BbWFxRUJ3/wMfFDRdugzyJtAiEAxh0VkWuxJmF5Jpd064KGnWtUQqwhstKNoIADWkD3g2Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5258205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e3d63998f2c9fb1df31c5c68abd2842209a569e5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.209.0","@mneme-ai/core":"2.209.0","@mneme-ai/xray":"2.209.0","@mneme-ai/matrix":"2.209.0","@mneme-ai/correlator":"2.209.0","@mneme-ai/embeddings":"2.209.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.209.0_1780651053684_0.4093495941867922","host":"s3://npm-registry-packages-npm-production"}},"2.210.0":{"name":"mneme-ai","version":"2.210.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.210.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"cff56c3494ae83680fce15283893dea30c06c9cd","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.210.0.tgz","fileCount":966,"integrity":"sha512-mqrOiWe/28ldwfk4C63aZubchl+lqH+2JpJBBIBtdNWDechfeedN0wOVdVzR8ShZw3LdM8ocDVKAhsJZLbeqHg==","signatures":[{"sig":"MEQCIDcJvBMaVAOk0dG+yAZv5TB4ZDaOZSrrRbFNO/n9Ri3CAiA7xamj1SwMGL+Id3OUqk8xM7bP1OokvqFgZCYlbL1ABg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5258205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f3546f74ad93c3c360fba35d64d37d2c18f39e94","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.210.0","@mneme-ai/core":"2.210.0","@mneme-ai/xray":"2.210.0","@mneme-ai/matrix":"2.210.0","@mneme-ai/correlator":"2.210.0","@mneme-ai/embeddings":"2.210.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.210.0_1780651660950_0.5543064511849767","host":"s3://npm-registry-packages-npm-production"}},"2.211.0":{"name":"mneme-ai","version":"2.211.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.211.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f3840b871642ed7d910a07137118104c55b06273","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.211.0.tgz","fileCount":966,"integrity":"sha512-7VIt4OEEp1cS7YwrWHJm7SRyyep9maxd73Z25pwbNxUJhFuABWFLRTHXlWWyt7UcCfTJVsZ5umjUMy2KR8OwmA==","signatures":[{"sig":"MEMCIEDV1PpqXQzA+NilPRvR1jZRgnmMwIGJTUQZwOE0SDr6Ah8SC9MGD8r66sUnR7MsP6zJd8Lz/vbzlLaWu+NqijPg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5260836},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"638f78d2fc3ff3f2d981b36866cfd4d81dafa5b2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.211.0","@mneme-ai/core":"2.211.0","@mneme-ai/xray":"2.211.0","@mneme-ai/matrix":"2.211.0","@mneme-ai/correlator":"2.211.0","@mneme-ai/embeddings":"2.211.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.211.0_1780652562100_0.9565996715161784","host":"s3://npm-registry-packages-npm-production"}},"2.212.0":{"name":"mneme-ai","version":"2.212.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.212.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7c6e2c23cc0ae23147d67ad7cb713456eea37217","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.212.0.tgz","fileCount":966,"integrity":"sha512-nSd4+EQ1Z1NvRjRnN4aY6DxdeAtzmgInzIoPTEW7VRgSjbKE4bxg7niBmbYv3NNEKYKr5QjDBwRekrm7PngL9A==","signatures":[{"sig":"MEQCIDwqACcQUZXmLPri+iev/IofZGHhMJTrwmUoDn4Rsnv2AiBwmmXx3Czbx9gwAx4Ak/ddNas6ABtRQJzMhXqdamC+pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5266488},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e929115a77aed3b06c7a555e5fe52e87e85635c3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.212.0","@mneme-ai/core":"2.212.0","@mneme-ai/xray":"2.212.0","@mneme-ai/matrix":"2.212.0","@mneme-ai/correlator":"2.212.0","@mneme-ai/embeddings":"2.212.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.212.0_1780653394400_0.39252017379268955","host":"s3://npm-registry-packages-npm-production"}},"2.213.0":{"name":"mneme-ai","version":"2.213.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.213.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6928844f9cdb45625fe6670e32c185296602adb4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.213.0.tgz","fileCount":970,"integrity":"sha512-qDXGPgxhSCy+5ke5Tw1H8q59k782dmT66uk0OH8PIvIX9TzWdwW07nxxRRjbXFQ0BTlNtkG1dxWZQOlgeZIBtg==","signatures":[{"sig":"MEQCIHUBwhUdN3mXqWzmh6XlX/gzLz08fILhX7gEupHD4ND+AiBpp1hZ20acOA+cGDkXAGhL514lUb3XpqHeLu0rFaDwtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5273043},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9a8e466ccc40135496364cf636710cdae9268be1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.213.0","@mneme-ai/core":"2.213.0","@mneme-ai/xray":"2.213.0","@mneme-ai/matrix":"2.213.0","@mneme-ai/correlator":"2.213.0","@mneme-ai/embeddings":"2.213.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.213.0_1780654329229_0.7329374739890253","host":"s3://npm-registry-packages-npm-production"}},"2.214.0":{"name":"mneme-ai","version":"2.214.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.214.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c6a37970b09ead53f2e04c26fb214b33984bdbf0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.214.0.tgz","fileCount":970,"integrity":"sha512-ZhsAozO/uZ1M0XwGKBiK8/NuBCoeCWc1d6gOwMu+jgJg3cqJ0Onh4WRzUFVETyYNq1GhATMKwdDcr4sUFpaZuw==","signatures":[{"sig":"MEYCIQDkeUpaN9osRaoQ5etopR/W6IhSdmxfsNBKpEysnhapjQIhAO6fOqUDcacyQ6qWNR8iuwXwmSUbQWmTJhvDdru+xzad","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5273043},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"878f63f8e2d2fcdbc8b69bb33c5a3693c40aca0b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.214.0","@mneme-ai/core":"2.214.0","@mneme-ai/xray":"2.214.0","@mneme-ai/matrix":"2.214.0","@mneme-ai/correlator":"2.214.0","@mneme-ai/embeddings":"2.214.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.214.0_1780655378341_0.16500113346843892","host":"s3://npm-registry-packages-npm-production"}},"2.215.0":{"name":"mneme-ai","version":"2.215.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.215.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f0b31b09a125a89562d0520f5682bba4bc6d46fc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.215.0.tgz","fileCount":974,"integrity":"sha512-FTwmY/RcvbZw5EDuRvjN5iij5E5CZCdeoUGo28EnLC01KOQzKuY66OdvqRoHV8sFSJqD/GPXC90SJZpIAJoSlw==","signatures":[{"sig":"MEQCIB/L2GK87gxn+7x1ZD7WKpgM0+wMmOZo3fFjQnZg8NpiAiBso7XTFFforKJlPxZ/Cy2vNDxxdyTbjNM3fzZZ3hWZmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5304564},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8edc4c28bf13a96ed85f8d2dafc6bf45d6bfe4be","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.215.0","@mneme-ai/core":"2.215.0","@mneme-ai/xray":"2.215.0","@mneme-ai/matrix":"2.215.0","@mneme-ai/correlator":"2.215.0","@mneme-ai/embeddings":"2.215.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.215.0_1780657288652_0.8950652701044368","host":"s3://npm-registry-packages-npm-production"}},"2.216.0":{"name":"mneme-ai","version":"2.216.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.216.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"31b4f139ce05e3fab595f7388e62e4e3cc34f232","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.216.0.tgz","fileCount":974,"integrity":"sha512-Djt7n/Gft5NYTpcFBkQY+EAVn640cFtHNiMwjflwu+pe+2v9xh2bx0+qN5lfLbP1Mt3h+UhagIXv433gaLVzug==","signatures":[{"sig":"MEYCIQDjPd0rQlXU3DdTzJbB0taO+sher+ZxxkCe9w6ymAi1lgIhAPa275sWXvaaLnYIT0oxP/8v9bZY4aPnwVfDEMdVypaV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5306362},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"15e2233a85e98ab3582498d363558d7fc1e2ef2d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.216.0","@mneme-ai/core":"2.216.0","@mneme-ai/xray":"2.216.0","@mneme-ai/matrix":"2.216.0","@mneme-ai/correlator":"2.216.0","@mneme-ai/embeddings":"2.216.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.216.0_1780658018037_0.3507847754387896","host":"s3://npm-registry-packages-npm-production"}},"2.217.0":{"name":"mneme-ai","version":"2.217.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.217.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ffc8f2eac684fac42278f4916bcff9a988335076","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.217.0.tgz","fileCount":974,"integrity":"sha512-+Q7HjqvXE4jY/8mn77SdmqN7GbxAM/C19qjFHIJGbRCtkUlOSmR9jGoZgQWYVAaALMLNuUw3v2vSrvHL7zXDhQ==","signatures":[{"sig":"MEUCIAThR8b8cYFD2H6yXK0fGc36zmfDpwWzYi5+TROnDANwAiEAkvSFhn9+UBiD/gN6ghlYZI1a3PeLmKFxtN5XtiF2CL0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5308252},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9dbc69e4aec1286027d88cd4f7d673e165def28c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.217.0","@mneme-ai/core":"2.217.0","@mneme-ai/xray":"2.217.0","@mneme-ai/matrix":"2.217.0","@mneme-ai/correlator":"2.217.0","@mneme-ai/embeddings":"2.217.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.217.0_1780660186280_0.2434063119402139","host":"s3://npm-registry-packages-npm-production"}},"2.218.0":{"name":"mneme-ai","version":"2.218.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.218.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6e9f8864d13b382320369da383b3209985c28539","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.218.0.tgz","fileCount":974,"integrity":"sha512-BWkxxNmFFeERlFZPBLrt0gxfoJ5aY0zI5xTPzNNejxllUcuVggq8MPFws96Sz/YoIqHN6F6HUk/YVMs8qulnqQ==","signatures":[{"sig":"MEUCIQCImJJOiG2EZ06Df8Dj9YdIzAh4nzEWtLouaVUu2LJm7gIgZWZV0SNd/63bxMzkFUd3LH7on5O0d10rTC/NRgaJNRA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5316412},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"96ff5582568a6428475af678e40e6b60816a4951","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.218.0","@mneme-ai/core":"2.218.0","@mneme-ai/xray":"2.218.0","@mneme-ai/matrix":"2.218.0","@mneme-ai/correlator":"2.218.0","@mneme-ai/embeddings":"2.218.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.218.0_1780663962311_0.7594807483921833","host":"s3://npm-registry-packages-npm-production"}},"2.219.0":{"name":"mneme-ai","version":"2.219.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.219.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"07d3294396a261dba5dbb7a56e208ee15617ea87","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.219.0.tgz","fileCount":974,"integrity":"sha512-D9PnXqa1LTOEIUGxvrdm3xrha4f5JT1g2xrj2f/c3RAHiK9Dl3FX+r/8sGpJsGmBDBZYStvRg+h0q/slB1iGZA==","signatures":[{"sig":"MEQCIFu5SNwfziC+cz20MhIgMUsagwOJnN+mwAVHFNfN79glAiAWURqkH0eai9mt4dnsHSZ4rtjuQUzqFiKcWHzhWyQZug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5316412},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"85a5f29e03a220edffbbd938544b94ecdca4e733","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.219.0","@mneme-ai/core":"2.219.0","@mneme-ai/xray":"2.219.0","@mneme-ai/matrix":"2.219.0","@mneme-ai/correlator":"2.219.0","@mneme-ai/embeddings":"2.219.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.219.0_1780665041526_0.3180043339598875","host":"s3://npm-registry-packages-npm-production"}},"2.220.0":{"name":"mneme-ai","version":"2.220.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.220.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4f331102a3258fbbb0aa0fbd36c6da2f66136c23","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.220.0.tgz","fileCount":974,"integrity":"sha512-tcdGtloNmqc4ng+UtDggCA6VBUz1sRYznN3fNJdfAsqaR1BQFAFSZDj5kCrjWoFak4sO1ASLmiSqhOb2nyupPQ==","signatures":[{"sig":"MEUCIHed3qZSI2obab+lV9ESX4+LAx+B5fleiN/hx50cTC9FAiEA3IgU1F38KOtpJd4RelfGwX1ZcWMHkJ9cv4HWbnnA39M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5332089},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b585ca49714feb7bcc1ea8340ddd3a94d5e78a72","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.220.0","@mneme-ai/core":"2.220.0","@mneme-ai/xray":"2.220.0","@mneme-ai/matrix":"2.220.0","@mneme-ai/correlator":"2.220.0","@mneme-ai/embeddings":"2.220.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.220.0_1780667373395_0.9349905309715112","host":"s3://npm-registry-packages-npm-production"}},"2.221.0":{"name":"mneme-ai","version":"2.221.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.221.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5f7de78317ea49c5411134f276abaa89581121d6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.221.0.tgz","fileCount":974,"integrity":"sha512-Imz6k3p2UjR7oE2aIF8sZbKNo3xQPFsOdAPj46KOb1/59iwp+mn/leP5acGsg2lhJDjpuSUQeN/Q7OfQwPjmWQ==","signatures":[{"sig":"MEYCIQDDHRKRUQfl2OSzCU3jgbqNgSi1O0/7PQAiqaCkQL7sDQIhAJAgtvsz71sqrsqEPH3GKK3kEzBuDfoELa5TyTK+YI82","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5332089},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b1834d8b0af7f1ca28c22b3db31c90f99cd72dc2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.221.0","@mneme-ai/core":"2.221.0","@mneme-ai/xray":"2.221.0","@mneme-ai/matrix":"2.221.0","@mneme-ai/correlator":"2.221.0","@mneme-ai/embeddings":"2.221.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.221.0_1780669276279_0.07848534761083736","host":"s3://npm-registry-packages-npm-production"}},"2.222.0":{"name":"mneme-ai","version":"2.222.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.222.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d772614cebe8888363aab519b7da5024953d539d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.222.0.tgz","fileCount":974,"integrity":"sha512-0FyaxQH4+gPofaA90OMyJKYSANONcdVVfkd2HTRPYKX3aL/Q2JBmoXARr2KoJQrbNKpGif2VnAqoggMJ/rhEnw==","signatures":[{"sig":"MEYCIQDtI9gRfFMQ6BJpyRmFJbE/5x+GpQ4ZH9Wb5q615DcqHQIhAJhR3XAnP+oPkceT4TzuVy/PRXQeAgtUDKjVcCWiOGJG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5334555},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"787a9616c9a9ce4fa675c61376b1950a94f5f949","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.222.0","@mneme-ai/core":"2.222.0","@mneme-ai/xray":"2.222.0","@mneme-ai/matrix":"2.222.0","@mneme-ai/correlator":"2.222.0","@mneme-ai/embeddings":"2.222.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.222.0_1780670091234_0.8179205546154542","host":"s3://npm-registry-packages-npm-production"}},"2.223.0":{"name":"mneme-ai","version":"2.223.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.223.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ce9506c15affa25f72053c4be1dedfa036f499c3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.223.0.tgz","fileCount":974,"integrity":"sha512-PR2ItNFoghW64luTecuGPkazhwVUQ/+cNTILf306/QwFLwznluTWbBqATst8ahihCtPdFDRmDiWgX/tF1oWFLw==","signatures":[{"sig":"MEUCIQCqulj3z+LPPzKk5UISMwEWkPqw1UZyZf8Ob5A/9AUAngIgXKngC1fU95ihEPUh/XM+RMxoISWQ8m1RRDHVTA4hZeA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5341657},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"956ded90eb8b1ca0ce36709194cf93e34102c6c0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.223.0","@mneme-ai/core":"2.223.0","@mneme-ai/xray":"2.223.0","@mneme-ai/matrix":"2.223.0","@mneme-ai/correlator":"2.223.0","@mneme-ai/embeddings":"2.223.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.223.0_1780671396063_0.06042970748921106","host":"s3://npm-registry-packages-npm-production"}},"2.224.0":{"name":"mneme-ai","version":"2.224.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.224.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e6dc5a63122ae9dbf8f2a67dc138301fc2dd5d1c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.224.0.tgz","fileCount":974,"integrity":"sha512-yC6gpT4b0Nkptpm3143/t1c9VOUeWTS06c4rC58YzvSGrvfJjiMJqsoicareeyeAFyqNXbufYuF0r0/7ypMTnw==","signatures":[{"sig":"MEQCIGK8RE3DLXRetEkxEvF4+XvZAb3BQemGGniZ44iUDjyAAiAQyP1fWH6/M0qn62KdU9VfYY9jveZdn8dHjnPNIdLdtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5344428},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a80777bf392ee13466af77119c665eec7bb7cd6f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.224.0","@mneme-ai/core":"2.224.0","@mneme-ai/xray":"2.224.0","@mneme-ai/matrix":"2.224.0","@mneme-ai/correlator":"2.224.0","@mneme-ai/embeddings":"2.224.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.224.0_1780673121336_0.6864921052203146","host":"s3://npm-registry-packages-npm-production"}},"2.225.0":{"name":"mneme-ai","version":"2.225.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@2.225.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d7f7adf6e2392439cdeb5c9a8dee5f10ffb2ea8a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-2.225.0.tgz","fileCount":974,"integrity":"sha512-30kkadrrdNNqNA/0xeRRNa6T13918SfS0jf43VAf0dsEsOkca6gRINoNwSwFs2DUoyWFCjLYM1pbvXSBoL1hYA==","signatures":[{"sig":"MEUCIQClvl+KT3k/11VPxDBTDMn7mRepy1kvFAxuA/uSpX49twIgY/9t23/7H09MOAEVFiDlAdC0eu8hLPImspDRjp5V7EA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5345057},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1e22f2eb48a420b212be1ed5f1eef31ea4270a19","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"2.225.0","@mneme-ai/core":"2.225.0","@mneme-ai/xray":"2.225.0","@mneme-ai/matrix":"2.225.0","@mneme-ai/correlator":"2.225.0","@mneme-ai/embeddings":"2.225.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_2.225.0_1780673617906_0.38487066206638176","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"mneme-ai","version":"3.0.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.0.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"eac3c52b02f12127b56c9e7bec38e328b76342bb","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.0.0.tgz","fileCount":978,"integrity":"sha512-0awU/eJ2frDuUqJvUF4E1VIupNYSoCJ+w5dyfgwXMwqwN+m5v1EH9YjIURsNhyqdZXxDKBelUc2n2Cy6i1KNag==","signatures":[{"sig":"MEQCIDh1Efz6IcXDm1y9JJpCu7OPX3lgjocEz5MT2bJq36UOAiAjsSKkW5mj3btLdTnxy51zHswgk1vMynTQkuWjRDm8jg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5349636},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9a6ddbaef56bd0586fee236ebc5be9f6fc59f842","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.0.0","@mneme-ai/core":"3.0.0","@mneme-ai/xray":"3.0.0","@mneme-ai/matrix":"3.0.0","@mneme-ai/correlator":"3.0.0","@mneme-ai/embeddings":"3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.0.0_1780675213498_0.7243485028333447","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"mneme-ai","version":"3.1.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.1.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"10d6fba42a1a9722180c8e4bb2ad32d091fe63d1","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.1.0.tgz","fileCount":978,"integrity":"sha512-84l2JybEo4tSvz8C/xPEkhvg58uGD7qlUHheWLTXs9HQ6z9PzwhWp9ZzgaMJZ7jytYTdKwxtfD/HqxbFLBccGQ==","signatures":[{"sig":"MEQCIGf+PRjxXZdMJ49yjzvg3bI/g5F8+BwFwjiAGRPk/1G9AiBWS/+cu75yIn31LikHGe6HKgJ7UXfDgHEJ1b5HsownPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5349636},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1c9515f48df7450d630e30571af4dffda9084008","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.1.0","@mneme-ai/core":"3.1.0","@mneme-ai/xray":"3.1.0","@mneme-ai/matrix":"3.1.0","@mneme-ai/correlator":"3.1.0","@mneme-ai/embeddings":"3.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.1.0_1780677057907_0.045520132965100046","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"mneme-ai","version":"3.2.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.2.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7f7965fdcdff08d1d5fcf687af24157676cf2cac","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.2.0.tgz","fileCount":982,"integrity":"sha512-CxJMFt3xhNktprYPkdCN5k6yZJAzjOzv9s82iWrJA1FB2HBWfpPxIX8d6BAgXoKJ1y9CYmhC5iR/0MVGKT4Geg==","signatures":[{"sig":"MEYCIQCdQwh4w0s2/4atEFWubylx3/cqiBNSUZf0weXpLOcpUwIhAKAVrS3GKpNcdpMpGOeI7n8q9nhLVpzI4lQh6a5v7L4z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5361914},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"955da41eaffdf43f8705b4519ad44aceabfb4f75","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.2.0","@mneme-ai/core":"3.2.0","@mneme-ai/xray":"3.2.0","@mneme-ai/matrix":"3.2.0","@mneme-ai/correlator":"3.2.0","@mneme-ai/embeddings":"3.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.2.0_1780678010791_0.7474521472066886","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"mneme-ai","version":"3.3.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.3.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a5730399eab464a56de1f2dfb62d0753b6b57932","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.3.0.tgz","fileCount":982,"integrity":"sha512-8IzeIVoroOcTHySxxUNLpDjShq4sFoLVNllshH4V5WnlCLWq8EP/jLgRGaXOJu731oKmhnpJdmX41kHzIi72Xg==","signatures":[{"sig":"MEYCIQChhbZNSM3/Rm9/3UGWOqRj0BY7yAZUoFayOMP8F5YOQAIhAI0HbY25Sl3cDb5Gd54dQe5AAYcIIRMABqIQIQiLIC+r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5368538},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"068e0968f4eadccac68b889afec07d780db234cc","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.3.0","@mneme-ai/core":"3.3.0","@mneme-ai/xray":"3.3.0","@mneme-ai/matrix":"3.3.0","@mneme-ai/correlator":"3.3.0","@mneme-ai/embeddings":"3.3.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.3.0_1780679042354_0.4380413276914872","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"mneme-ai","version":"3.4.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.4.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4dc0b7f1bd607662c4c7a86915dfccc6ee957ea9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.4.0.tgz","fileCount":982,"integrity":"sha512-bZjOVghNw2JVq2NAj7hvWaaL48ul3N3RDBvjuLXr9UqbUM7rMzFER087i/siVZvRDa1s8TRed52cdz/hfb894Q==","signatures":[{"sig":"MEQCIEGQbk5d3BQhxJfplE3pludYoqsA6fhq4tBBL5bkmgG0AiAYBVfrzwonkEGLdquRtUqAEEaUCU3nOZzsv276s865Sw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5368538},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"76185e1308ec7766f825235d882c7124efb21f59","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.4.0","@mneme-ai/core":"3.4.0","@mneme-ai/xray":"3.4.0","@mneme-ai/matrix":"3.4.0","@mneme-ai/correlator":"3.4.0","@mneme-ai/embeddings":"3.4.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.4.0_1780680504435_0.22745697532176967","host":"s3://npm-registry-packages-npm-production"}},"3.4.1":{"name":"mneme-ai","version":"3.4.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.4.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3799895f82311cc64e9c8cd2cfe4ff8b85ec19e4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.4.1.tgz","fileCount":982,"integrity":"sha512-NBy/PVsJoTCKOUTDv2earmWZcNFMbTS4pWPYsENhyc3IGMQNmhCN57cMvzWa3FhBwM0kwR3WAgFlkSfn15uxCA==","signatures":[{"sig":"MEQCIEYevmHDNnY2K6PeHZLg/AU93ErBpUfAEgmri3hVk4jKAiBCRa2cWpSy0ZHjudZqiVrB4VEFLRcREsn1+8atQoRlpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5368538},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"cf0762d3d5c32e930cdc301c693a68756d687783","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.4.1","@mneme-ai/core":"3.4.1","@mneme-ai/xray":"3.4.1","@mneme-ai/matrix":"3.4.1","@mneme-ai/correlator":"3.4.1","@mneme-ai/embeddings":"3.4.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.4.1_1780681088594_0.9227814024502052","host":"s3://npm-registry-packages-npm-production"}},"3.5.0":{"name":"mneme-ai","version":"3.5.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.5.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"71d7cf9dcbb3788337dcc944e5e9c58c77eb2440","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.5.0.tgz","fileCount":982,"integrity":"sha512-N6Lhy0YlkiequhBiHK/tGQNko4hDVnDs6Vu3Fl+2F6dgWNkTnhAGMOUSKkpiMjQbKe2gliFNiFNQd6Ye7MifnA==","signatures":[{"sig":"MEUCIHL1Tgf5nX00ToSRiznltxJkt2/hitosxTHrC/dcpupyAiEAjRRSh1cxynIbAMKdfc52hIMMUJQTwjJD01GWCyuofXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5373895},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c9f8582b2bfca1ad5f13cc8ba01801558141cb18","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.5.0","@mneme-ai/core":"3.5.0","@mneme-ai/xray":"3.5.0","@mneme-ai/matrix":"3.5.0","@mneme-ai/correlator":"3.5.0","@mneme-ai/embeddings":"3.5.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.5.0_1780682669793_0.09391273777735587","host":"s3://npm-registry-packages-npm-production"}},"3.5.1":{"name":"mneme-ai","version":"3.5.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.5.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"39b6934583d909b27b947f2c5321eeeac289ae99","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.5.1.tgz","fileCount":982,"integrity":"sha512-r5dp8Hok7zIXLGbz0Fb8rLkHXCWCr6adMKSX53kAUxdqdljJwvW9wuL0P/I594llXnKbal5cxZZoPcqLb+3L5A==","signatures":[{"sig":"MEQCICJVGJM+WySIwnwkAutChhziJApCSajRcLEjQzCpRjUNAiBbh6ck5W61m3PpEbAlUtQ7ujRmRX53SSoSwRfkXJBstw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5373766},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7904ee423b2978037e6c526f15e3aa5bdfd6a791","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.5.1","@mneme-ai/core":"3.5.1","@mneme-ai/xray":"3.5.1","@mneme-ai/matrix":"3.5.1","@mneme-ai/correlator":"3.5.1","@mneme-ai/embeddings":"3.5.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.5.1_1780683226383_0.23944999693000124","host":"s3://npm-registry-packages-npm-production"}},"3.6.0":{"name":"mneme-ai","version":"3.6.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.6.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"86c7272d0968a80ab090f526b0e389c2d30e0e69","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.6.0.tgz","fileCount":986,"integrity":"sha512-9MBtsz0zKVz6WrCDUwyzIRL5jwOz5383tcnu9sFcTJhTzZXobBHPYoYhGEcIqFtKleqckrv4aNbmDRQiM746NA==","signatures":[{"sig":"MEUCIDKfnFnkVqK/c1FGpJ8YqTF4dXcBr0YeJeHJoujbIRJCAiEA6peFrqCaT1CTVsp4hbAQI7znbqBP7UYIzY62PKqXV88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5383172},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9d65e3b5095717d78146ddba3f1400ce3523f8d3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.6.0","@mneme-ai/core":"3.6.0","@mneme-ai/xray":"3.6.0","@mneme-ai/matrix":"3.6.0","@mneme-ai/correlator":"3.6.0","@mneme-ai/embeddings":"3.6.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.6.0_1780684395380_0.45401563494737607","host":"s3://npm-registry-packages-npm-production"}},"3.7.0":{"name":"mneme-ai","version":"3.7.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.7.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3cf8c68433be19f491c8596b9088297b2848770c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.7.0.tgz","fileCount":990,"integrity":"sha512-6mIDd1BblQ4hxrOsCM0YzfEo4cccbnBQHYrYD38foOicZ7/+5vHw2afN/4AXSbFxj7v4Dg5ZE0fiYbyaK/1Pgw==","signatures":[{"sig":"MEQCIHGiMn7/1aspmPnTQMslPqxv4j8dhXuuqY2fjIQXFbr7AiAnZkNP5mbCVEdq7T5cCSmJctMEAjADvMh0IztWgFU+cw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5395710},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4049a9962d14902551fb57183a9bc1cdf6d9f954","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.7.0","@mneme-ai/core":"3.7.0","@mneme-ai/xray":"3.7.0","@mneme-ai/matrix":"3.7.0","@mneme-ai/correlator":"3.7.0","@mneme-ai/embeddings":"3.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.7.0_1780715105562_0.43290678876841127","host":"s3://npm-registry-packages-npm-production"}},"3.8.0":{"name":"mneme-ai","version":"3.8.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.8.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"42193faf27002e37aafd1b8e6572384f1a11f75f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.8.0.tgz","fileCount":990,"integrity":"sha512-RJ07XD8w8k6izZjjhjp/3PrQfwgiyeZa2ZNcuaBCsbE0kYRxsf9qZDYIzUwOFX3Fa0t7FQwnjEBbTKm1+W0Jhw==","signatures":[{"sig":"MEQCICGe8wFWe+RYaBL6LRPfHYWwN4RRs9nmPbTMp+IHiM73AiB2HQW9edZ4H81MHIyYq5/AefJMAs7CYhAr+aPqAws2cg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5395710},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"84679874c58d74196cae8e3da8b0ddcc026ec33c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.8.0","@mneme-ai/core":"3.8.0","@mneme-ai/xray":"3.8.0","@mneme-ai/matrix":"3.8.0","@mneme-ai/correlator":"3.8.0","@mneme-ai/embeddings":"3.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.8.0_1780716018484_0.36798002224718185","host":"s3://npm-registry-packages-npm-production"}},"3.9.0":{"name":"mneme-ai","version":"3.9.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.9.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"80d767659ab0df72f09b721c288582182d402055","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.9.0.tgz","fileCount":990,"integrity":"sha512-eCkQZP8zxDDhQvAh8QMcaEYsyyQ35gAKoZF+b1dGDLkqdhBRKqDzgwWnytlT3EVBPkX9W521Z9MIkxPHKRoMDQ==","signatures":[{"sig":"MEYCIQCqVSqhMobwezjZvq3+tyIMn32AaWNMpZv4GdnreRGoVwIhANg14cotfjC+Hi2c41r7FLmYbZuXyX5Aiqcv+kz0/LoR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5398645},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6881e8297090ea22e177508e10be681ba376e70e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.9.0","@mneme-ai/core":"3.9.0","@mneme-ai/xray":"3.9.0","@mneme-ai/matrix":"3.9.0","@mneme-ai/correlator":"3.9.0","@mneme-ai/embeddings":"3.9.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.9.0_1780717080788_0.8362540989234557","host":"s3://npm-registry-packages-npm-production"}},"3.10.0":{"name":"mneme-ai","version":"3.10.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.10.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"132520a025e214279a95c964c1ca04c9c039c52a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.10.0.tgz","fileCount":990,"integrity":"sha512-7BrI827sK6TLAw0uckUKPU2inBzmJrZAReQr8j9uCXyXtB4e5+Sz1qYEniSaUZclPrjUSeomHhBzsnC5ah7TlA==","signatures":[{"sig":"MEYCIQCVsviNvGc5XDATLe0S80qHp9+nOBdDUqFC7oTejdB9mwIhALHAO8z8pjuA8LODIK8CYEoGuShsi9tHw70Rio7moJuW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5403863},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f8c0a12d7667809dea9e7ca3eadb79eeb1a9852c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.10.0","@mneme-ai/core":"3.10.0","@mneme-ai/xray":"3.10.0","@mneme-ai/matrix":"3.10.0","@mneme-ai/correlator":"3.10.0","@mneme-ai/embeddings":"3.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.10.0_1780720077628_0.4542372963834498","host":"s3://npm-registry-packages-npm-production"}},"3.11.0":{"name":"mneme-ai","version":"3.11.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.11.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3d6f98948c3eae9d9015c34ed5eedf77c1f75db7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.11.0.tgz","fileCount":994,"integrity":"sha512-hjIkKzgCGFxn0W0bwjcEq7GXkEbx67JV6ZmblMJE3CcPCs2pouJzCT9mAl4ZgLeAvVuGovuLmaDme0cDSaHi9w==","signatures":[{"sig":"MEQCIDjN6xdaDrmVYlkiiijUp2TV2RRRdPaTlOqWWgk8HmtWAiBCPa2QqtnPggPY2YLGZTP379IFkrxECrUh1+ilyY95lw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5408841},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"cd22257f206556e83d60636a03e2e373a45fc2e4","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.11.0","@mneme-ai/core":"3.11.0","@mneme-ai/xray":"3.11.0","@mneme-ai/matrix":"3.11.0","@mneme-ai/correlator":"3.11.0","@mneme-ai/embeddings":"3.11.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.11.0_1780721311333_0.7048934176986619","host":"s3://npm-registry-packages-npm-production"}},"3.12.0":{"name":"mneme-ai","version":"3.12.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.12.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e16304be41cf43b8a45e01a12fb6a12edec933c5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.12.0.tgz","fileCount":994,"integrity":"sha512-V/L7F4yiW303B7tpk/w6gF0AgiTIX7GOAecCaT3SRSjO4cmI5DuSJy8Z9ETH6Hz4+1/RIX5f4YRjvNIaFvQPWg==","signatures":[{"sig":"MEUCIQDBG5agGyAxOq4eBkTZxNhYPjveAujlVsXoaLvMDHA3wQIgM5ox1Ol3ZlZlX3/fBlKUvo1a5HJwGcp6L6zjs/ijvmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5423019},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9a7b2fa78f15ebb37ec5ea1e1ef1ae12f8c84e18","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.12.0","@mneme-ai/core":"3.12.0","@mneme-ai/xray":"3.12.0","@mneme-ai/matrix":"3.12.0","@mneme-ai/correlator":"3.12.0","@mneme-ai/embeddings":"3.12.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.12.0_1780722156812_0.5775245048939093","host":"s3://npm-registry-packages-npm-production"}},"3.13.0":{"name":"mneme-ai","version":"3.13.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.13.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a37cee0b18164c1eaacadd0ad15b9989c16298d0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.13.0.tgz","fileCount":998,"integrity":"sha512-BbI2C4U+HZ4yUQ/eXrOhM05gDCtAZAMwygDT65CUGTYmFHcp6BPRLhNQ4VFnVtosADxZciWJ3Njc1lFIblVKvQ==","signatures":[{"sig":"MEQCIGwZmvx0dvQf6Y2chkbinxsXOaCPwm6AL7Cq14dEHe/SAiBJYp/igdCVvqRLWV9Xj/Hr+AVy3p1NB6S2b4cipD0gWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5429349},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"070cf651e10d073e063f2b80c079e45bac692f8b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.13.0","@mneme-ai/core":"3.13.0","@mneme-ai/xray":"3.13.0","@mneme-ai/matrix":"3.13.0","@mneme-ai/correlator":"3.13.0","@mneme-ai/embeddings":"3.13.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.13.0_1780723294827_0.13310051251134225","host":"s3://npm-registry-packages-npm-production"}},"3.14.0":{"name":"mneme-ai","version":"3.14.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.14.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c88949a1b874a5c8e80bcbe254a4ae658d7d9962","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.14.0.tgz","fileCount":998,"integrity":"sha512-U05wKz4My9qZfcLq021gUyF5u2WJ8gr168Qn7sFCwabqeD/0eKbmEFitcmrDbxlElMvJS5xngAyhR6cPR1cbJw==","signatures":[{"sig":"MEUCIBZKVDsbn6VZEJqZpxQkwL96R/sdmAKd6lBPmbSQSs6yAiEA6CeoCiYXsZgWWndmuOj2Vsilr6XNS+rNdO6+XR8CwUc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5440074},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c8362bca44953b222f4268898a0b7a40233b1230","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.14.0","@mneme-ai/core":"3.14.0","@mneme-ai/xray":"3.14.0","@mneme-ai/matrix":"3.14.0","@mneme-ai/correlator":"3.14.0","@mneme-ai/embeddings":"3.14.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.14.0_1780724329026_0.5976125889937229","host":"s3://npm-registry-packages-npm-production"}},"3.15.0":{"name":"mneme-ai","version":"3.15.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.15.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"086d49937c664b35f531297130ccc0ca3e71cd29","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.15.0.tgz","fileCount":1002,"integrity":"sha512-ttr0GySCyjiPwAvmL/kYnuK5sxnzl7vPhJfys+t1cD8EXJpO5mdV4e6z/TAleZOgLHBa5evahFlfT4iceF2ZsQ==","signatures":[{"sig":"MEQCICScpbwgW3sqB6oM47ka23q8MShBOphMyfAE+PuLIU+UAiBaVlkD5KFB0DH7XfC0iBkIWqfpAciSB3a8aFYkfAQWCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5456160},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7b97033acedef75cba936555299d38c43d0f2339","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.15.0","@mneme-ai/core":"3.15.0","@mneme-ai/xray":"3.15.0","@mneme-ai/matrix":"3.15.0","@mneme-ai/correlator":"3.15.0","@mneme-ai/embeddings":"3.15.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.15.0_1780725252797_0.8796589999220805","host":"s3://npm-registry-packages-npm-production"}},"3.16.0":{"name":"mneme-ai","version":"3.16.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.16.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"af1cdfa5d5ac7cfcbba4281811d743cfcbab2646","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.16.0.tgz","fileCount":1002,"integrity":"sha512-hPYiwxL0uWHqBywIpd+T4CRAY6HBZ6zwm/HfIWjP+x39qHjuXpr6+REOQRw7Jlb8UVFQMy47OnjLb0rypoBtOQ==","signatures":[{"sig":"MEYCIQCckds0qsBvHaJ+r+gyQL3TjZeKKHGCDwRs4NMi9Qeg/AIhAM7jDKoaf01zJLdZ/ZCjzyc6T0U3G6jFd3At94KGXKLG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5464083},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a26643bed9fd79fccfa16111adae1e1781787c5e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.16.0","@mneme-ai/core":"3.16.0","@mneme-ai/xray":"3.16.0","@mneme-ai/matrix":"3.16.0","@mneme-ai/correlator":"3.16.0","@mneme-ai/embeddings":"3.16.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.16.0_1780729212843_0.4927993973621221","host":"s3://npm-registry-packages-npm-production"}},"3.17.0":{"name":"mneme-ai","version":"3.17.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.17.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7e434b1886bcd921de919e3587c12c3c4f1850f1","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.17.0.tgz","fileCount":1006,"integrity":"sha512-Ynt5MsFEyTZwLV0x2QogXYYqTvm27ZL7nx1cOWEsSkx76Px/9fqukLpighBhcKHOtLIlTa6+Ej6RM/bNCSsA0Q==","signatures":[{"sig":"MEUCIDIHiFXzeghICbaV7Wx+VU17Wv29ryzOr54OUeiqmYLgAiEAriuzFIBd1KMQVjz5EZSwbQ0ezNyaWx7AQN5dzoNBV1E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5473348},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"67018ff47b60e914551c4e87bc234c228b15dea3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.17.0","@mneme-ai/core":"3.17.0","@mneme-ai/xray":"3.17.0","@mneme-ai/matrix":"3.17.0","@mneme-ai/correlator":"3.17.0","@mneme-ai/embeddings":"3.17.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.17.0_1780731131090_0.7214948331718463","host":"s3://npm-registry-packages-npm-production"}},"3.18.0":{"name":"mneme-ai","version":"3.18.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.18.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8a6511d3f00b39eef580fa95b94fe56e7ebb79d4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.18.0.tgz","fileCount":1006,"integrity":"sha512-K08iTlwRWvTTX1A5xVSsrIlKAJlgWnRN53mR7ASGqRPFDB8VYRUnMaN4bk+HT+IRaCB0Mkm85yKEzCp85/XBGg==","signatures":[{"sig":"MEUCIQCItnMe2nKswHOeN0iH4TF2umZp+Hu94OIiloOr4MAvrQIgDD8el4IYqXZysUEz8WT6km9BZ05LS95syG+MotHhBjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5484253},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5e8598366ec6de5d20682f39a9cd1f5061c0023f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.18.0","@mneme-ai/core":"3.18.0","@mneme-ai/xray":"3.18.0","@mneme-ai/matrix":"3.18.0","@mneme-ai/correlator":"3.18.0","@mneme-ai/embeddings":"3.18.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.18.0_1780731661175_0.578256809399865","host":"s3://npm-registry-packages-npm-production"}},"3.19.0":{"name":"mneme-ai","version":"3.19.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.19.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6acc7b6fea136a84682a3dd936e42734f27aea85","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.19.0.tgz","fileCount":1006,"integrity":"sha512-LIUAxVYdfA4mTNyijJuEwWZj5/Mb0IP49hK30uTrJtfY6iLgFEfE7Pq/JxoxGsZPv7B/A+KgZ+2m8L4usFRMXA==","signatures":[{"sig":"MEUCIEIb6lSkAheSDgadlWTk27AOnm52jAcP2SFoHMsR4JFXAiEArJNokqr2BALyzgWQ6+cQ1yusJ885m53DQSjOUaqLhYk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5488160},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"711b1e5f7a34acc5623880867a293eb042ca88b7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.19.0","@mneme-ai/core":"3.19.0","@mneme-ai/xray":"3.19.0","@mneme-ai/matrix":"3.19.0","@mneme-ai/correlator":"3.19.0","@mneme-ai/embeddings":"3.19.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.19.0_1780735385560_0.9267253976385756","host":"s3://npm-registry-packages-npm-production"}},"3.20.0":{"name":"mneme-ai","version":"3.20.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.20.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6d55768fce986a62cc4b82882cbe5758a8fed834","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.20.0.tgz","fileCount":1006,"integrity":"sha512-YkrZP39v4VtwrlHY/iH5Q40yxWjClAKqknly1zPbC5KbdZRlS+RJsyFkd9uPOoh2XyIOG30hg/hmeunv7fpCJQ==","signatures":[{"sig":"MEYCIQCG3NsdByg9qz42urOdGv4gGHTehOGeEYtZXavHNY7pqwIhAMUdeY7ows6hiHSK1Kmr2m0jGyqKnTcrEF+wG0MlGY0p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5492188},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"bc1c56c0f05ecc1eec61dba7b02cfd99d905bea4","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.20.0","@mneme-ai/core":"3.20.0","@mneme-ai/xray":"3.20.0","@mneme-ai/matrix":"3.20.0","@mneme-ai/correlator":"3.20.0","@mneme-ai/embeddings":"3.20.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.20.0_1780737648337_0.813053961795454","host":"s3://npm-registry-packages-npm-production"}},"3.21.0":{"name":"mneme-ai","version":"3.21.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.21.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0b9c7d5b0803ba0c39941f40c2d247fe019ccf15","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.21.0.tgz","fileCount":1006,"integrity":"sha512-qSvPimuxjkZPqcScuju1uu2x9UCveF7xZ2pwgZJC0WtNlHpRxVIRAU6EXRYuje2Ng7NsJeQNy/s7pwYCQguM4g==","signatures":[{"sig":"MEUCIQCeeYROIRduVbzFafAQg0y6TS1R44QF6JArmxE6EhhJVQIgL4HUl3sWTjXyAtDUAfv4FIcxG7IlAQvUwhyWf7CFqZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5492797},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"08a768aeff29674028bc5a12e7f1bb52137d2a83","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.21.0","@mneme-ai/core":"3.21.0","@mneme-ai/xray":"3.21.0","@mneme-ai/matrix":"3.21.0","@mneme-ai/correlator":"3.21.0","@mneme-ai/embeddings":"3.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.21.0_1780741364224_0.34779567886774787","host":"s3://npm-registry-packages-npm-production"}},"3.22.0":{"name":"mneme-ai","version":"3.22.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.22.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"55847805261901a3aef00128c7ea7e66fbbad973","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.22.0.tgz","fileCount":1006,"integrity":"sha512-6Fg7AiK6ouHeWaWaYVyrZJetMU+VUWKpw3rw3aLBWy0wR79HH8m8tC+l4O3nZukPMy08y7JSDji/8D6IHe56Ww==","signatures":[{"sig":"MEYCIQDtGsKKCO0q3wcTW+9WqU3ZLPlw6kpPsNJMcieSKzKAHQIhAKWdQR6T6/RcG35ydHx1+4idOOTyaa6Oa0hrhpYSayDQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5493890},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4b1fa9529a5bef657528afbf0ad9d1924c01bcb9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.22.0","@mneme-ai/core":"3.22.0","@mneme-ai/xray":"3.22.0","@mneme-ai/matrix":"3.22.0","@mneme-ai/correlator":"3.22.0","@mneme-ai/embeddings":"3.22.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.22.0_1780741831031_0.5731510220926539","host":"s3://npm-registry-packages-npm-production"}},"3.23.0":{"name":"mneme-ai","version":"3.23.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.23.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"df78fd919cd622120708c2d2c7e35a97b1bbc2e7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.23.0.tgz","fileCount":1010,"integrity":"sha512-JptbFFczfWd9VT0ooknnq8QRCyXDpUuF5oQc7xKJdj/14Vuxp8hO2pGZzqJAbnuNNS3PVwAdAoqpmdZvO2Seiw==","signatures":[{"sig":"MEUCIQDpSRqNgEo2srB8wSVMoSizn3fh+H6+6cEx2ld0nxm8XgIgGlzNMG9FlfauITD6dNDqAhtKKIrVP5/uBU3jIV8GBeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5506792},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"84caa9b3de856e3b5be27aa9843b5fce0b3c489c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.23.0","@mneme-ai/core":"3.23.0","@mneme-ai/xray":"3.23.0","@mneme-ai/matrix":"3.23.0","@mneme-ai/correlator":"3.23.0","@mneme-ai/embeddings":"3.23.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.23.0_1780743809427_0.41997037726828457","host":"s3://npm-registry-packages-npm-production"}},"3.24.0":{"name":"mneme-ai","version":"3.24.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.24.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"38bf8d0003fdc48112f96c9f6475ed3a726082d4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.24.0.tgz","fileCount":1010,"integrity":"sha512-SxkL5pMqSfYEoXGbNymQuVE4ZtyDBAHe65bCHQqdk5gM/rZXDnItKo49jQVnWXP2uVyNyX8t7oG2HSV5dI6oew==","signatures":[{"sig":"MEUCIQDz+OvOQYLwHWP7pt6vb+4aRfyZGml0529CDwV9YD9auAIgEgLeYbGkYBCksYp6ZLk20CtpIWolCQs9NMej9myoWgg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5510780},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"352e5cd5af33a5988e7f93da62af63d120489886","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.24.0","@mneme-ai/core":"3.24.0","@mneme-ai/xray":"3.24.0","@mneme-ai/matrix":"3.24.0","@mneme-ai/correlator":"3.24.0","@mneme-ai/embeddings":"3.24.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.24.0_1780745319277_0.4032061381936969","host":"s3://npm-registry-packages-npm-production"}},"3.25.0":{"name":"mneme-ai","version":"3.25.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.25.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"73fc1e402b584d525b5f8e2f91a2abf74a9382a2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.25.0.tgz","fileCount":1010,"integrity":"sha512-NfZ1O9pgOm/8BPhevovN5bpmA/l6j2oyaRyeLj3lhdrEbS4a6t0aoipyZiC8LgjG6hLrxAa5Cfe8vCmesRO2WQ==","signatures":[{"sig":"MEYCIQDKNxiELn0pJAjU96O5IBb8uVvKfBME1hA68ZAWINXPEAIhAKNo6oaqZ+angvFJCL4wfz8ZsY9Em01i07HJzuHHVCMj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5512338},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"464e2108f544ac0572c98480dd519a15f052a5e3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.25.0","@mneme-ai/core":"3.25.0","@mneme-ai/xray":"3.25.0","@mneme-ai/matrix":"3.25.0","@mneme-ai/correlator":"3.25.0","@mneme-ai/embeddings":"3.25.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.25.0_1780747738901_0.7152142904659364","host":"s3://npm-registry-packages-npm-production"}},"3.26.0":{"name":"mneme-ai","version":"3.26.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.26.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7dc1ea516d7a6fc76aec35c2a07fbe2dd496d6b4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.26.0.tgz","fileCount":1010,"integrity":"sha512-5rgFoIGXXeipxTP3oer1wt4dWW2/sRek0GbVknLUB68l1hC8FRHHFx0PiuSh9R0AWYgPfFv77WKpcbU52kA13w==","signatures":[{"sig":"MEUCIFqGrbKau+7y3I7y2VBShwDYcgdIVT+taGjzMDsuwefdAiEAm/wCyD8sMyTKT+6SEwvtwyODzhB39W+tAV0moIunPnk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5512338},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"844575fbec309d1ba2b5e47e24870c1477faef98","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.26.0","@mneme-ai/core":"3.26.0","@mneme-ai/xray":"3.26.0","@mneme-ai/matrix":"3.26.0","@mneme-ai/correlator":"3.26.0","@mneme-ai/embeddings":"3.26.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.26.0_1780748910399_0.14788949825978315","host":"s3://npm-registry-packages-npm-production"}},"3.27.0":{"name":"mneme-ai","version":"3.27.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.27.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c83e60071bb6904ec579fea753b7cbf430a2f818","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.27.0.tgz","fileCount":1010,"integrity":"sha512-lwopfYWgFU29MQ7BnmELK9NKW9jdeGZ6MM1HRU7LOD+6vqdoqq+9mTYhFkzOTJePmVuF7MDevnGk1fznHtdDvQ==","signatures":[{"sig":"MEUCIQDpTyxU52Ti2SSXtyddq1OC1vv5abby4MQJH1rIoryZSwIgRedPSDle5/WvUV07Vr0O32Z2g6/duS7RqOcTIAw09Qs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5519868},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5a6398d20c84a0a5098cdf018d2e8a6c6c73cbb0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.27.0","@mneme-ai/core":"3.27.0","@mneme-ai/xray":"3.27.0","@mneme-ai/matrix":"3.27.0","@mneme-ai/correlator":"3.27.0","@mneme-ai/embeddings":"3.27.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.27.0_1780749526831_0.6529221485257499","host":"s3://npm-registry-packages-npm-production"}},"3.28.0":{"name":"mneme-ai","version":"3.28.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.28.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"dc35191935763608d72182c0689be6f19575d22c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.28.0.tgz","fileCount":1010,"integrity":"sha512-nQRCFYDqr8kFtR3guwuwanVd89cOkQYDHRyNuHi9JDhZdBkkCLcOkomhtEh1dkunFOhm88iMb+uhYPszgg6X3A==","signatures":[{"sig":"MEUCIQCTMeEAvwjDhY3+gXT51/sWuDBHCwVo4/1rUXXS8M+HmwIgbtn8EWB621xL2FcadDzq2udwYGQn62MlC+kRsWLup9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5523037},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"341b103d46e6f82fb53cb4366bed5a494a5ea4e3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.28.0","@mneme-ai/core":"3.28.0","@mneme-ai/xray":"3.28.0","@mneme-ai/matrix":"3.28.0","@mneme-ai/correlator":"3.28.0","@mneme-ai/embeddings":"3.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.28.0_1780750390927_0.3643873630745098","host":"s3://npm-registry-packages-npm-production"}},"3.29.0":{"name":"mneme-ai","version":"3.29.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.29.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"42cd1ce805c59803f2a2b0fbced4202f90fb709a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.29.0.tgz","fileCount":1010,"integrity":"sha512-yj6mxXdoGDiSM0CKLQQyfBXAFbJpIDQ0HYYa3hpg7v3qlqTkQWN9qY84EFld+j9VfOawI2cY4YgaUHC7q4E1Fw==","signatures":[{"sig":"MEUCIEOzQiNEm0Je1IwzlpFin+py4QnHclq3c7GRRDc4vI8uAiEArkcTc2rCCti9rzTs+HhZZi7rfk8g5DAl62nIk7MKPgc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5525988},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a2b4d7f7745dbf8147cf2adfc3e20d8299e4bbd6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.29.0","@mneme-ai/core":"3.29.0","@mneme-ai/xray":"3.29.0","@mneme-ai/matrix":"3.29.0","@mneme-ai/correlator":"3.29.0","@mneme-ai/embeddings":"3.29.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.29.0_1780803250532_0.5412213429404924","host":"s3://npm-registry-packages-npm-production"}},"3.30.0":{"name":"mneme-ai","version":"3.30.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.30.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1cb06cd9f04c0ae3f7a4e3887df5409d42f0abe7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.30.0.tgz","fileCount":1010,"integrity":"sha512-u5XQlZW1DJI/kzL2zF4jbdoCAfWlo0KA4C+pgevNBkwjKzMi5y8CbNFEjIpt0AFMJZ5hAgxaXSNWMht8iEzw/g==","signatures":[{"sig":"MEYCIQDJslHc4F0Eu2L25RdRv3oQhTNABS6aGXFTzfeZKvNizgIhANXrSVkO/7LdKewpLjVhyCBFnXEtJplrThs9LtMZLoKP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5525988},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"53a5f3a4c64dfda34aed67bbf0b2b4eeb4f785f9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.30.0","@mneme-ai/core":"3.30.0","@mneme-ai/xray":"3.30.0","@mneme-ai/matrix":"3.30.0","@mneme-ai/correlator":"3.30.0","@mneme-ai/embeddings":"3.30.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.30.0_1780803929292_0.9278987949632389","host":"s3://npm-registry-packages-npm-production"}},"3.31.0":{"name":"mneme-ai","version":"3.31.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.31.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d3cca178647eddf23780d4bba3572301687e9861","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.31.0.tgz","fileCount":1010,"integrity":"sha512-NHTOSr+MSpDS1f8s3HiwjACyIG8Oc2CgSNcqmlnBRbZAIIxqK1jLHNfz3gglGWCn0VsUsbwSb4CHNEEbOpuV5g==","signatures":[{"sig":"MEYCIQCxARYGwM1BtxkcTs9qI/aTSid6G61fnuP5BI1soUaLVQIhAIsHB1lb2sFnKKLo/ugmttakbL2CJBc6usnNKtpWFKw4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5529894},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"abc24ea0f1523d8e81dc946fc50dd8db55194d42","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.31.0","@mneme-ai/core":"3.31.0","@mneme-ai/xray":"3.31.0","@mneme-ai/matrix":"3.31.0","@mneme-ai/correlator":"3.31.0","@mneme-ai/embeddings":"3.31.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.31.0_1780804626101_0.9593970873272679","host":"s3://npm-registry-packages-npm-production"}},"3.32.0":{"name":"mneme-ai","version":"3.32.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.32.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"98e7e5563167a94646a832c7467fb03b3718d1dc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.32.0.tgz","fileCount":1010,"integrity":"sha512-l5sOo3i2QhI7rkRwA90zOwr9c3hcPlHedRqL3tOPWU+5wLvhOsNtj5Hg8eSyflJfMOzmFMQuPkerZJO9ynOgVQ==","signatures":[{"sig":"MEQCIC0OwXW7emFokjCydMMxl7E2MiCOOymkBPeNKQo+7sdZAiBMIvnE7cR1eoHhNPfARZcrrommxJj8WtuUBr4AXU428w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5529894},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ea809ce4f616cc81c9eae4105e06962134d207cf","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.32.0","@mneme-ai/core":"3.32.0","@mneme-ai/xray":"3.32.0","@mneme-ai/matrix":"3.32.0","@mneme-ai/correlator":"3.32.0","@mneme-ai/embeddings":"3.32.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.32.0_1780805549672_0.10592823031978038","host":"s3://npm-registry-packages-npm-production"}},"3.33.0":{"name":"mneme-ai","version":"3.33.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.33.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a2a773c040a4dbe82bcdc2dc8709fed1d5223cb0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.33.0.tgz","fileCount":1010,"integrity":"sha512-N/2WI9hyEbusCLy3qAPnMkaZpGjMmbJ7Euboyetycv5AYh6exZjOXeVLUXl7eH+jVinRqbLpehuiKre9j19HSQ==","signatures":[{"sig":"MEYCIQDWeZMViZP5hEIf9suu+cpInMw+ZgTZoFgdBfYPjJcDkAIhAN18TUP7+HrNZ3I0Qaqim5cWbwAE8yQF3qoU33CDczAt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5542650},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"419e2b0b8beacc4e9904d5ba04e573eae0b75290","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.33.0","@mneme-ai/core":"3.33.0","@mneme-ai/xray":"3.33.0","@mneme-ai/matrix":"3.33.0","@mneme-ai/correlator":"3.33.0","@mneme-ai/embeddings":"3.33.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.33.0_1780808503421_0.5959109893253711","host":"s3://npm-registry-packages-npm-production"}},"3.34.0":{"name":"mneme-ai","version":"3.34.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.34.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9a347fa9c1b318a065af293e5206bb5b902cbb6e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.34.0.tgz","fileCount":1010,"integrity":"sha512-P4IUc/e3cevUPxoUWpCW2Q6LmeHhSW5YkwhDJ6FZhLnSOzAzFRo+c8ii7D0tNZ9dtEwozYyUTqhyKELaTvIeMw==","signatures":[{"sig":"MEYCIQDe80EJyy7YBh/DjXrpTUtNq6uvPU5B0IqqBuNfayAAoAIhAO/+TcY9QFU3MN/Mtzb2n947Ra0MOxDEAH+1Wxw/6uAE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5545291},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f395924a67d7afef6ffcb4d4e7d41933c7660b4c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.34.0","@mneme-ai/core":"3.34.0","@mneme-ai/xray":"3.34.0","@mneme-ai/matrix":"3.34.0","@mneme-ai/correlator":"3.34.0","@mneme-ai/embeddings":"3.34.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.34.0_1780811648399_0.0460988425920954","host":"s3://npm-registry-packages-npm-production"}},"3.35.0":{"name":"mneme-ai","version":"3.35.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.35.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2480b1ece053e76c1e37e249360d23d2443542e6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.35.0.tgz","fileCount":1010,"integrity":"sha512-VPZ+kc5UMzXPtcg9GdvnAwzWhD1de18lyEGgjJnF3eAs4a5lAaXar+ciwmtUFaei2bNPShkbIcuQzlu2QGrRIg==","signatures":[{"sig":"MEQCIEUFVWZQX27b1uX0ElOCpdZZTdj+eq84XInCZ2FL9FhVAiAqSFgowpVq3B2unPZ1fEWml6o8TfO7S7r2f+GlPosmQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5551072},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5ca6444843133eae5ab00d596719e4ea052de94f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.35.0","@mneme-ai/core":"3.35.0","@mneme-ai/xray":"3.35.0","@mneme-ai/matrix":"3.35.0","@mneme-ai/correlator":"3.35.0","@mneme-ai/embeddings":"3.35.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.35.0_1780812324259_0.6166687820218835","host":"s3://npm-registry-packages-npm-production"}},"3.35.1":{"name":"mneme-ai","version":"3.35.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.35.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"581cc92bdff1fc1e2c8236407a50d5b38cc077f0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.35.1.tgz","fileCount":1010,"integrity":"sha512-N0SOD+459CDzgZ8m5KrZl3BIFuM/7GKvYqbYgOakVQKS2V3FfBzm/un/4qXF8Z1H/1XdohQorsvOI4Xg9vtk1Q==","signatures":[{"sig":"MEYCIQCmh6VdQvoOBLViasT+JJs4M1tq2ud5FL7U7Jb5lxOYIwIhAMWfysOE2mFBYaCEnO/LmmB+OIMwe3gH24ujyp3oeaIX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5551225},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"728a5cf27a11a20cffd748ca5871f6170147c022","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.35.1","@mneme-ai/core":"3.35.1","@mneme-ai/xray":"3.35.1","@mneme-ai/matrix":"3.35.1","@mneme-ai/correlator":"3.35.1","@mneme-ai/embeddings":"3.35.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.35.1_1780812593626_0.8895964345396588","host":"s3://npm-registry-packages-npm-production"}},"3.36.0":{"name":"mneme-ai","version":"3.36.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.36.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"885665a0ec239bfe20c70001f41ea25d5582a612","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.36.0.tgz","fileCount":1010,"integrity":"sha512-vt6Q7eN6hL2o9xauk3cn7++heoxbvjhGWTK9wqjX2DjaTHxXT+hAdK5bJQXpi0HGWpUTmVEUfFIycQLeAo9neQ==","signatures":[{"sig":"MEUCIAuJxcu7ugAXZzKQXz0iknOQ8bfV3o5dhjcwXzSbstMEAiEAoFBXWzxhfutvkEBhTHQd7vbgt2kKFKoWRvI56mmVj6k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5551225},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"73270ae83173d0349eb00e2f1dc9fa9c44142280","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.36.0","@mneme-ai/core":"3.36.0","@mneme-ai/xray":"3.36.0","@mneme-ai/matrix":"3.36.0","@mneme-ai/correlator":"3.36.0","@mneme-ai/embeddings":"3.36.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.36.0_1780813965761_0.11592856653654948","host":"s3://npm-registry-packages-npm-production"}},"3.37.0":{"name":"mneme-ai","version":"3.37.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.37.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0ce8ef6fb64e1da9c0f7b5b8275a982135f7bf74","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.37.0.tgz","fileCount":1010,"integrity":"sha512-NgGDI7O5LQoe3FuGCKew5mxE/7v4bMsfouhNYbDf8v/x/vDtRbIdQyfNqvkRda/lekFKtA0Nu0AK7EBe/AhJ3Q==","signatures":[{"sig":"MEYCIQDlWfNP/pR0uPN2Zf8YSFFR7BiOgHiFZVsp/HZ5XuH67AIhAJqiyBFvu/nIEasaKySaaa3akcaOHO1/owF19iel4zNv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5551225},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6bc41252ce1215f218c9c767825ef23f8c05cff5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.37.0","@mneme-ai/core":"3.37.0","@mneme-ai/xray":"3.37.0","@mneme-ai/matrix":"3.37.0","@mneme-ai/correlator":"3.37.0","@mneme-ai/embeddings":"3.37.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.37.0_1780815747760_0.07248547490725032","host":"s3://npm-registry-packages-npm-production"}},"3.38.0":{"name":"mneme-ai","version":"3.38.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.38.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"45fb3941f8fa40ff87c0eb3cd7b1a09fdec75c8f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.38.0.tgz","fileCount":1010,"integrity":"sha512-ZSL+9A0BkJ7lbKzkCnQxUqF6dM4zW4B+tEOrDTv0CrgZc6o9/2L3n9mVY9S87TOhkHRw8r2gXlu6VO8JB44JKw==","signatures":[{"sig":"MEUCIGCx5C+qosrocF2m7dJhLJGgZarCQC0kXxwFeBrg92jXAiEA1Y2KKY6yTXv7d9wJEkbXrBrfaU9i0EkqiVLGuyldikg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5554455},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b8884f60b1a3a28daf12299a4968e3f199b366ef","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.38.0","@mneme-ai/core":"3.38.0","@mneme-ai/xray":"3.38.0","@mneme-ai/matrix":"3.38.0","@mneme-ai/correlator":"3.38.0","@mneme-ai/embeddings":"3.38.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.38.0_1780817693913_0.766976316050014","host":"s3://npm-registry-packages-npm-production"}},"3.39.0":{"name":"mneme-ai","version":"3.39.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.39.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"74ae83f3609054c974361c74b0fdb0482d30eee9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.39.0.tgz","fileCount":1010,"integrity":"sha512-xDfz1fSGA7nuZFkiwOB9WmrZPByNu0gv+3X8RxmvXvpsGb3/NLaL4V+DckdFuH3Q43VZ/OxBvbZcVgfBSRZGmg==","signatures":[{"sig":"MEUCIFpYrd0cS9TQmxfAxLL3+zhnIDmrfHcr2pSrd3cFsfsNAiEAjP1H0MnOpwe/1bCTapogcO5mtatoeYY3u8sATHA06mg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5556909},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ac17cd11ed667f3b739c0d0442d49e3f83f39ac1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.39.0","@mneme-ai/core":"3.39.0","@mneme-ai/xray":"3.39.0","@mneme-ai/matrix":"3.39.0","@mneme-ai/correlator":"3.39.0","@mneme-ai/embeddings":"3.39.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.39.0_1780818599826_0.4836976863968976","host":"s3://npm-registry-packages-npm-production"}},"3.40.0":{"name":"mneme-ai","version":"3.40.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.40.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"bd5d7923cc72e508db0fecb643d13daa728997f7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.40.0.tgz","fileCount":1010,"integrity":"sha512-lxT16gxsswj40W+cDMAxjga9Hj+7/o61cB9nvNi53fcTeKX8v16YOgR4+WBCF/Q1l94v+nGb91Li8kYe9XkqBA==","signatures":[{"sig":"MEYCIQDkHrmPYOjg17jfjyVvA4uYzGq13/lGuphsrWYSkkgiaQIhAOJlJR1hPrTK1lW6Wby1JpQhtHqcJvvogmrCDm7Ceor+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5557500},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ba19a7794e7509469406afa7b822bec93d66c7af","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.40.0","@mneme-ai/core":"3.40.0","@mneme-ai/xray":"3.40.0","@mneme-ai/matrix":"3.40.0","@mneme-ai/correlator":"3.40.0","@mneme-ai/embeddings":"3.40.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.40.0_1780819784797_0.8921282261576946","host":"s3://npm-registry-packages-npm-production"}},"3.41.0":{"name":"mneme-ai","version":"3.41.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.41.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0e6afe844039dbee43f6cb7b84eac88fa870313b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.41.0.tgz","fileCount":1010,"integrity":"sha512-0BphB/+99p0s+bCgY+0CAz0cmxBrkJEKKpm4nXOKN8w9ZH/29in1Db3hn0Y46kdp00q5pXBtvVY9fVBLB0XLeQ==","signatures":[{"sig":"MEUCIQCMpBmpLzPnbq4MZA0GPiEYBYwv86/TxUUSQUX0F8EO3QIgfSz63fTqSxc+vcHOCGGzwAazLCqoDOSDRxmBxFbD9C4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5559275},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d4b9a80ae0d5129956e53be5f59c39687a0c9da3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.41.0","@mneme-ai/core":"3.41.0","@mneme-ai/xray":"3.41.0","@mneme-ai/matrix":"3.41.0","@mneme-ai/correlator":"3.41.0","@mneme-ai/embeddings":"3.41.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.41.0_1780820719249_0.1648101591412945","host":"s3://npm-registry-packages-npm-production"}},"3.42.0":{"name":"mneme-ai","version":"3.42.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.42.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a00469e08dfba69315dbfa8d6b6e98859a931539","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.42.0.tgz","fileCount":1010,"integrity":"sha512-9F4bNiEg8sH25oxBpdzzkCh1s3QTqr/B1NjOw4OIPGwgJKzMVX3XLfE2PNQ4iQGE3RLjudlD1aNkrpPbztbIGQ==","signatures":[{"sig":"MEYCIQDosB3BhTrj3eZEnJkYSHSE9gRwlVCdbCfJ1cUEsVIgeQIhANAATyVw9oSVwbfx9GNiNVRW0JmHnwL9ArunXd1+4L1c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5561331},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2dbd278405688de26ed8c4e2f334664e95a65825","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.42.0","@mneme-ai/core":"3.42.0","@mneme-ai/xray":"3.42.0","@mneme-ai/matrix":"3.42.0","@mneme-ai/correlator":"3.42.0","@mneme-ai/embeddings":"3.42.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.42.0_1780822219122_0.4989452905747265","host":"s3://npm-registry-packages-npm-production"}},"3.43.0":{"name":"mneme-ai","version":"3.43.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.43.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4e9e81666b3b90904884beb7cee890320d1ec8b6","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.43.0.tgz","fileCount":1010,"integrity":"sha512-botaWlrfubwGeRX0d+VWXKVYwspMRtOmtUGyKwa/M0/iCvtb5zCxYJHfIeGEdOkNjpYAXC6v207XNamXo8PWNQ==","signatures":[{"sig":"MEQCID4dhgIlsq13W/fUXE5wtI1tfv8hZTNXBhORH5tZIH2JAiAEGb1c5t0yqfGpbQu1JHOvK7sGLzWPypczKEghwTT6Eg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5565933},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b7b28ff47a99d2dc72d3002249e00bd5b4de223d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.43.0","@mneme-ai/core":"3.43.0","@mneme-ai/xray":"3.43.0","@mneme-ai/matrix":"3.43.0","@mneme-ai/correlator":"3.43.0","@mneme-ai/embeddings":"3.43.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.43.0_1780894643185_0.2183598819164705","host":"s3://npm-registry-packages-npm-production"}},"3.44.0":{"name":"mneme-ai","version":"3.44.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.44.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5173f30c5c40c59a9029cd74c823da7ec83afb5d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.44.0.tgz","fileCount":1010,"integrity":"sha512-8AwyUuB2a4ToSYGVsATlVJTA/T7f3KWew0TtPrqCQx1IvOYctiNy1Nx1tq/BLRldKBaI01dzIevkBqI/D9XDng==","signatures":[{"sig":"MEUCIQDBkfdg6n8XgGZ1YSUmNTZ44/DbmRMPMM15lRcoMpNh2gIgFepF+UmYfGeKXFs1ltzwB7Of2L+698ZQGaucAr/kMro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5573661},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9fb7fed726499d3d22b94ebe067ec5417e1543bb","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.44.0","@mneme-ai/core":"3.44.0","@mneme-ai/xray":"3.44.0","@mneme-ai/matrix":"3.44.0","@mneme-ai/correlator":"3.44.0","@mneme-ai/embeddings":"3.44.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.44.0_1780896032361_0.11813954401857285","host":"s3://npm-registry-packages-npm-production"}},"3.45.0":{"name":"mneme-ai","version":"3.45.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.45.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"cb31ed973ca4bf03ef807aab04cfe57aa9677509","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.45.0.tgz","fileCount":1010,"integrity":"sha512-azeZ1fyCR4Sz4LGO2mpt+yAb0iJoAKvh0VLoEpatP1sUBeC6B1Vb4kM0ZUkeX0tWkSz6vky4J0vJR3Anz8AjDA==","signatures":[{"sig":"MEYCIQDz3EZFEOCEHSFeaMYYqRQ0dcp1K75u8s2w9TTcFANx9gIhAPidS9wm+3llaDO+iOTW/5fX82SQKSYfK3LEdMt1IfgT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5581743},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c13df36874eeaa75e2caffffb3a37f9f18973366","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.45.0","@mneme-ai/core":"3.45.0","@mneme-ai/xray":"3.45.0","@mneme-ai/matrix":"3.45.0","@mneme-ai/correlator":"3.45.0","@mneme-ai/embeddings":"3.45.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.45.0_1780898817627_0.12519706856443058","host":"s3://npm-registry-packages-npm-production"}},"3.46.0":{"name":"mneme-ai","version":"3.46.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.46.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"ac1efeeaaa02673d390f63f31e4964b6477a29d1","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.46.0.tgz","fileCount":1010,"integrity":"sha512-PB0L21NGuNHwix4Z8m+HgXm6VpXAphuxsFlaIuM8HwHofq0HL+yFJjW9qG2Kba3paIJD4SVOsJx0CsKxMS02Qg==","signatures":[{"sig":"MEQCIANHijvN/xrPH1+OrvN0+KoFgTB8SjrELZV737JWkd8FAiA1k62BnCQa/vKk9UpWd8+gWG5JUacuaVefu7NPix8HCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5587799},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0adc51a44ac81fe304ab82018308f125c22a2eb8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.46.0","@mneme-ai/core":"3.46.0","@mneme-ai/xray":"3.46.0","@mneme-ai/matrix":"3.46.0","@mneme-ai/correlator":"3.46.0","@mneme-ai/embeddings":"3.46.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.46.0_1780902404909_0.15979875150720813","host":"s3://npm-registry-packages-npm-production"}},"3.47.0":{"name":"mneme-ai","version":"3.47.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.47.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d68bd2178d4259ebcf681bf1d1222011c654d9ef","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.47.0.tgz","fileCount":1010,"integrity":"sha512-GrRga8vki4Pj2YmxQQ66czHL22rLq55jamzzslpF8JBkEFTpKE1/zrUn+K/RlRhQd4FdQErMo+ldkCy7Ocfq3w==","signatures":[{"sig":"MEUCIQDdVLeoqD2S8lxVfKNFVWDIVPHU43rjOHZpouco5sExmgIgQfiUy0wWLF3QbVRLqWymZF+WskYL5KmwH6AaxIf/JI0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5588709},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c75342761fda872bb78fae873ae771784ddb3b9e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.47.0","@mneme-ai/core":"3.47.0","@mneme-ai/xray":"3.47.0","@mneme-ai/matrix":"3.47.0","@mneme-ai/correlator":"3.47.0","@mneme-ai/embeddings":"3.47.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.47.0_1780903154214_0.32743823903490243","host":"s3://npm-registry-packages-npm-production"}},"3.48.0":{"name":"mneme-ai","version":"3.48.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.48.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"67d1cbf1880d30771cdf6b59a73ee5d015d159bb","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.48.0.tgz","fileCount":1010,"integrity":"sha512-MerlrIMNzCXL3QqS9vLFcE5ZFYuM5lvYDuL5JDmJU3Gxjq91bhSkm94Eh3cc7wQa82zYjykUxfU3eyhNPFNFDw==","signatures":[{"sig":"MEYCIQCvZJfB3qS6wyLeUZJi5IgKnTnveP5ZOe3Jjua0wlIJBQIhAPwv8QucntcvzYXgoNKAUv3P+UubX6FZMJc6FrD2LVRa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5592427},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0d941d3e1644a4c2ff09e87d5fa27f7f14c2031c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.48.0","@mneme-ai/core":"3.48.0","@mneme-ai/xray":"3.48.0","@mneme-ai/matrix":"3.48.0","@mneme-ai/correlator":"3.48.0","@mneme-ai/embeddings":"3.48.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.48.0_1780904479279_0.9342091421251653","host":"s3://npm-registry-packages-npm-production"}},"3.49.0":{"name":"mneme-ai","version":"3.49.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.49.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7836bfea498c72c38ac86593a2d41349240a5eee","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.49.0.tgz","fileCount":1010,"integrity":"sha512-et21/iFtiEq/CTx72zommqRym6auUHVUQjHA2MTbhoC27QqquYGRg7hPrmd7TVNx+ILP6XmB5/hzjTmznqq9YQ==","signatures":[{"sig":"MEYCIQCW4zaZm9UNP9FFO9mCfARVeCTfL+/dq0OTg93lgT872AIhAPhMetxWcVVqLrHRYP9zYPCscqVeQwjOl5bX2j7LCzEp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5592427},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1a4060788ee60a308cff69f33fc32e8cdc6cde74","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.49.0","@mneme-ai/core":"3.49.0","@mneme-ai/xray":"3.49.0","@mneme-ai/matrix":"3.49.0","@mneme-ai/correlator":"3.49.0","@mneme-ai/embeddings":"3.49.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.49.0_1780909060896_0.411805430388408","host":"s3://npm-registry-packages-npm-production"}},"3.50.0":{"name":"mneme-ai","version":"3.50.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.50.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3aa5ee31694f7bf64bb9369473152828f1b0873c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.50.0.tgz","fileCount":1010,"integrity":"sha512-nDJeVIfNRe6ASAWrcyjahdnrAxUoRbk7pSrrLWNXoHLCq8UPw04ul9PwRdmfiz2CLFHC9mhtPFjzHfEp+YSmyQ==","signatures":[{"sig":"MEUCIGexaj+e71+yhyvWQtKuwPAhuJYkz8dG5waTB0mpf3kjAiEAjkxres+m65K3t0nvgG08Yh62VmufkjCaGxQgEtrO6H8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5592439},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1e6f472dd64138d4bacf31e5919bfb264c7a7b8c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.50.0","@mneme-ai/core":"3.50.0","@mneme-ai/xray":"3.50.0","@mneme-ai/matrix":"3.50.0","@mneme-ai/correlator":"3.50.0","@mneme-ai/embeddings":"3.50.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.50.0_1780909679784_0.8510388892428757","host":"s3://npm-registry-packages-npm-production"}},"3.51.0":{"name":"mneme-ai","version":"3.51.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.51.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"be66766573366169ee8eecfc3f943b7da09ba2bb","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.51.0.tgz","fileCount":1010,"integrity":"sha512-F1gqTxhFOsmOB1yEW8jKsSdxd9ucF1b0yDFOhoRYl3+1mzlg5JmB5ckqhKeewLqM6IWO2PFfFG6E7ks1Ah0UGQ==","signatures":[{"sig":"MEUCIQDNVC+eD5M0COAfIHRBwJwEE/xRk8ZS2XlmgeWt+3P6LwIgZ/ijAxC4RXjs/4waHFAbOYVK1g3J0AfkJ9r6thmclrQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5597688},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"eb561eb843efdbf27d969821a22ad7adfed0639a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.51.0","@mneme-ai/core":"3.51.0","@mneme-ai/xray":"3.51.0","@mneme-ai/matrix":"3.51.0","@mneme-ai/correlator":"3.51.0","@mneme-ai/embeddings":"3.51.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.51.0_1780911281933_0.43989583705543556","host":"s3://npm-registry-packages-npm-production"}},"3.52.0":{"name":"mneme-ai","version":"3.52.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.52.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"275c78acb2a9a015b214e943a0290f9004fd2ad2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.52.0.tgz","fileCount":1010,"integrity":"sha512-M//MDqVQAKVjRZ1j2SR/zfknX04U60pxGcWg9rtDT5VNetMgf9XNn5axxcmq88nFL6Rx9z+mS/qT5ijo+bY0yQ==","signatures":[{"sig":"MEYCIQCkT/b39qF7v+zveF0j6repoV2HByJ4cyoo62rt0DQl2gIhAOsk1pxLIY0k/QR6pwCPzsSCpHfkBq4LTlQYqI4dpi66","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5601089},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3a15fd0b423d11b85160467d9b495c6676abe416","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.52.0","@mneme-ai/core":"3.52.0","@mneme-ai/xray":"3.52.0","@mneme-ai/matrix":"3.52.0","@mneme-ai/correlator":"3.52.0","@mneme-ai/embeddings":"3.52.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.52.0_1780911558426_0.5560888294258624","host":"s3://npm-registry-packages-npm-production"}},"3.53.0":{"name":"mneme-ai","version":"3.53.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.53.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8a7be35e3eaefd1e60a264525a19fcd551c5fa60","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.53.0.tgz","fileCount":1010,"integrity":"sha512-ysPEmTJLrYtUo9ens+BjI5l8XT1Cf9UyxHLtmRPCHoOonTGemqlHB61nURisdEO7SY/TKRpJqxsnruFA3kpBYQ==","signatures":[{"sig":"MEUCIQDjjY+ef/TWt4ph+cWruaYHKYwFAaiMhJJkXOZJhP0M7wIgMwQoY/tEpQfM48ZGDZtf5kcP6MJpD6/Lm9+25DyqC4c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5605789},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f4b2750352cacad5fd831988de9375465f0b8169","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.53.0","@mneme-ai/core":"3.53.0","@mneme-ai/xray":"3.53.0","@mneme-ai/matrix":"3.53.0","@mneme-ai/correlator":"3.53.0","@mneme-ai/embeddings":"3.53.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.53.0_1780912465504_0.5472375838841752","host":"s3://npm-registry-packages-npm-production"}},"3.54.0":{"name":"mneme-ai","version":"3.54.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.54.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3324603372bd2dc3296e347085cd4b5cafd144aa","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.54.0.tgz","fileCount":1010,"integrity":"sha512-iiMZeomY8RS3FnXjFyTgUr/jFm0Dyx9feotlt66L3XgxVfhpGHYbbNGhSe/v+5AoHl9nm4FNPL5lT0I+DXRV2w==","signatures":[{"sig":"MEUCIQDKZSVAZQPsbavMWCKfo6QsJgPKkDVObMW+JDdyBJci0QIgOYr76b//4AVLo3/UQvX3WvSkLXYFMmOX9gNGUvQpjMQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5611715},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ff6e766f718ed9edb1a44f9c3af12d102a3015d1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.54.0","@mneme-ai/core":"3.54.0","@mneme-ai/xray":"3.54.0","@mneme-ai/matrix":"3.54.0","@mneme-ai/correlator":"3.54.0","@mneme-ai/embeddings":"3.54.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.54.0_1780913013543_0.08627620730482799","host":"s3://npm-registry-packages-npm-production"}},"3.55.0":{"name":"mneme-ai","version":"3.55.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.55.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"fc61fda61b2f61a7e9f4494c6fd3a052a7ffb922","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.55.0.tgz","fileCount":1010,"integrity":"sha512-JtsTenu+IriNlMqBup58AHu0/8yyMvCwa7VNMjeLSoqnUitsHSErR3FIKPzIxRFaxxsgAvpyGCVzvF5B0xAWAA==","signatures":[{"sig":"MEQCIHN2s002naM9QxjMZkPgStEJ6U2JnR1S9basJK/JSSe2AiBvMJeAun70EvNnhurg363IrIg+C9U/CzbOFkKHd9+trg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5611715},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0ca215dac54fb4606768249d27c75e8700df4280","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.55.0","@mneme-ai/core":"3.55.0","@mneme-ai/xray":"3.55.0","@mneme-ai/matrix":"3.55.0","@mneme-ai/correlator":"3.55.0","@mneme-ai/embeddings":"3.55.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.55.0_1780914498450_0.9262615428447032","host":"s3://npm-registry-packages-npm-production"}},"3.56.0":{"name":"mneme-ai","version":"3.56.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.56.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0b7d0b392d27aa12d0fb7a41f4e19036537c3e38","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.56.0.tgz","fileCount":1010,"integrity":"sha512-NccqHlhlNI89CcqR2mL0qduxZ/ZUzdxlEipcr1gIJU+rk6EZhtj9YOXURLuHqgiaGR2VxahxT60VZZ0JV3xnng==","signatures":[{"sig":"MEUCIQCVuRBfPm1qE8o2RrSKAvCm9wqYDmn3LP+IXkXcx/FktAIgQBmQHkh1UwhDgpBLuCSM5qpxF8XUqj1QpQTeJueXYL8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5619864},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7f36df12998cfa5c4314f1dae427fd895c66c132","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.56.0","@mneme-ai/core":"3.56.0","@mneme-ai/xray":"3.56.0","@mneme-ai/matrix":"3.56.0","@mneme-ai/correlator":"3.56.0","@mneme-ai/embeddings":"3.56.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.56.0_1780915326300_0.5521978049883118","host":"s3://npm-registry-packages-npm-production"}},"3.57.0":{"name":"mneme-ai","version":"3.57.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.57.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"51e69a1c6b9ee45b4d548760fc0048df270fc3f3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.57.0.tgz","fileCount":1010,"integrity":"sha512-SgwvlFOwTIi4paDx4L1D/srD2LUj/BgnzW6iekLZVjuh4Ia7Lw/monUmfY2+47Oq66y3xfGW9pVxIXzwhSaBhQ==","signatures":[{"sig":"MEUCIQDKkQQmmFF5BxeUopvnCOugbgBHr4V3XUcvcuFh0xOQzwIgU381tq7Gd9QtGnWTi1V64WJXcba2MS999RYLyyJ4e2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5623036},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c50df2c61c0aa15bf23a967b3fd9f6f42c37a0fd","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.57.0","@mneme-ai/core":"3.57.0","@mneme-ai/xray":"3.57.0","@mneme-ai/matrix":"3.57.0","@mneme-ai/correlator":"3.57.0","@mneme-ai/embeddings":"3.57.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.57.0_1780916228247_0.24731644515557072","host":"s3://npm-registry-packages-npm-production"}},"3.58.0":{"name":"mneme-ai","version":"3.58.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.58.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"90116ad5ec1c0cdc770f81d672dc945af211cfb9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.58.0.tgz","fileCount":1010,"integrity":"sha512-AlqVyyHPC0GvAjFgO9jXcwK61QcWaSFHvJSMbXQFr39wt7YP2uj7G9nmzoOjS4765gyxoMHEd7b9BChgqD4Sbw==","signatures":[{"sig":"MEQCIH04QdQT5oOyttdsTOVGjhV3CXxZSjj8T41HBawniOddAiAnwTBWkX+D3OInFxtdumQf4bihzSaemeMjx2daclv+rQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5627818},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e8dcc53ea209d64bc53a1ed983e1f1a68e44a6b2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.58.0","@mneme-ai/core":"3.58.0","@mneme-ai/xray":"3.58.0","@mneme-ai/matrix":"3.58.0","@mneme-ai/correlator":"3.58.0","@mneme-ai/embeddings":"3.58.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.58.0_1780916819150_0.12114737806429199","host":"s3://npm-registry-packages-npm-production"}},"3.59.0":{"name":"mneme-ai","version":"3.59.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.59.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7d53d3fd14e6937961595d2c476aad5846bee20f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.59.0.tgz","fileCount":1010,"integrity":"sha512-yryeHO5aDTrzf/Bsja2uZmObqDUnaxlM1wUqEFZKuL3hG5l3c5xlFSzzYRRnouZPXXiLsy1M1RyEgT5qsRFCWQ==","signatures":[{"sig":"MEQCID79V6HNHK+ntfV0XLlqRcXT9u2Kv197WqZC3QoYuY/AAiAQMEd3bT5fNTy1FbuQs0CxHVquIyRaK204zLkBnhu//g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5629872},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"aab44b26347a8126b7d9f58e2d30d40d51a8f2ab","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.59.0","@mneme-ai/core":"3.59.0","@mneme-ai/xray":"3.59.0","@mneme-ai/matrix":"3.59.0","@mneme-ai/correlator":"3.59.0","@mneme-ai/embeddings":"3.59.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.59.0_1780917207098_0.5629404077263898","host":"s3://npm-registry-packages-npm-production"}},"3.60.0":{"name":"mneme-ai","version":"3.60.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.60.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"08703a0bd5e3ff1c5ab6ad1f716b04f51830479d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.60.0.tgz","fileCount":1010,"integrity":"sha512-wQ3H8LJyMJ7xbmsI61TJENYkwyhEMlo4oF33NrR/pY6tFVVTZBFq3mOJa3aHMo8EiNE2cwCNA/bqjweSvR0l3Q==","signatures":[{"sig":"MEUCIQCNpfdgUGQolwJayeS+7gPkpq4dT2190T8cMx5X+Zb+MQIgE7kuWotN96fHw8OW+9qjyh7Z4wGGXM/+IZG5nLpVgig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5631086},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"96f73ef36ecae6c0eeebf718d0009e68e516b3ac","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.60.0","@mneme-ai/core":"3.60.0","@mneme-ai/xray":"3.60.0","@mneme-ai/matrix":"3.60.0","@mneme-ai/correlator":"3.60.0","@mneme-ai/embeddings":"3.60.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.60.0_1780917710142_0.6693802311750277","host":"s3://npm-registry-packages-npm-production"}},"3.61.0":{"name":"mneme-ai","version":"3.61.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.61.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e9e81839a6ccf3ff4731752565775c5c7073fb3c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.61.0.tgz","fileCount":1010,"integrity":"sha512-mn0ddhzsZyIirKPk+oEN72DYXU7gwIDiI//HJIOstpxXsPthQnUF+LB5A0Zrw4I1be5NEQUM0YviW/yMQu5S5A==","signatures":[{"sig":"MEQCICBlzVCaP0TF0X0gSkj5U0G7lGbnY7nEtft8YhsfA5dDAiAh7ZTYei5waPwy2VsWdp5rk2WOqtSLgZKZRq9xcDqTLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5633432},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8a7dfd40e4f92d4f1d3f36808494d3b76270a7d8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.61.0","@mneme-ai/core":"3.61.0","@mneme-ai/xray":"3.61.0","@mneme-ai/matrix":"3.61.0","@mneme-ai/correlator":"3.61.0","@mneme-ai/embeddings":"3.61.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.61.0_1780918087028_0.3221033030456424","host":"s3://npm-registry-packages-npm-production"}},"3.62.0":{"name":"mneme-ai","version":"3.62.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.62.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8a601b9a7cb053a0a4db4fcdf3122ac4e3ca923e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.62.0.tgz","fileCount":1010,"integrity":"sha512-EkUe90NSVg/ndwUmrgZkmUNU626O9OY0LxP40TbHMZdgcIX0/yTcIZ0AgpGIe8xX/nILOMNsjytt3L7fior9FA==","signatures":[{"sig":"MEUCIQCTmhRHZ8HZ3RZIjRTuAQH432Rb9wZGJxnmK0pCdXYfMwIgJLenlcp2MkNyc8IKPb9F2teq1xjVDkXmXlfm1DIw7h8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5636511},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2bab2ae1e7ff8c604da91667b827ad80b41eefdd","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.62.0","@mneme-ai/core":"3.62.0","@mneme-ai/xray":"3.62.0","@mneme-ai/matrix":"3.62.0","@mneme-ai/correlator":"3.62.0","@mneme-ai/embeddings":"3.62.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.62.0_1780918831004_0.09289672293104334","host":"s3://npm-registry-packages-npm-production"}},"3.63.0":{"name":"mneme-ai","version":"3.63.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.63.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e2d9d0d87a5b089dd2768f152dadd8eefd3892ac","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.63.0.tgz","fileCount":1010,"integrity":"sha512-5ihovremFJ9Y8dbcmjzKtLjp05qvFs2Izl0KpEpehqY12Ktc1XSExoCyshAeHb67c7FfwOVuky24Lle9rTQm4g==","signatures":[{"sig":"MEUCIFwWXDooPT+Ndwsm47NSEQdki6uYs7dGkOJS5rdUa6s5AiEA27It2Z7K/Rs4tQZa0fdzP5bfoBFrgz5QkqTF5tFvIB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5638916},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"3f099e9f133b7bc19fc6e1762534aee37763795f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.63.0","@mneme-ai/core":"3.63.0","@mneme-ai/xray":"3.63.0","@mneme-ai/matrix":"3.63.0","@mneme-ai/correlator":"3.63.0","@mneme-ai/embeddings":"3.63.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.63.0_1780919168468_0.18093030698590917","host":"s3://npm-registry-packages-npm-production"}},"3.64.0":{"name":"mneme-ai","version":"3.64.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.64.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"892995103129cd7183a76f913ac2a20b335308aa","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.64.0.tgz","fileCount":1010,"integrity":"sha512-7VoPA3nkieaF/JXXfe7cqjcQRXlETw5HauMNVzO38vT/YOSAk9a4XYdxa1ZoWQMZZYmuDnQ4wyDoF3GDTWfqyg==","signatures":[{"sig":"MEYCIQCZl5Ty/wc/cUl+jvnttFFJ+d76AuCD5OxcrW83JiZagwIhANmwA8KqPgBidiP5ijDaS0bJaEliKrU00WY1eU/ErXvo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5641566},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ee282f9d2cdcae20a45bda75f2515478db599297","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.64.0","@mneme-ai/core":"3.64.0","@mneme-ai/xray":"3.64.0","@mneme-ai/matrix":"3.64.0","@mneme-ai/correlator":"3.64.0","@mneme-ai/embeddings":"3.64.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.64.0_1780919671000_0.3568524936047113","host":"s3://npm-registry-packages-npm-production"}},"3.65.0":{"name":"mneme-ai","version":"3.65.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.65.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"09dca9dfe3828a7e0b531494dec1ab0b67f1fc69","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.65.0.tgz","fileCount":1010,"integrity":"sha512-PEX6RhXyi1nfEymrY8sZL5YfcdA+D7l53VMkk+Y9jLcdk0NMKzm9e6d3GUmehBeuaEfUKR7Y5KOJRqnL8c1Bng==","signatures":[{"sig":"MEQCIB3rkuU9C0GLI3n342D3Dbz3C5Y+E9+MDMI9i2KTLrpUAiBa+FANMZtRlAb9C6HdFfFL4vYrbeZuKazINCbcpP0Aww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5643192},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"09358564b6927c7a907f71441f20169361a2ab51","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.65.0","@mneme-ai/core":"3.65.0","@mneme-ai/xray":"3.65.0","@mneme-ai/matrix":"3.65.0","@mneme-ai/correlator":"3.65.0","@mneme-ai/embeddings":"3.65.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.65.0_1780919846877_0.9797196560785117","host":"s3://npm-registry-packages-npm-production"}},"3.66.0":{"name":"mneme-ai","version":"3.66.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.66.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d12946c39fac9ea235df0687cd2813d8eeee5f6c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.66.0.tgz","fileCount":1010,"integrity":"sha512-+hD2cnAGTVQ/j5j4HyOFcOfh82RqNTVY5aJx2FHrbD/+sC6mlzk8x4UUhk3GtYgliMrKQhGZrrNhwzGnZIWlBw==","signatures":[{"sig":"MEQCIDqCta1XSKIBDtWGCKtjPY5cShJv/rhRab4qqn6Cj6mYAiBT23d5qX86HZ9Tj7Gk7gTLZGmSbLFqMt6U3hpIDMeF5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5649999},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"05ef22235eb237759afd47cef9be1facaebd17ff","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.66.0","@mneme-ai/core":"3.66.0","@mneme-ai/xray":"3.66.0","@mneme-ai/matrix":"3.66.0","@mneme-ai/correlator":"3.66.0","@mneme-ai/embeddings":"3.66.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.66.0_1780920638025_0.35452580646227005","host":"s3://npm-registry-packages-npm-production"}},"3.67.0":{"name":"mneme-ai","version":"3.67.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.67.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1279ae341ca77a8c506f798ff13a969bd606121f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.67.0.tgz","fileCount":1010,"integrity":"sha512-FY8L/Jb7idzB/CyLKdFn7wMayigGV6bXV97uTZjsS5iZ1dVXd1UvjezhQleLdTQCdQHZ4L2nRD/pafxZJFwnmQ==","signatures":[{"sig":"MEUCIQC1BLckhZzzYuCqp8M1dg+anyRNz7eD2jotnI4NeXLF+wIgAtPLL4RwuM7+pNFNShP/Z087j9CLTGqwGXLm828DIRA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5654367},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"614ea6cf6bdbd34703c89f1a8e84dd6ce9c6c2b0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.67.0","@mneme-ai/core":"3.67.0","@mneme-ai/xray":"3.67.0","@mneme-ai/matrix":"3.67.0","@mneme-ai/correlator":"3.67.0","@mneme-ai/embeddings":"3.67.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.67.0_1780921514176_0.5529973414241427","host":"s3://npm-registry-packages-npm-production"}},"3.68.0":{"name":"mneme-ai","version":"3.68.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.68.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b39b219bedb3237f0165a2eb2c8af5cc4d96bcf2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.68.0.tgz","fileCount":1010,"integrity":"sha512-c8GbtkGSrOKPvshDpL5aqsOFiljz7uW204j1H2Mh0SyLUqV3XbuExAgb2jzT08ed8638J6XEfkfUqyhL4RB7vQ==","signatures":[{"sig":"MEYCIQDYMoPmJrB+vNS9TDg1EEC89VdeRHuGgY1c4J2S0M2yGwIhANtpKatGrrk1q3XwMoId7INls6cjSmHu6+uO6W4q1lYs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5659348},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1ac89e25dac25be5d9782f5c7708bdd29bd6f977","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.68.0","@mneme-ai/core":"3.68.0","@mneme-ai/xray":"3.68.0","@mneme-ai/matrix":"3.68.0","@mneme-ai/correlator":"3.68.0","@mneme-ai/embeddings":"3.68.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.68.0_1780989072032_0.2546118282377947","host":"s3://npm-registry-packages-npm-production"}},"3.69.0":{"name":"mneme-ai","version":"3.69.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.69.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2a55954793b0c540efcc7250b1fb941575adce02","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.69.0.tgz","fileCount":1010,"integrity":"sha512-gHHlXAYjvIGTuP2OpCEbGf+yUtMHsyPdIgJMC9V268gsCckRY4fAx9kmlyEbXl69VifZ2uxUluJqctUtQ1azPA==","signatures":[{"sig":"MEQCIAvNzMBOE6yOD57GPgG8EfrExhHJAriamvdRhbedjy+2AiA69Cl0sEko54F6aRMKw2t2zXD60MUVtnYUFC+i8sLGbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5663296},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ab41abeadc1fd7fb22d07089cf1144a359da9f11","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.69.0","@mneme-ai/core":"3.69.0","@mneme-ai/xray":"3.69.0","@mneme-ai/matrix":"3.69.0","@mneme-ai/correlator":"3.69.0","@mneme-ai/embeddings":"3.69.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.69.0_1780991106170_0.680170550216723","host":"s3://npm-registry-packages-npm-production"}},"3.70.0":{"name":"mneme-ai","version":"3.70.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.70.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"64dca9a0ca1645f668f08d2e546d6ea54d4a449f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.70.0.tgz","fileCount":1010,"integrity":"sha512-r86R+yA3XE1kX6pi/A6uiionGak6MjLOMd0DdPypsnA2et+65J2/7N8Cuvap+tFouMLd+AP3cTJ6PBDIlE0uJg==","signatures":[{"sig":"MEUCIQDWGnVLclSCFE/RRXxJBjRSu71Khb3cQQqOWDNG/vDBXQIgHrDdlAgE67N7rMigi7Qv+NVDs2xDsBH/998D89oiaTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5666588},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2df1473237561018273b93b415a093f87b12662e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.70.0","@mneme-ai/core":"3.70.0","@mneme-ai/xray":"3.70.0","@mneme-ai/matrix":"3.70.0","@mneme-ai/correlator":"3.70.0","@mneme-ai/embeddings":"3.70.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.70.0_1780991804690_0.2609490759219997","host":"s3://npm-registry-packages-npm-production"}},"3.71.0":{"name":"mneme-ai","version":"3.71.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.71.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a227b9447bea5640efcbd98e451d1d23fbe2bb30","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.71.0.tgz","fileCount":1010,"integrity":"sha512-pt2ptNAnX6Tl7MUTsih/qLkpPRSBGh4H1sYscyh3i8YUvcO571MaDpUPQGvYGOKwrnFzQPLy5WLQyVRSUz3GQA==","signatures":[{"sig":"MEQCIDjZllmwr9fW/ilu2PF3jLK74HUXhZo+FCNgHcEGT4jmAiAMKPz6j7d5t7QjrbOvZLEyEeWhnC7gaEGK0fhpLInoVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5668937},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b1b5a5fd113dd944a60a9ada0118f5978cb3483f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.71.0","@mneme-ai/core":"3.71.0","@mneme-ai/xray":"3.71.0","@mneme-ai/matrix":"3.71.0","@mneme-ai/correlator":"3.71.0","@mneme-ai/embeddings":"3.71.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.71.0_1780992900245_0.7211245899053476","host":"s3://npm-registry-packages-npm-production"}},"3.72.0":{"name":"mneme-ai","version":"3.72.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.72.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b681b692fc173a78143d583e3265a3bad4869d85","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.72.0.tgz","fileCount":1010,"integrity":"sha512-1vNTukkKtAWCBfTk+K/4Jf8/WnWo++0wJH2q/8wp4zEEAupTg64FjLWUs4lioj30yFo05eTTH+yWTsx4laGC1w==","signatures":[{"sig":"MEYCIQDw3EB8PWEKMSDFe5L/y3C9e/fA/52OpAoEPvCtpTyQ3AIhAPXMMuCxp8csGx+ueJq3vAQYOAgcLA/9ENxWmQ0Cm3xM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5673616},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5aa4bab4981a66773270aec75ed2f1a25e392659","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.72.0","@mneme-ai/core":"3.72.0","@mneme-ai/xray":"3.72.0","@mneme-ai/matrix":"3.72.0","@mneme-ai/correlator":"3.72.0","@mneme-ai/embeddings":"3.72.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.72.0_1780994003680_0.7284417560649747","host":"s3://npm-registry-packages-npm-production"}},"3.73.0":{"name":"mneme-ai","version":"3.73.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.73.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a08ac04628663f8cdf3d4a8f7576321d87de5e7b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.73.0.tgz","fileCount":1010,"integrity":"sha512-NRhh0g9FR725Eqs1QbbQjPYUzf7vaiOUBP0TaiHcvLniBbFCFlrBR2aF8xNYDLI18r+1V9b7s7LzeM//JHpGsA==","signatures":[{"sig":"MEUCIQDQ6wUVPVVMYOQstEa6tQ/0DAZ5O14W6s7g1NPkT0dT2AIgNSbOIGYYWUM2usbVelVs49I6PDvZKnvOufg9GM/9CZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5673627},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c8bbdbb14993282344b74a8540c2e90bb2e1b075","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.73.0","@mneme-ai/core":"3.73.0","@mneme-ai/xray":"3.73.0","@mneme-ai/matrix":"3.73.0","@mneme-ai/correlator":"3.73.0","@mneme-ai/embeddings":"3.73.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.73.0_1780995813450_0.7945532704639715","host":"s3://npm-registry-packages-npm-production"}},"3.74.0":{"name":"mneme-ai","version":"3.74.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.74.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"918de5bf015ce50682470f84ef9064c734283819","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.74.0.tgz","fileCount":1010,"integrity":"sha512-kIcn1XVriDtXFw3VVCgel9ndFK+jVou9/iCu0KEWkZVJQSHfaPaJ220SGMRkXjEq2ZCSKekHp82L5VxxzP3wWw==","signatures":[{"sig":"MEQCIArnGNIVs8Xom6w6h0yQ2qF4MP55wJIVJ+MINFZn5ZFXAiB1lD48NO5uhHAAx4JUv0dpSofMx3klpkOXbImWEP2Gqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5677498},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a07b6fe4e3a27896e12a481090099c4339d255e5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.74.0","@mneme-ai/core":"3.74.0","@mneme-ai/xray":"3.74.0","@mneme-ai/matrix":"3.74.0","@mneme-ai/correlator":"3.74.0","@mneme-ai/embeddings":"3.74.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.74.0_1780996549393_0.8948350990721581","host":"s3://npm-registry-packages-npm-production"}},"3.75.0":{"name":"mneme-ai","version":"3.75.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.75.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3252bcc84cff3e25fe03d28bcb05ba3230f28a93","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.75.0.tgz","fileCount":1010,"integrity":"sha512-1orAc7CqOsYavkKvfzG3qP2Myh1swJzoOj9cKbJrH1eNfbzKUNxzu/3DUE1hjFxQJ3PF3obetsmamtsuUeZfuw==","signatures":[{"sig":"MEUCIQCOtxdtF3JG++DS1fBm4T9rYr9v7XL5mNisIDtK3SBaYgIgZCo73BmBMqdfRzgtoHUqmmZgOi7FC20kR2QH5HsVDFs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5677502},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a13f48519e733dfcb028ef644c3f758079a16d9a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.75.0","@mneme-ai/core":"3.75.0","@mneme-ai/xray":"3.75.0","@mneme-ai/matrix":"3.75.0","@mneme-ai/correlator":"3.75.0","@mneme-ai/embeddings":"3.75.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.75.0_1780998447950_0.6193093830306555","host":"s3://npm-registry-packages-npm-production"}},"3.76.0":{"name":"mneme-ai","version":"3.76.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.76.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"937fe012a55a93eb41ad3f3b0e7ab8128d64bc14","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.76.0.tgz","fileCount":1010,"integrity":"sha512-sSx6Y+LVUUkyU3KA/KrkPdk4Ye+2A9U7i93RHQeVX21kW4LUi60iW2xEcsggnN4Yp85wrka8ZzSTbf/JRyAViA==","signatures":[{"sig":"MEUCIDyHN5ZeCDKF5If4Ob09dhk6zyuw8hQqcSruxMIaT5ZZAiEAklDgwHmUbFmtJ+5AkffqHNYAS9GHQo6vc3wK1y7fzp0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5677508},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d27909ff1ef0fbaeca030d88373699596be284ce","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.76.0","@mneme-ai/core":"3.76.0","@mneme-ai/xray":"3.76.0","@mneme-ai/matrix":"3.76.0","@mneme-ai/correlator":"3.76.0","@mneme-ai/embeddings":"3.76.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.76.0_1780999527190_0.9692825503293161","host":"s3://npm-registry-packages-npm-production"}},"3.77.0":{"name":"mneme-ai","version":"3.77.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.77.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"dd323c6ebeae87283a739cf09a688a313186aa9c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.77.0.tgz","fileCount":1010,"integrity":"sha512-FDwM/WSUJNI+EZBRib25KDiIzBAMTuGgUTLyMZzYorH/1m4e9eDd4PsdQ/9pz0eAvLUEdNi6LfFA/06oLnBUzQ==","signatures":[{"sig":"MEUCIQC/SffxHdPr+r2O0Dsi9sQZriBKCKhAN5Stnxy7MuY7lQIgc97zFkUxbHypb/5zWT/gD5c+T7vbPksiO5IFScNwJGk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5681713},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"edebf72301b692b44be7a9d7b73effdabedd8122","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.77.0","@mneme-ai/core":"3.77.0","@mneme-ai/xray":"3.77.0","@mneme-ai/matrix":"3.77.0","@mneme-ai/correlator":"3.77.0","@mneme-ai/embeddings":"3.77.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.77.0_1781000734910_0.5705329135164072","host":"s3://npm-registry-packages-npm-production"}},"3.78.0":{"name":"mneme-ai","version":"3.78.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.78.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"044837728d12466b3ca0c39d26af7bba22d87926","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.78.0.tgz","fileCount":1010,"integrity":"sha512-VdFqwb+kVrNmKYh6mukDQ2L1uiFrXfy6uebTFx8SPH5Ldcty2VxYJZ+/8p59FufPyxQwHisfUFsxGcP2O+bUAA==","signatures":[{"sig":"MEYCIQCnCtiyjcngxNXhKwf7c4CaSwaqJfRd9a7pYXk38UYTGwIhANM7416/zDKlbTziAD95f4Ts5xtwgVi9PZWHo49Mlulr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5684513},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"16ec43da605edc48c605df7f301109c45b593605","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.78.0","@mneme-ai/core":"3.78.0","@mneme-ai/xray":"3.78.0","@mneme-ai/matrix":"3.78.0","@mneme-ai/correlator":"3.78.0","@mneme-ai/embeddings":"3.78.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.78.0_1781002261748_0.22318680896403875","host":"s3://npm-registry-packages-npm-production"}},"3.79.0":{"name":"mneme-ai","version":"3.79.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.79.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"54da3c84947a5a438e4be42daf6c6f40c3a431db","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.79.0.tgz","fileCount":1010,"integrity":"sha512-0wSNg/NRTqoXkTCScXPPh1gjNUc4xJlWkTPFKMt3wX1wuqaGvsLhXokhwRLrfoDsgIur9Bo9lEKY/uXNKV4uxw==","signatures":[{"sig":"MEYCIQDrKQupoo3AhjWlaeqGC107QXEibidrytV9jYHYUWzVIQIhALHwGX7cKT7iil+3Xmu/KfelG0lLQs6bmGtZ59SBBzqI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5685973},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"dab686f3fa997db8550463ae5df7acf437cd7e21","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.79.0","@mneme-ai/core":"3.79.0","@mneme-ai/xray":"3.79.0","@mneme-ai/matrix":"3.79.0","@mneme-ai/correlator":"3.79.0","@mneme-ai/embeddings":"3.79.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.79.0_1781006277792_0.336686822598224","host":"s3://npm-registry-packages-npm-production"}},"3.80.0":{"name":"mneme-ai","version":"3.80.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.80.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"77d97de296a83ec46c8e57b6f20605f0b046d187","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.80.0.tgz","fileCount":1010,"integrity":"sha512-Ho12WtH0VXmzHsOBf257tLMJHEYvmrBmId1h0p2RlHzwz4gV66UhiTTooWxb53+9LCKFFUPPK+cBWrt6zRcHTw==","signatures":[{"sig":"MEYCIQDm7VbgUYLNYF8BGNHYHC9GtN4KBgrnvkUfWi4ohHNKuQIhAPuQVd0/yUftVTzYQ2iUBy2uDfJ6Okg2za3kFDdUNVzl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5692411},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"826b9b2ea34ea66a08d66e464959a37aa6991f87","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.80.0","@mneme-ai/core":"3.80.0","@mneme-ai/xray":"3.80.0","@mneme-ai/matrix":"3.80.0","@mneme-ai/correlator":"3.80.0","@mneme-ai/embeddings":"3.80.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.80.0_1781007871643_0.6940360087438968","host":"s3://npm-registry-packages-npm-production"}},"3.81.0":{"name":"mneme-ai","version":"3.81.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.81.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"f3e98c29cb3321ca24b56bfae171a1740f0a0f04","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.81.0.tgz","fileCount":1010,"integrity":"sha512-4JYgTsSmiuFDENMh6x9mhZ0134qfEeykjbKXXC0gWp5TKkq2r8yKUxBghC8Blo0D8mTHTb71v82d2UJf94MUqA==","signatures":[{"sig":"MEYCIQDyVly907jT7TgrGEFfTY1sxs4+hSxqviG9tDdKu14l4wIhAPfduLFH4Wnw3e7/7FveGtnqCgHzCtqUMXU1f57SyALt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5699950},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"25f48d4fd80b04920c5f8ea73f933a24f711e119","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.81.0","@mneme-ai/core":"3.81.0","@mneme-ai/xray":"3.81.0","@mneme-ai/matrix":"3.81.0","@mneme-ai/correlator":"3.81.0","@mneme-ai/embeddings":"3.81.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.81.0_1781009404743_0.41895591269898147","host":"s3://npm-registry-packages-npm-production"}},"3.82.0":{"name":"mneme-ai","version":"3.82.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.82.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"967bb2f787bb3cfadf9feef00ee94f76ad8c22f9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.82.0.tgz","fileCount":1010,"integrity":"sha512-QFh+ZfpacoGBtw2lN6rXMzM6NrjH3zzGju5qqRGzFf1oBC1RR7BNhTtsctrUzVknl9mrZLd85C3Tw/Ea7fy/mw==","signatures":[{"sig":"MEUCIQCZqL90YblTB932kjhkfB9ivtgt7qLeIrGLjJVyeQiDxAIgMrTvauNDqkc4plxUWjQiuDBfhZpM4qb5hJi3In9Ohhk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5703583},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"71e9e62d762361558a465b20b3177a0c2f1045a1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.82.0","@mneme-ai/core":"3.82.0","@mneme-ai/xray":"3.82.0","@mneme-ai/matrix":"3.82.0","@mneme-ai/correlator":"3.82.0","@mneme-ai/embeddings":"3.82.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.82.0_1781151850750_0.6492513259113197","host":"s3://npm-registry-packages-npm-production"}},"3.83.0":{"name":"mneme-ai","version":"3.83.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.83.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"db0eb6223d89d8e83c520b171b6f6a9e163b3e3d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.83.0.tgz","fileCount":1010,"integrity":"sha512-XE0HpA2NiYUpDoFGlbnvLbF/lZpRficFeSi9s3d1K/saJdXHFG/em1mkqlXtSgNur69J4VxmV4fCkdV65CBgbw==","signatures":[{"sig":"MEUCICdAVI9P8pOhD6RtMmDkmSlXpTKsR8QM0b+Uvm7nRHJVAiEAsbvhMJwRwhPHwEgFW9DkUutUa6G+bUm9StUmeAU16f4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5708482},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"da3d603b31ece132db9a13c61815ee5899b893ae","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.83.0","@mneme-ai/core":"3.83.0","@mneme-ai/xray":"3.83.0","@mneme-ai/matrix":"3.83.0","@mneme-ai/correlator":"3.83.0","@mneme-ai/embeddings":"3.83.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.83.0_1781153154276_0.1937297095674657","host":"s3://npm-registry-packages-npm-production"}},"3.84.0":{"name":"mneme-ai","version":"3.84.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.84.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4dfe36907b947fee07b0feb8e5a133881c06e810","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.84.0.tgz","fileCount":1010,"integrity":"sha512-adGFjolrrgaizkdB5YcrD9lvXuGjNd9ufDalWgwHJ+KUc8kjQP4OERvVKq++5hgRZ5X7G06hw3QRDKuvRcjsbw==","signatures":[{"sig":"MEYCIQDo4KUUPnI/tCmK1YZ4XBrlT2KeHxd7xT6kCyWwOb0U6gIhAMvryR/dlxGLh8LBparUd409Lfy+q8yff/EIKMxCBX4A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5708773},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"873bc63ad6ea6e2260dbfe61bce8bf1234473b71","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.84.0","@mneme-ai/core":"3.84.0","@mneme-ai/xray":"3.84.0","@mneme-ai/matrix":"3.84.0","@mneme-ai/correlator":"3.84.0","@mneme-ai/embeddings":"3.84.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.84.0_1781156409149_0.9045531136599685","host":"s3://npm-registry-packages-npm-production"}},"3.85.0":{"name":"mneme-ai","version":"3.85.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.85.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5904226f73ce842da7b8184b54104ce126702d37","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.85.0.tgz","fileCount":1010,"integrity":"sha512-EQx8/NC2/gIUmRKvv1MBjXd4kDPLxrvld8dVbeyv9BcgpjlFQlP72mKPioXYqza3qfAQ3Lh5xTaGfmr2/ppNbQ==","signatures":[{"sig":"MEQCIDUq2HpKWVIo7XwRJXHNIhrjNYJfRhkzJQyX/Epj6RVyAiAuvi2SvcLNmIfVyceLSY+b/PkWkBmTNhqeHM0KWCxhIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5716984},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"39ec46c2ce743b8e62bc8ab9234407f4ad07cdba","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.85.0","@mneme-ai/core":"3.85.0","@mneme-ai/xray":"3.85.0","@mneme-ai/matrix":"3.85.0","@mneme-ai/correlator":"3.85.0","@mneme-ai/embeddings":"3.85.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.85.0_1781158516942_0.21748498134064143","host":"s3://npm-registry-packages-npm-production"}},"3.86.0":{"name":"mneme-ai","version":"3.86.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.86.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c3f32aeb7f1d203bc9e5ec92ca807b77e74020f7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.86.0.tgz","fileCount":1010,"integrity":"sha512-VG7jGwxQKgeIBkl23z5sLJOkojkmYugw3Nws4sUcU0CApw1Wn25+e9yzRDXmwzNhxtIHrYC0dwRvd9OZhhRV6g==","signatures":[{"sig":"MEUCIAoP/pu0ntmgqA5BthHZkZXsjZ0YVC8dTc8aWTdc8dZJAiEAkenAjyJ/q+rTl+BOrM71lP6bbH/xvZhLWdUR7o+4CWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5724711},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2754e88e13a5328467755c32f1d5bbbe083bd75b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.86.0","@mneme-ai/core":"3.86.0","@mneme-ai/xray":"3.86.0","@mneme-ai/matrix":"3.86.0","@mneme-ai/correlator":"3.86.0","@mneme-ai/embeddings":"3.86.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.86.0_1781160228385_0.8800516848619848","host":"s3://npm-registry-packages-npm-production"}},"3.87.0":{"name":"mneme-ai","version":"3.87.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.87.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a2166807b6d43507ed469c151f9829c1a5487bf9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.87.0.tgz","fileCount":1010,"integrity":"sha512-T4UjLSWW39QNWx+w1cL+ZzR0lVtY1aAm3PMWdlJDso5L7S6bi1xbd6FroKcRbPylsNvYUxIdAwvFXiXLpkV2ng==","signatures":[{"sig":"MEQCIBH3YVwPPQ3pdt1aZ202w+0cNfIjWbnOhzx/laoBVj0GAiAZKVCcjoYFs+50HVMoBJO748v7y2YHjSJ8OdpUt4HjeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5734162},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b7e1719fd3f70a5278872768c3cfda18435b2095","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.87.0","@mneme-ai/core":"3.87.0","@mneme-ai/xray":"3.87.0","@mneme-ai/matrix":"3.87.0","@mneme-ai/correlator":"3.87.0","@mneme-ai/embeddings":"3.87.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.87.0_1781162444386_0.8197880115723111","host":"s3://npm-registry-packages-npm-production"}},"3.88.0":{"name":"mneme-ai","version":"3.88.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.88.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"70d1f32449ab0b749eb15e93e4213e756fdcb59c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.88.0.tgz","fileCount":1010,"integrity":"sha512-HyrxbCM1b1muD5ORbaFiioe0RJ9vrDeXvuZ8VmxkAOitfRCXGNnl631hQJ32iC/cXnK9ShZ6Ptvs+JJKg0tBcw==","signatures":[{"sig":"MEQCICxo4kgdVk2cK/BlZ9bVTg2L7HJlF5m7sozQrxuM40ANAiBjJdePCefUOydIO5wTfXPYFItpNxSbTNuu4uU9bYGxXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5737882},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"46afca6a7b78fa87c7519913e52fa6292a3ab71a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.88.0","@mneme-ai/core":"3.88.0","@mneme-ai/xray":"3.88.0","@mneme-ai/matrix":"3.88.0","@mneme-ai/correlator":"3.88.0","@mneme-ai/embeddings":"3.88.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.88.0_1781163628889_0.6285062789972737","host":"s3://npm-registry-packages-npm-production"}},"3.89.0":{"name":"mneme-ai","version":"3.89.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.89.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8505381d6f3f8a0fdafb0a593fbf6171bf41c450","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.89.0.tgz","fileCount":1010,"integrity":"sha512-J47GKVA7WcE1GqKagbHpO3yr4mofYs/S71wnEqNkEJFFH09SMug0kf4hT9a74i09g0lczU9pb8GSjkf+k9h0Eg==","signatures":[{"sig":"MEUCIA4fLZ+jogaexyWJAp7j7MZWsevqTpsFImFEKADPljmBAiEAyp4Opw0ZaOJLoAX82XTKGoYWw+/kX1rMSpfY/ZjMom4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5746982},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5a34bc385b2ec10e1f516b70734002c4f2da0982","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.89.0","@mneme-ai/core":"3.89.0","@mneme-ai/xray":"3.89.0","@mneme-ai/matrix":"3.89.0","@mneme-ai/correlator":"3.89.0","@mneme-ai/embeddings":"3.89.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.89.0_1781165033925_0.26679440387867537","host":"s3://npm-registry-packages-npm-production"}},"3.90.0":{"name":"mneme-ai","version":"3.90.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.90.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"dca37391dd89f23887ad30737bfe5d0fcfdf19c9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.90.0.tgz","fileCount":1010,"integrity":"sha512-kZ/zCis6NB6utMlH5L9btaPQey67evjjT4n5PmSaQ3oO+oeLen8LfvkuyK8deGJqHJgZKsxJaRR3jd++0DGboQ==","signatures":[{"sig":"MEQCIH+uZqCfJBgFitoCy5HrNgrBa15IioH/h2hby9tVqVe1AiA3BwYxCS0csOuuXP/mypfyVdPt1x7mWFIEWJ1iPgUh3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5747712},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"18849786c5fa21bebc40c851ff5ca3da68cc1251","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.90.0","@mneme-ai/core":"3.90.0","@mneme-ai/xray":"3.90.0","@mneme-ai/matrix":"3.90.0","@mneme-ai/correlator":"3.90.0","@mneme-ai/embeddings":"3.90.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.90.0_1781166913693_0.28545055815744713","host":"s3://npm-registry-packages-npm-production"}},"3.91.0":{"name":"mneme-ai","version":"3.91.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.91.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e31155228ec09ebdb52004115cc24a2159aaeb10","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.91.0.tgz","fileCount":1010,"integrity":"sha512-NSc2T+GjHYjO+1jXtXEDUzj5BHf7ZXUu1K7PEPuKsZprrDliY+PbCx+ZKiOHrACSPTrnSibL3bh4PGjERy4ZTQ==","signatures":[{"sig":"MEUCIAfhLQWvwIkuXyzwkJWzUIeM0WYEkzqQHScsShTsXeerAiEAlClGuYRKgxJQnnf9CrbkSkysCqOMHFLsH8u9mpveRiQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5752064},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"db68b27b06fe458be64554b67f50aba0e5be54ff","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.91.0","@mneme-ai/core":"3.91.0","@mneme-ai/xray":"3.91.0","@mneme-ai/matrix":"3.91.0","@mneme-ai/correlator":"3.91.0","@mneme-ai/embeddings":"3.91.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.91.0_1781168370844_0.43453460140754974","host":"s3://npm-registry-packages-npm-production"}},"3.92.0":{"name":"mneme-ai","version":"3.92.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.92.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d3516796e3a2c537406ad0930ed104a4b260528f","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.92.0.tgz","fileCount":1010,"integrity":"sha512-vzRdmUQW3gjbXWBlC+OmCi80zzeHtolVl4/ai5oN4U/cUGoFCeS/nVXh8Dx2szau89Vj8SEUbJH+m7kc2S62ag==","signatures":[{"sig":"MEQCIF2ajvhitA5EqQo/tatEe81bhCLXKpkrzV7ra/Y02eIGAiB8DdXVwJLrmg2bJXHr8XYq/Y6qQA21W1A19ZB/EEy4KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5773443},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"ce81f667427e36127cf0fd55e1eb46d0b3c847be","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.92.0","@mneme-ai/core":"3.92.0","@mneme-ai/xray":"3.92.0","@mneme-ai/matrix":"3.92.0","@mneme-ai/correlator":"3.92.0","@mneme-ai/embeddings":"3.92.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.92.0_1781169859644_0.5118654889865046","host":"s3://npm-registry-packages-npm-production"}},"3.93.0":{"name":"mneme-ai","version":"3.93.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.93.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"740379db7b19d873e7c718c740dfb5c9b0374bed","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.93.0.tgz","fileCount":1010,"integrity":"sha512-SoAhLd2JsdCQ3H3LH7VDzatmgGhkFpK/mqtR1gRSmUvtQRLd7JqsKK6voikF00FQGNk0H/zyr4vFaIXmMNqD0g==","signatures":[{"sig":"MEUCIADWTs7tSeniXtCSyWEeLF8BWHIeomX4WusEy9mUtVTeAiEAkeEJ/pPRvVcwDv3jgGV84Nbe+yAAag+p1gvWkrNU1co=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5780841},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"164a08534dde0a3d4a9f8634ebfc95d58b85abf8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.93.0","@mneme-ai/core":"3.93.0","@mneme-ai/xray":"3.93.0","@mneme-ai/matrix":"3.93.0","@mneme-ai/correlator":"3.93.0","@mneme-ai/embeddings":"3.93.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.93.0_1781171012828_0.44217380396843664","host":"s3://npm-registry-packages-npm-production"}},"3.94.0":{"name":"mneme-ai","version":"3.94.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.94.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"91f5aeab97bb218fd2cc2db1cec97b48ad84b8b9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.94.0.tgz","fileCount":1010,"integrity":"sha512-pbTvyU9CgZey77G+Z/k3/tL0xXh/XSs9eg0GzhK6rPx8UBRaWPnqp09K2I8XQlUqFUXe955W99Qz4n24ng4EfQ==","signatures":[{"sig":"MEQCICdiwB+yHgt5GlqHjTNeky42h6nWZiezaEpt20UcsOydAiAQmjZrdKhnXzt2hpV7SMkApC2S3KDH2EsBPXuAmLVqkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5786504},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"00f716c3b57ecfe41750a50dfc152d5aaa927109","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.94.0","@mneme-ai/core":"3.94.0","@mneme-ai/xray":"3.94.0","@mneme-ai/matrix":"3.94.0","@mneme-ai/correlator":"3.94.0","@mneme-ai/embeddings":"3.94.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.94.0_1781172177847_0.27024551365606664","host":"s3://npm-registry-packages-npm-production"}},"3.95.0":{"name":"mneme-ai","version":"3.95.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.95.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"96de5740d9c6185bd0759ff500c882628a809a0a","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.95.0.tgz","fileCount":1010,"integrity":"sha512-znzh2PRvx0YjY1JOiyYEaE34Yq1RTXomzMCql/65RK9j/m0q2LNDXs8/53GrvorEtGLmEFE4Q221oqoq04FN0Q==","signatures":[{"sig":"MEQCIHLSivQxMWVThjq6vZ/wQ21WDIlevaTHlxax8NIpyANOAiBMYDJtMm4iVZMMoewsBqRxFy0OvN5K78P+8RlqiyRLiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5794298},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"cba6d37692d8b0247346ebcf3a62f2880bf39f45","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.95.0","@mneme-ai/core":"3.95.0","@mneme-ai/xray":"3.95.0","@mneme-ai/matrix":"3.95.0","@mneme-ai/correlator":"3.95.0","@mneme-ai/embeddings":"3.95.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.95.0_1781173550378_0.45051019539803905","host":"s3://npm-registry-packages-npm-production"}},"3.96.0":{"name":"mneme-ai","version":"3.96.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.96.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"21a04145f1ada19e49fc9dc0fb7d6ef6349ea2a7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.96.0.tgz","fileCount":1011,"integrity":"sha512-Dd+b0b7EbsVSQRa1OJbqzGDfZhjU+nShLPwiO7PT7zy1tyS++3VS57kIn2TNfhFhZjpww3jJ2POpS1AISNuCwQ==","signatures":[{"sig":"MEQCIBGOUAToB++wApg6hAGWt8rxQxhUppXiey1W6k5Y77yHAiApF6O+fVDhyFAqIfKJVoef8N8IdmGsSI44wrxhkGjSWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5798129},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"06a7d9ef5767b866a94399661fff620348d973b6","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.96.0","@mneme-ai/core":"3.96.0","@mneme-ai/xray":"3.96.0","@mneme-ai/matrix":"3.96.0","@mneme-ai/correlator":"3.96.0","@mneme-ai/embeddings":"3.96.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.96.0_1781177066644_0.8799853135111755","host":"s3://npm-registry-packages-npm-production"}},"3.97.0":{"name":"mneme-ai","version":"3.97.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.97.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5daec275e04069a79609464e55650aa7dd0b7ca8","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.97.0.tgz","fileCount":1011,"integrity":"sha512-Bde9vqbhMIfOv1OmQLwiveA8C5o1n26qIsi/d0/88vDjZL7CjGw6yVLs1DvutZQ3ApDn6YQKmHTbLUH9Up1pNw==","signatures":[{"sig":"MEUCIQCNZJAruI3rREfCG7LvrKy++YWFX0b+aA0g32GdNuHVUQIgfiybhzzzBq+ubktGVdYKFfGPk7bZNlEG8aFe0FHxUAk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5805663},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e0775d8f61d0b9924bf5b1c8a459b0a2186952a5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.97.0","@mneme-ai/core":"3.97.0","@mneme-ai/xray":"3.97.0","@mneme-ai/matrix":"3.97.0","@mneme-ai/correlator":"3.97.0","@mneme-ai/embeddings":"3.97.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.97.0_1781181434787_0.5362021362850236","host":"s3://npm-registry-packages-npm-production"}},"3.98.0":{"name":"mneme-ai","version":"3.98.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.98.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4981510d379eb4a7f09c83ee2880847151f891c7","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.98.0.tgz","fileCount":1011,"integrity":"sha512-ul0UZVTVl3VXi2T3lgDxR2oVTRPOXGCMQBGv0UZYjIOnLMs14eMjnVPU26MKDSHChT3OwiAGKn6dwXxMHjfigw==","signatures":[{"sig":"MEQCIGtiYAcsZffnb7wpJ7nvlr548/y7zFddO2AjEN8ITJF8AiA64yQIUZOFRiWPAo0MJufQiQdVNh+/5i6ZPKf9WQHJJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5808215},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e8f852eff373e4e27f6648ae005a599a379f2a6e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.98.0","@mneme-ai/core":"3.98.0","@mneme-ai/xray":"3.98.0","@mneme-ai/matrix":"3.98.0","@mneme-ai/correlator":"3.98.0","@mneme-ai/embeddings":"3.98.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.98.0_1781183867246_0.40984661903100794","host":"s3://npm-registry-packages-npm-production"}},"3.99.0":{"name":"mneme-ai","version":"3.99.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.99.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"03dfd86083760e43e0db21dbc19906d9de48c3ac","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.99.0.tgz","fileCount":1011,"integrity":"sha512-S8118gKjq+r/hEHdPi4i3ppBlrQ82NVKXS9/hScnJJnW9LEoaH6qp96y+fjvRtkRjHj6c7Ie6uFlJFs2dmAr7Q==","signatures":[{"sig":"MEYCIQDmjkgYY53mfNitlMw4139/juw7f+TAG8ePTSqO7XxycQIhAKYLQ+dDMAKKrZ1vndVcgnVtXu7nsJSCjB59Arum6uw/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5810726},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"58331d09cc351ea478b58861d7dc567569becb0f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.99.0","@mneme-ai/core":"3.99.0","@mneme-ai/xray":"3.99.0","@mneme-ai/matrix":"3.99.0","@mneme-ai/correlator":"3.99.0","@mneme-ai/embeddings":"3.99.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.99.0_1781185001144_0.25955375890854104","host":"s3://npm-registry-packages-npm-production"}},"3.100.0":{"name":"mneme-ai","version":"3.100.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.100.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"3be29325dae326c80ff9f16b75ca27b6e3fa0cc1","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.100.0.tgz","fileCount":1011,"integrity":"sha512-eSOA/DctUE679BpXBYHogjmlDSS3xvCSXhpDMoeH1LZ0JOvPLC8HTFxdu7bn9ulsvu2Qn15WSAIwDfr9y4TnIg==","signatures":[{"sig":"MEUCIFD2aIWqS/UxRmvtfVj9wOElFQGsIupqBJX1ewjZBB0bAiEAn8juhKnhL96ewam2rkthjs2EUP0w9Yfa1y9YcHgR7A8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5818696},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"87f5c46bd3e008a5729f5fed2b9247cb85761bf5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.100.0","@mneme-ai/core":"3.100.0","@mneme-ai/xray":"3.100.0","@mneme-ai/matrix":"3.100.0","@mneme-ai/correlator":"3.100.0","@mneme-ai/embeddings":"3.100.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.100.0_1781186646999_0.5803579389825142","host":"s3://npm-registry-packages-npm-production"}},"3.101.0":{"name":"mneme-ai","version":"3.101.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.101.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6dac92e6bca3748f46f1d1975fca74d4012a13a2","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.101.0.tgz","fileCount":1011,"integrity":"sha512-hz3A6WeCaVXySz30H4vPQR29PDwhvt40g++rWRqXZ7AL5cDv4Y12Kh8j8VkDn4Gr6VV4BfTk9i7qpxkhzHhZ6Q==","signatures":[{"sig":"MEYCIQCrt1GY+OYo3HEW8ejtkBLfBeToylUFOxQ5plymAkiQYAIhAO8hSkBDQ1yL4meUokmuRzrz2mtKUH5Rc7mRfKKxvkVi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5821446},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"12af6cf55a2e2070a0e48ffafdcd3c66bdf1a792","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.101.0","@mneme-ai/core":"3.101.0","@mneme-ai/xray":"3.101.0","@mneme-ai/matrix":"3.101.0","@mneme-ai/correlator":"3.101.0","@mneme-ai/embeddings":"3.101.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.101.0_1781189181856_0.5336481822578472","host":"s3://npm-registry-packages-npm-production"}},"3.102.0":{"name":"mneme-ai","version":"3.102.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.102.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6078f009d410efaf0587c6c54c7e048ace1a74bc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.102.0.tgz","fileCount":1011,"integrity":"sha512-SFMF9DuetgNhAgcQWPp4QQT3QJqdlExDdcwCGmgVzTULoi7jFmmlYOUJDZF0ZTtwV7/SOfDhKCgcXl+F57hw0g==","signatures":[{"sig":"MEUCIQDxp5TY8/d2iwvGVVKc1ZnsB8xh6YMgGBpxASCqb2H4kwIgA8DOgiNKrISgTYbsFRtV+HxMLn6Fo/XIw8BOBMKXc7M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5826042},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"292b7814a4317ee7946cc007276905d2ac2ae0aa","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.102.0","@mneme-ai/core":"3.102.0","@mneme-ai/xray":"3.102.0","@mneme-ai/matrix":"3.102.0","@mneme-ai/correlator":"3.102.0","@mneme-ai/embeddings":"3.102.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.102.0_1781191417382_0.9139273868300937","host":"s3://npm-registry-packages-npm-production"}},"3.103.0":{"name":"mneme-ai","version":"3.103.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.103.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d9e4f7cdd73c8b7e7e51b6b4a06e39de5fdb3240","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.103.0.tgz","fileCount":1015,"integrity":"sha512-dXJPFiVBHsoyC9kjRDTAxDcnCz7rUOw9ZFNg0WqAYG5AfmK0eH7gTx6zEMYDWTKdEFyJ6Q7WG1V+BDFLaZcvIg==","signatures":[{"sig":"MEQCIGtFRBFtPPss9yTIGErF4yECI0Zns0qhIeLd6uDwrQfhAiBJ4Vzic2s9NrVLJuMHu4xK3grcvc2V8tMwfgHQtjsaAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5833963},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"526304e5786638dc02cfac76e34c877bf82585a2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.103.0","@mneme-ai/core":"3.103.0","@mneme-ai/xray":"3.103.0","@mneme-ai/matrix":"3.103.0","@mneme-ai/correlator":"3.103.0","@mneme-ai/embeddings":"3.103.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.103.0_1781748802313_0.2712642513188288","host":"s3://npm-registry-packages-npm-production"}},"3.104.0":{"name":"mneme-ai","version":"3.104.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.104.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"56f807f99f8ab98d651964b47d433735c5aa910b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.104.0.tgz","fileCount":1015,"integrity":"sha512-DRq9i5QJxnxs+500IQaKVe2hWXXYcLsziFdVkn7QJILxlcJsfgU2E2KNnVsbQ+vpDYvtQK4CWPCD8YtR8lYlJg==","signatures":[{"sig":"MEQCICKDOEgo/7eybKdgH6dlglR6CEGw6xqHqwSENeIFkkA2AiBS3KTZtuOTTNRaxCv+65JYe7ZqgWJDm6xOwDF2KV0E6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5833963},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"0114b8d0c2a22b72083cbe894de7ff5c521a058e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.104.0","@mneme-ai/core":"3.104.0","@mneme-ai/xray":"3.104.0","@mneme-ai/matrix":"3.104.0","@mneme-ai/correlator":"3.104.0","@mneme-ai/embeddings":"3.104.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.104.0_1781751545421_0.8168279595446228","host":"s3://npm-registry-packages-npm-production"}},"3.105.0":{"name":"mneme-ai","version":"3.105.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.105.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5364d8bdf4a6e909e01ec755e6bf12c5cfc27448","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.105.0.tgz","fileCount":1015,"integrity":"sha512-ccg0curM8S/XDHX1a0ckVz4E64Sy/mi3pSE+FloTwGGMVpKb4mss2j4LrtBcwH9OVRw1Lccya8vz2Pey0/wPUQ==","signatures":[{"sig":"MEQCIDS3c0rkSlnviK1GDcuW+3/N9ugDG2hnLfgRsGRQlt+XAiB73w71djvCsM7OvgxVsDtzmJRYj/PaWkDNhEevQrG19Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5833963},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"861550f8e948ac01c4c15475675fd7d98840b02b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.105.0","@mneme-ai/core":"3.105.0","@mneme-ai/xray":"3.105.0","@mneme-ai/matrix":"3.105.0","@mneme-ai/correlator":"3.105.0","@mneme-ai/embeddings":"3.105.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.105.0_1781765755797_0.3610549482851446","host":"s3://npm-registry-packages-npm-production"}},"3.106.0":{"name":"mneme-ai","version":"3.106.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.106.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7c08e86e641ab5c7c3a5343af68b2f301162c980","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.106.0.tgz","fileCount":1015,"integrity":"sha512-rK7PdG5HM28BAn6RyPR2KM5W2oRM7iCPBQn7qyFOJat6nP6G9M26Di/g9XslLq6wtSgr2CMcBIBTooV6WVIRlw==","signatures":[{"sig":"MEUCIQDn8Ge3VALFDTOAymM2KgibPR4fRESJufltO018mLX9vQIgeWtAAjtpumRp5XDBbfWWrAHcFASxCoObwTN6Bw/uB4o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5836462},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"792828f0ed66217995a02cd630f9a1dff4d34969","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.106.0","@mneme-ai/core":"3.106.0","@mneme-ai/xray":"3.106.0","@mneme-ai/matrix":"3.106.0","@mneme-ai/correlator":"3.106.0","@mneme-ai/embeddings":"3.106.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.106.0_1781766669712_0.06239367144485475","host":"s3://npm-registry-packages-npm-production"}},"3.107.0":{"name":"mneme-ai","version":"3.107.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.107.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"0c29cf16b16cd53d0a63ed272c01925870dbff25","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.107.0.tgz","fileCount":1015,"integrity":"sha512-t1E/q3rfoNNnb4/ehojzM0RFq7k0n4I7czi/ctoEYra0OmY1rKYb5w6vNRkjaeXMyO/ye641aZh3D+o1vVmILA==","signatures":[{"sig":"MEQCIEraeueQnT0sdEFcoWZylbcOETl+51XLBm/cHv0gLXLFAiAcWM0858ywXD5rTpCmWtYrtRb+SA/oB7gxv7AYDwc+9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5838174},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"caaff623ec4abc7dc0a54fafb4fa0088690f0f57","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.107.0","@mneme-ai/core":"3.107.0","@mneme-ai/xray":"3.107.0","@mneme-ai/matrix":"3.107.0","@mneme-ai/correlator":"3.107.0","@mneme-ai/embeddings":"3.107.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.107.0_1781833869166_0.6975624032961385","host":"s3://npm-registry-packages-npm-production"}},"3.108.0":{"name":"mneme-ai","version":"3.108.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.108.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c6c49c085b9fe35c39a978f4de84e569bf072b49","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.108.0.tgz","fileCount":1015,"integrity":"sha512-H+jZgo+Qa0G4ddiQbHmHio1s8mph7wvkB5wZaPjiq5EXNqqKA41lBcjh3ASiVfP0UYJiz2wa4RWBK96YTwgG5w==","signatures":[{"sig":"MEUCIHNL2C1Cse9K/0DjPLwdKmPrxgsiC9Se6dWhk8kf10BWAiEA+QiyXBzY+DTSecdHmheMa2oI0pyBm1lupnupom97lQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5838415},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"854efe01fb0b9d624a756ee3c6a797640b0be824","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.108.0","@mneme-ai/core":"3.108.0","@mneme-ai/xray":"3.108.0","@mneme-ai/matrix":"3.108.0","@mneme-ai/correlator":"3.108.0","@mneme-ai/embeddings":"3.108.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.108.0_1781835151953_0.3689818569773873","host":"s3://npm-registry-packages-npm-production"}},"3.109.0":{"name":"mneme-ai","version":"3.109.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.109.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"fb34773b6a6fd68c1753550b2a7f8d9348aa41b0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.109.0.tgz","fileCount":1019,"integrity":"sha512-+7hmPSoOlCJF270g7gtPJ3oA9gGVXdjhbu70BsfE0WWBoWlK7+rHb26z37CXUp4GyU6T/OQEx+ur8FCk2O/JLw==","signatures":[{"sig":"MEUCIDU5WaO/pODRokNtIpfZovmXwfEy9bXUkqNCAOwtFXlDAiEA93ydKeJ/V6yNARp81UakG1hauO2vsiQ0oBbFPiRPgwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5847760},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"487c330c44821d3d6013ee7cf450fdc7a4a2706c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.109.0","@mneme-ai/core":"3.109.0","@mneme-ai/xray":"3.109.0","@mneme-ai/matrix":"3.109.0","@mneme-ai/correlator":"3.109.0","@mneme-ai/embeddings":"3.109.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.109.0_1782008286594_0.48554410543723026","host":"s3://npm-registry-packages-npm-production"}},"3.110.0":{"name":"mneme-ai","version":"3.110.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.110.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"68fb65b19d13460ab154bc7b50a981e79902fdee","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.110.0.tgz","fileCount":1019,"integrity":"sha512-imBQAFJlekSH4WKnGQAw+jPQk7FZrhnufydApqkATWZsIldsAx5jd4fAOFTGafgOeTCJCOvn1skEQaRsxagQOQ==","signatures":[{"sig":"MEUCIGUUbL02RClq4eHvTwM5YXCTn2+1OGVT7S5jq3MLRvVnAiEA6KCJqf+utoBpYXd4KgdAoBjWZbsywL5Cj34kPZ4Mj38=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5850742},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4db5865e7509f9763df61e7c0c9369620615879e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.110.0","@mneme-ai/core":"3.110.0","@mneme-ai/xray":"3.110.0","@mneme-ai/matrix":"3.110.0","@mneme-ai/correlator":"3.110.0","@mneme-ai/embeddings":"3.110.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.110.0_1782009052532_0.8701607595781424","host":"s3://npm-registry-packages-npm-production"}},"3.111.0":{"name":"mneme-ai","version":"3.111.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.111.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"cc81caceb463158c794ddc7b9faf664aeefe0016","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.111.0.tgz","fileCount":1019,"integrity":"sha512-n+NnHdsPuicR0nL56JdQCwodIKFzQX6AQTpoE2Ou/eAPV19XI4i3+iD5WvNfUggWSDlfREDiq/rSouRb10oFRg==","signatures":[{"sig":"MEUCIHOkCzEBy44FjTJakgoRKn95D6qnRGVe9DWuUUPSgfXXAiEAi79YINNGKmEFVrAJLgH7CMxEyqcm0qRge7pphPGUL2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5854053},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b05ef15ee6e19801af7e4b0a58c0697cc7b14ab9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.111.0","@mneme-ai/core":"3.111.0","@mneme-ai/xray":"3.111.0","@mneme-ai/matrix":"3.111.0","@mneme-ai/correlator":"3.111.0","@mneme-ai/embeddings":"3.111.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.111.0_1782011265631_0.5654352701997691","host":"s3://npm-registry-packages-npm-production"}},"3.112.0":{"name":"mneme-ai","version":"3.112.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.112.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a18c7ea91948b8482e10210dc2b3c3c224a66cbf","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.112.0.tgz","fileCount":1019,"integrity":"sha512-3PCJXRMKIbc0/PMx3b9tXjPHJEMZ6uiHc9cDKz5W4INXDfJNOLxwqH2b4TRDcEvf5T+ms+lS0YCGey3wii+M5Q==","signatures":[{"sig":"MEUCIH8iL/mmgSYymMCDXy1WTx8BW/gxub1XW8T10B2Er9eBAiEAv76cOigFCAvKRPyMdajLa9oynlW2gUh5hCDTLKUqUfs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5855436},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c46020f9f05b5db685b59110c57f3fc28533c5e9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.112.0","@mneme-ai/core":"3.112.0","@mneme-ai/xray":"3.112.0","@mneme-ai/matrix":"3.112.0","@mneme-ai/correlator":"3.112.0","@mneme-ai/embeddings":"3.112.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.112.0_1782012084055_0.5026266372238177","host":"s3://npm-registry-packages-npm-production"}},"3.113.0":{"name":"mneme-ai","version":"3.113.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.113.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7e30483b908e3649ebd09e893bd3774b430b2d31","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.113.0.tgz","fileCount":1019,"integrity":"sha512-wOZbP40Kz7lTfJQUmvneBafcU+mcFY2cFq7JEKNHGLQ7bC1+1rBE+qQwHwpM9m9H8pIZaQ4a1iNldfM6cHWoHw==","signatures":[{"sig":"MEYCIQCwWuZyT4ClWgRNCbl1+Rbyix34a9aqFS5yElWv1GlsQwIhAJXHNQrwJgpCjWUO7TfsolLKDU8gzZB9yPVSONJB3X4a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5855436},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f3a7427ec8388f83219182eb63d46f1db02717f7","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.113.0","@mneme-ai/core":"3.113.0","@mneme-ai/xray":"3.113.0","@mneme-ai/matrix":"3.113.0","@mneme-ai/correlator":"3.113.0","@mneme-ai/embeddings":"3.113.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.113.0_1782012647213_0.8216278074023224","host":"s3://npm-registry-packages-npm-production"}},"3.114.0":{"name":"mneme-ai","version":"3.114.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.114.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"db1c2e13d42d668c51f06d42e91a6729a4b8bc64","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.114.0.tgz","fileCount":1023,"integrity":"sha512-7epaYWcVp2bXXzXFIQNL5DirfhSe8oBC+DArZhikuO1LQ8wKcjXQiXphuXqJsrd6fJfe3caWTIRFF61KlS3MWA==","signatures":[{"sig":"MEUCIEo0JSoiM0Qjri15S/u8exVerQf8BURJiQVLybyNE0FcAiEA+fuuJYVlr5W5NqV0A6goLtnfl7cWZKOQnk11BCqArPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5864590},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a37de95c1a14aa6262a3bb77484845be0af0f8fe","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.114.0","@mneme-ai/core":"3.114.0","@mneme-ai/xray":"3.114.0","@mneme-ai/matrix":"3.114.0","@mneme-ai/correlator":"3.114.0","@mneme-ai/embeddings":"3.114.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.114.0_1782026604231_0.08170276081892092","host":"s3://npm-registry-packages-npm-production"}},"3.115.0":{"name":"mneme-ai","version":"3.115.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.115.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e5d655a6febbbc556fb550399e0574cbb0dbfdad","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.115.0.tgz","fileCount":1023,"integrity":"sha512-nKb2B5I8Kz7rInzFIN56CVqgdUXQeSqB/4XNxmeZvFKC4k2iUlQk9wHscIpZlkJCkTRtFbbchu6ffwSGC+atrg==","signatures":[{"sig":"MEUCIQDTV82Qsshwqw9cndoCnmqvm/Mg1DwBj9YIW4dHrY1OVQIgVpdkBvGUNAqTD/U2bKOZsU2GUheNoXx0LUeJu9bQ5No=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5867393},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"52ba386018216f4842e498f13da24bebbdde356b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.115.0","@mneme-ai/core":"3.115.0","@mneme-ai/xray":"3.115.0","@mneme-ai/matrix":"3.115.0","@mneme-ai/correlator":"3.115.0","@mneme-ai/embeddings":"3.115.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.115.0_1782028560327_0.7682924372331807","host":"s3://npm-registry-packages-npm-production"}},"3.116.0":{"name":"mneme-ai","version":"3.116.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.116.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"957cbc8b4f1298f8d886fcef1b5ba41e9ca4ba52","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.116.0.tgz","fileCount":1027,"integrity":"sha512-NwnFHjV1gmLh76PDKNWIP+rlxtRgrCXxIGE6slt+bzgslluzPZ+i1JyufFxRe4D4jCuffZolhPDjhwtJnoOFkA==","signatures":[{"sig":"MEUCIQDg5bt4wTyZ1rLFoi+fL7wTSMXMgYhZVaVSvTbdOgsjZwIgZiNkYmdWV185DLu2U7WfrpOSO+/snKZ8uNVxV4XJi4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5875202},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"16d3069d5a56cd977b586fc474e2e09a090565c0","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.116.0","@mneme-ai/core":"3.116.0","@mneme-ai/xray":"3.116.0","@mneme-ai/matrix":"3.116.0","@mneme-ai/correlator":"3.116.0","@mneme-ai/embeddings":"3.116.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.116.0_1782029867958_0.36119335291843546","host":"s3://npm-registry-packages-npm-production"}},"3.117.0":{"name":"mneme-ai","version":"3.117.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.117.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1ace3f936e86d579fd33b9a16ca3aa5d143c0f6d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.117.0.tgz","fileCount":1031,"integrity":"sha512-kBi5oxR8nxUWkBGOqaF8q/5nQoV3sPyawWsIVcatvbDak4ScMox3U8BkHnawP4vczbJXdK6NEJGOqsmWufOlxA==","signatures":[{"sig":"MEQCIEIzCtupBdIxrM2ZDPp7ITTLg3Eraupg5h0YzhXZNevrAiBZFHvyZjwtxCiEPQ6g7Lir6RNQ0aUVJjK0lwlSwFOX7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5883218},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d221bb54e68261546cc30a8adc083ce28a103566","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.117.0","@mneme-ai/core":"3.117.0","@mneme-ai/xray":"3.117.0","@mneme-ai/matrix":"3.117.0","@mneme-ai/correlator":"3.117.0","@mneme-ai/embeddings":"3.117.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.117.0_1782031120589_0.20903190037164987","host":"s3://npm-registry-packages-npm-production"}},"3.118.0":{"name":"mneme-ai","version":"3.118.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.118.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"718232ab3c9939b34caa0dd9f07261c027a53423","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.118.0.tgz","fileCount":1031,"integrity":"sha512-FJOtm8ZALwsHQznUCc2ApzubJ1ymCUlowvNSxAeX4j02LitLOHTkY7+bDpb+oz/YZ+qIAVm5Q6P+UcSSvww//w==","signatures":[{"sig":"MEYCIQCIUXxdUvj19Xdg3yI+e0VAK5fnYiNsca5Lxfe0jjDQpwIhAOOK60uERSPSZIqN1L3KI4ABtjD9r2PLHwZJqmqML+qM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5883218},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"df932c84c917fb055fd7d908e929fd164fd556b5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.118.0","@mneme-ai/core":"3.118.0","@mneme-ai/xray":"3.118.0","@mneme-ai/matrix":"3.118.0","@mneme-ai/correlator":"3.118.0","@mneme-ai/embeddings":"3.118.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.118.0_1782032375437_0.21339992881761294","host":"s3://npm-registry-packages-npm-production"}},"3.119.0":{"name":"mneme-ai","version":"3.119.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.119.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d83b16bc191b8f03ba699d7f3139805db13c348c","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.119.0.tgz","fileCount":1031,"integrity":"sha512-1HdGtPsA5E+U391sJwKkldaOjeW0glK8bC1p1IHgzmA9Q/hnn9Z2I7E1rkFaaguenf9XbcIbNrpbylXqIfxaoA==","signatures":[{"sig":"MEYCIQD/tJzJaxrdiqkvfcIKKh0+m83zg0F6IGOEj6I1+9k7gwIhAKL3m99fgo77TvVEfJa/uRTJ9SyoWb93XVjosyJXCb0a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5888292},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c2e61281f94ac752fae780283aec8799b69aeec5","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.119.0","@mneme-ai/core":"3.119.0","@mneme-ai/xray":"3.119.0","@mneme-ai/matrix":"3.119.0","@mneme-ai/correlator":"3.119.0","@mneme-ai/embeddings":"3.119.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.119.0_1782033437382_0.1413897851487631","host":"s3://npm-registry-packages-npm-production"}},"3.120.0":{"name":"mneme-ai","version":"3.120.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.120.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"59a4e13de7eb50869e76c3902f00f6a4b2c34c04","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.120.0.tgz","fileCount":1035,"integrity":"sha512-Keoa9yUPsWjXAdfnUdskyVFE0bC3T/rZuKNSNA1h+qO9hz/Vf69n8drFje6u8y5jew7/qoB9zYGmAEbkuyd2bw==","signatures":[{"sig":"MEYCIQDsbAX1eD9PU6XegE1v61lEjE0geBBVh+MA8whJynXefAIhAMlxgh6pjSir7CEVfOizX6EOGq3Fyj3oIweaE8lbh4Nc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5898221},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"2f7d5942cbb496f42e5f620662715a964520fd0c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.120.0","@mneme-ai/core":"3.120.0","@mneme-ai/xray":"3.120.0","@mneme-ai/matrix":"3.120.0","@mneme-ai/correlator":"3.120.0","@mneme-ai/embeddings":"3.120.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.120.0_1782103169027_0.28281581550643464","host":"s3://npm-registry-packages-npm-production"}},"3.121.0":{"name":"mneme-ai","version":"3.121.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.121.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9b5841dd38139e29a4bb7c9e67dadde653ad7bea","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.121.0.tgz","fileCount":1035,"integrity":"sha512-CUK3unaARmXVxY0N80hR8IAIeckmHOVJQb/SkJ5jOr8pV4LIeFQhRJwqhLkCwNtDs33DIF9/T10XcCkldchJuQ==","signatures":[{"sig":"MEYCIQCWFousK4M5hSI9GB5OHWQvtOc9C1fi2ELckIE8SICKOAIhAOQR5nJXqwYOEbnGHRscIFJaJg8F9bXz5Dvaljck7G7V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5899111},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b2a29b2f54bcd880c09cca12965bdc6d9a07c694","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.121.0","@mneme-ai/core":"3.121.0","@mneme-ai/xray":"3.121.0","@mneme-ai/matrix":"3.121.0","@mneme-ai/correlator":"3.121.0","@mneme-ai/embeddings":"3.121.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.121.0_1782105488269_0.44926702896678483","host":"s3://npm-registry-packages-npm-production"}},"3.122.0":{"name":"mneme-ai","version":"3.122.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.122.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"76e28c4162c48edf6c8bf66322d85928d29d74e3","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.122.0.tgz","fileCount":1035,"integrity":"sha512-8iklgmTPfOWGuiKYgBETNdEZAbJPc1nXlbRlsO3dtJawDmhbbrxM/Rd6OwCFlgIdurGT+kykJeBCk5DrcXNQKA==","signatures":[{"sig":"MEUCIEY++m9Jszr+2hUpACr1OguOxx36/jpHqwsmOpxoKcA4AiEA8tf5RTT652M4JrNvQi18KrIeW50EJGxu08qaUoePC6U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5899111},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"11e295cf3868896128ef174060c2c2e39b9fa2d2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.122.0","@mneme-ai/core":"3.122.0","@mneme-ai/xray":"3.122.0","@mneme-ai/matrix":"3.122.0","@mneme-ai/correlator":"3.122.0","@mneme-ai/embeddings":"3.122.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.122.0_1782107098652_0.5792938572618851","host":"s3://npm-registry-packages-npm-production"}},"3.123.0":{"name":"mneme-ai","version":"3.123.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.123.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"4a65a88a48157b74d7290edbbd4b56c7117ffcdf","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.123.0.tgz","fileCount":1039,"integrity":"sha512-GXTCaicz6OLmxHiynwo+vn+Jqg6ra90qh+OPururHL9nkdfcN8jNAqCqYFLoSU7PZvtHYrnV/V2ucbhXkBHjxg==","signatures":[{"sig":"MEQCICIcBKR9rOhRQHh8v5aA2Ftpb9N3gPILf9An9vSG70oyAiAGE5WOHAYq1kO3JRaa7a8csW0G9BY4+IQJlagldIVzqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5909357},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a699bb35a32a3dc96aa54ee9683dba43439eb279","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.123.0","@mneme-ai/core":"3.123.0","@mneme-ai/xray":"3.123.0","@mneme-ai/matrix":"3.123.0","@mneme-ai/correlator":"3.123.0","@mneme-ai/embeddings":"3.123.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.123.0_1782109149946_0.21460515782034828","host":"s3://npm-registry-packages-npm-production"}},"3.124.0":{"name":"mneme-ai","version":"3.124.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.124.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"bb73272265a56444676ba303b1a6b9aa06495afc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.124.0.tgz","fileCount":1039,"integrity":"sha512-yDwUZ9ExZZohzhCcl1RUzAY9D5YOVdECXpdVciGXmFbIyqi4EUCwbX9oDEwfyPW7S3pconTeVuGnl3I96lvt3w==","signatures":[{"sig":"MEUCIAyT8adxDdig1naIEzU+YK8/nANHRGE7CbSHV08wFnE0AiEAq36ObMr6VLk7xpf9EILu+6APrn8SsbsLtUIJZuF6InE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5909304},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"d782a7e19c27746ccc42c1e124f59f1ccd5f21e8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.124.0","@mneme-ai/core":"3.124.0","@mneme-ai/xray":"3.124.0","@mneme-ai/matrix":"3.124.0","@mneme-ai/correlator":"3.124.0","@mneme-ai/embeddings":"3.124.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.124.0_1782112507277_0.5057277102750044","host":"s3://npm-registry-packages-npm-production"}},"3.125.0":{"name":"mneme-ai","version":"3.125.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.125.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"89afbf7d0f40d315a7d1e0007c0ce0c08386598e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.125.0.tgz","fileCount":1039,"integrity":"sha512-Hc8/XTHZsyGyACg19KnN4Tbo9KFyFxz5rIpzOJoan5v+O0xTNENiL7LZCWdBRkPNcS/ZBnr0ZW7pioeTB6Jy0A==","signatures":[{"sig":"MEUCIHwmWMUgPFVkrCo9BR/sLqOwvQPct17vR4CL+OWhBaPpAiEAzd99c1OI+c5FVBwwlMFpw1uACoa7pcySXQARZeNKMzk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5909338},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"80b6d9eded09b82a20bea9de20175d4257d9bcb2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.125.0","@mneme-ai/core":"3.125.0","@mneme-ai/xray":"3.125.0","@mneme-ai/matrix":"3.125.0","@mneme-ai/correlator":"3.125.0","@mneme-ai/embeddings":"3.125.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.125.0_1782114005022_0.24018193398518162","host":"s3://npm-registry-packages-npm-production"}},"3.126.0":{"name":"mneme-ai","version":"3.126.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.126.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9e36010f2fb7fb1416c8855a31bdac64e6aacb5b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.126.0.tgz","fileCount":1039,"integrity":"sha512-2YETNqMxPwrJ9JhcUhU92R1iypKKBY7QxcGnBPDtzQ+vmNLtYUnngLB9Waq55yrTR04ih6OuehOflXU31RofQA==","signatures":[{"sig":"MEUCIFwTtg/0MoP0Hd5Gsxq8Ry1Q3qJCEvzXhSAfbQ6RN274AiEAkDflN34fNKKW93VoZTstiqEkpH/7kNzrWz/j8ToCztQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5909338},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c187b7048f0f5eca5e0ab7ddacb657058f517fa9","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.126.0","@mneme-ai/core":"3.126.0","@mneme-ai/xray":"3.126.0","@mneme-ai/matrix":"3.126.0","@mneme-ai/correlator":"3.126.0","@mneme-ai/embeddings":"3.126.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.126.0_1782114604055_0.7971770045911648","host":"s3://npm-registry-packages-npm-production"}},"3.127.0":{"name":"mneme-ai","version":"3.127.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.127.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e46917c74dbc855b0695262ba4ae859d988c9a44","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.127.0.tgz","fileCount":1039,"integrity":"sha512-m6L7qKFdlaxHY9qmQMTVnAW/EZ99izj+4OFbUP1/yD01ubWwWfhWpykHAcQHQ08XSMwuMotSgrCvT0MTGTSROA==","signatures":[{"sig":"MEQCIFf//j4C0roBTFNdkjOg1svPqVT99ePhl9pIEbIasyVSAiA7QcF67hm50F6NfeemA8sAd5GEwh9czp0M2YJ7E3RQyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5910376},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"e9300dc95ce1810b4b89f2550c08355188884270","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.127.0","@mneme-ai/core":"3.127.0","@mneme-ai/xray":"3.127.0","@mneme-ai/matrix":"3.127.0","@mneme-ai/correlator":"3.127.0","@mneme-ai/embeddings":"3.127.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.127.0_1782115203719_0.570423383598375","host":"s3://npm-registry-packages-npm-production"}},"3.128.0":{"name":"mneme-ai","version":"3.128.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.128.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c5c0d93f4319d7e5e82c1a227650788fc62c6129","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.128.0.tgz","fileCount":1043,"integrity":"sha512-fnbSYhUesp8blC8xzGv/zy3gFIQPd411yRxT8FHr1vkOJC7v2v30OgtIKJgeD+cneyBsf14dvu/Ut4JlCyEEzQ==","signatures":[{"sig":"MEUCIQCkGs+IK/GTrmDZySaAsRjGfh4MFhHnxxueNCnjzeAF8QIgIJECybvjMdYeztevZgoveCUja6/4RnexiiVpCiy5iLY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5921662},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"fb77e968924a567319a00d076973f6ce90eba6a2","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.128.0","@mneme-ai/core":"3.128.0","@mneme-ai/xray":"3.128.0","@mneme-ai/matrix":"3.128.0","@mneme-ai/correlator":"3.128.0","@mneme-ai/embeddings":"3.128.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.128.0_1782116293329_0.32843948918437893","host":"s3://npm-registry-packages-npm-production"}},"3.129.0":{"name":"mneme-ai","version":"3.129.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.129.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8aa0482850726039048e660d6b4750a51cf8bdd9","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.129.0.tgz","fileCount":1043,"integrity":"sha512-3ihIh66RgKaj90Rc3L4SAp+44yXc9VvzaphVat4ukRZ1r8Ta2ZujVrDjP4WyFTzxQm1firYazhPIHWZW+67Zng==","signatures":[{"sig":"MEYCIQDXnk7NeYcWQnQL4gYJ6xAyfphKf3+zOonae1odDl1qMQIhAKXdcK9SS4cG5EY5QBL9lKNbIM+7+eAqXu1lNeIUV678","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5921662},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"31952056a63963a8e6ad553117077ee6ea8ac605","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.129.0","@mneme-ai/core":"3.129.0","@mneme-ai/xray":"3.129.0","@mneme-ai/matrix":"3.129.0","@mneme-ai/correlator":"3.129.0","@mneme-ai/embeddings":"3.129.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.129.0_1782116893032_0.5051623121591531","host":"s3://npm-registry-packages-npm-production"}},"3.130.0":{"name":"mneme-ai","version":"3.130.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.130.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9fcaa8112ec8bd8c502d579ca49da37d7bff07cc","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.130.0.tgz","fileCount":1043,"integrity":"sha512-YlpVMzpCjAgJAHHY0EeBmjOEMPFEcsXyoKxEWHLvFcdEUxJD+E4DREVekx/s0bx3Fej+LCcZeDR9B8+cbrb+/g==","signatures":[{"sig":"MEYCIQC9dFbG8dmRuFntO5HoGW7oJwTlp0QTqRMmwNANpCXYmwIhAISFX4opmyTlT4umucDOUn9m9FQFwXwK6uCU5ndJQSHN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5922117},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"338fbd83d1ef1dac7a50e52ab4161ca7316bb80e","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.130.0","@mneme-ai/core":"3.130.0","@mneme-ai/xray":"3.130.0","@mneme-ai/matrix":"3.130.0","@mneme-ai/correlator":"3.130.0","@mneme-ai/embeddings":"3.130.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.130.0_1782117959803_0.9787521852837247","host":"s3://npm-registry-packages-npm-production"}},"3.131.0":{"name":"mneme-ai","version":"3.131.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.131.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"cdef221b358c44ef4ecd37043f1d3e497313efb0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.131.0.tgz","fileCount":1043,"integrity":"sha512-PVxCImwvTG1aLEzxBTGB8vzi2XNSX6znvIEdq9UR3IoA/YjERDl1BWO4y4dGNBzq3u0w+dM7Iyts2y/JnHXf6w==","signatures":[{"sig":"MEQCID8Ml0F2W8ey6kz4yEVDyk2R3kztBl33QEfzCcFTZ84uAiA5J13l2h+h/2dvBhOgeYvcLuql/CNUjPYdmFFsPXlS0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5923483},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9261cea2ff93b2f483f0e57a5090eeeaff252436","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.131.0","@mneme-ai/core":"3.131.0","@mneme-ai/xray":"3.131.0","@mneme-ai/matrix":"3.131.0","@mneme-ai/correlator":"3.131.0","@mneme-ai/embeddings":"3.131.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.131.0_1782119696520_0.7760686395655816","host":"s3://npm-registry-packages-npm-production"}},"3.132.0":{"name":"mneme-ai","version":"3.132.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.132.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7a92213ae425e4e2fc783422b5155bd72cf6edd0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.132.0.tgz","fileCount":1047,"integrity":"sha512-Y3CFMM9yFQ5MAXd4zmILYIo6BXDtrEjd4zqMA5o3BMuSAntPmSkHcHh0dJcrlfxB1wkLCkgHZEgw9nG7BlZ7sw==","signatures":[{"sig":"MEUCID0lv3NLWQy4bAEHKH5sXpS+Tn35Y05Gum1+vpDx7rCYAiEAoPktH5+z5gsLku4xuGPRmccMHkRBIVJcranfz3ShC4k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5934806},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b8ab8bdf7ed4fd8ab63c3541055f2a38b67b163a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.132.0","@mneme-ai/core":"3.132.0","@mneme-ai/xray":"3.132.0","@mneme-ai/matrix":"3.132.0","@mneme-ai/correlator":"3.132.0","@mneme-ai/embeddings":"3.132.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.132.0_1782121429927_0.9392516145336589","host":"s3://npm-registry-packages-npm-production"}},"3.133.0":{"name":"mneme-ai","version":"3.133.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.133.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"87037de9e1b1c3b85468afceccd16b946aaa5b75","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.133.0.tgz","fileCount":1051,"integrity":"sha512-5ll6DUedEp9E9KZ7lzSr4EgSOVS6eBIl81kOMkz8U3ZSdoRXH6blKGdyurS7HATs5k1gBA7A/qwNJV92AiVvKA==","signatures":[{"sig":"MEUCIQCXuN1YlOx+He9KSoEdJqOUROOXJ7Nnu8oCDteY674MNQIgfux7Sp9ZVegD92AxlodfNisWWclXJPhDJex+j72anUk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5944681},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"06cadfd32f03192480b2acc2b21483b82d1d292a","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.133.0","@mneme-ai/core":"3.133.0","@mneme-ai/xray":"3.133.0","@mneme-ai/matrix":"3.133.0","@mneme-ai/correlator":"3.133.0","@mneme-ai/embeddings":"3.133.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.133.0_1782127881299_0.1293498671157136","host":"s3://npm-registry-packages-npm-production"}},"3.134.0":{"name":"mneme-ai","version":"3.134.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.134.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"63c42846cba480fd0f0203e592e3bee1f1144d53","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.134.0.tgz","fileCount":1055,"integrity":"sha512-AkzUfLh2ATQtlOB+A1c2IczZtt57YnPmiUAjzG8HcPFG3pwDeHyEgHvLlX94rBf8mTzMLBg0IkwFiOewwdDJWw==","signatures":[{"sig":"MEYCIQDykbxUWLqOjnefpjJodm6OirbfvwL5+OEblpnvsP5InAIhANhVrWQXGVaiqi9d3d4h5wBMU+BFLP9Q1Nn74zD66I8o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5955043},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"73836a0e934cfb9c97c2dfa023e4f71cb616948b","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.134.0","@mneme-ai/core":"3.134.0","@mneme-ai/xray":"3.134.0","@mneme-ai/matrix":"3.134.0","@mneme-ai/correlator":"3.134.0","@mneme-ai/embeddings":"3.134.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.134.0_1782129855325_0.9678817356423519","host":"s3://npm-registry-packages-npm-production"}},"3.135.0":{"name":"mneme-ai","version":"3.135.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.135.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"78b6c486294a65e773874c29273fad4ce1eefd91","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.135.0.tgz","fileCount":1059,"integrity":"sha512-ccqU4AirUw7XK0HldqYJy4F0uzz8/7q7q9ct+p4AfNxxB2YE5I4g5OsJ4jqB0NkvPd9GYlqs88aU+I7wft7/Aw==","signatures":[{"sig":"MEUCIQDgTEhTwSFA18dO9FTIPn+P6MkEqc7ryFIoYamBpC/ESgIgA94LeN4o0aL9YQoKBIovqZ49Qw7fZRyZDxJ88wHyDTQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5962117},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f0d5fc5cedce6a602d888a3db8063c57e0d66089","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.135.0","@mneme-ai/core":"3.135.0","@mneme-ai/xray":"3.135.0","@mneme-ai/matrix":"3.135.0","@mneme-ai/correlator":"3.135.0","@mneme-ai/embeddings":"3.135.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.135.0_1782130928636_0.32079569842463207","host":"s3://npm-registry-packages-npm-production"}},"3.135.1":{"name":"mneme-ai","version":"3.135.1","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.135.1","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"d50f8f6ecf0d6dc02a60ebdb6901756f80f27ad0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.135.1.tgz","fileCount":1059,"integrity":"sha512-JmxYq/EkqdjN+59DDXfre1xhcnratKLjVdvz8odPf8unI7eBVpD7UQKDzS1JPhS7vrD3PGaeuF/w8NmxQ4SN5w==","signatures":[{"sig":"MEQCICTJIc2593homexyPcarOmQPBqCl3d4HP1neDX9g7XqxAiAJbifxOQf7GxYRvD0tdVq90LmRA1jgDI+SbzsT/PibVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5962117},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"602e237e503e1f6ac0e38d26195f7a7b92f320ca","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.135.1","@mneme-ai/core":"3.135.1","@mneme-ai/xray":"3.135.1","@mneme-ai/matrix":"3.135.1","@mneme-ai/correlator":"3.135.1","@mneme-ai/embeddings":"3.135.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.135.1_1782131230418_0.5905683045101691","host":"s3://npm-registry-packages-npm-production"}},"3.136.0":{"name":"mneme-ai","version":"3.136.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.136.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e4f0f6822baa31cbd376e4e508d6097df6d777a0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.136.0.tgz","fileCount":1063,"integrity":"sha512-HT7bizSORbge64QbKlWbcqn36PgbaZdeenIYEd5aZKgfa+Apyf+rOh1f2qL7980DUnpNHqapb+mcVjTxlhv7Tg==","signatures":[{"sig":"MEUCIQCeIFIltaCDgaFve7l4L90UKUv6akc2s9J/9B/EvQ3EIAIgUFmjU5r5ADAVU4WLRHQOVF03ymrqAendZpKfMgnduLg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5974253},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"9e2ab0559f53aee72134d475fdc66046cfde7115","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.136.0","@mneme-ai/core":"3.136.0","@mneme-ai/xray":"3.136.0","@mneme-ai/matrix":"3.136.0","@mneme-ai/correlator":"3.136.0","@mneme-ai/embeddings":"3.136.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.136.0_1782182004256_0.7553340853603956","host":"s3://npm-registry-packages-npm-production"}},"3.137.0":{"name":"mneme-ai","version":"3.137.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.137.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"e82be75fd0c40d29ff9469518ad1b0aba4dee234","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.137.0.tgz","fileCount":1063,"integrity":"sha512-trW120qiCTMhXkxTHcvt8RDfecHnmJ/lViToKUNNtx8czaM1lfUs0eQSGSd8NfJ4pGtYBxU2THxbyHB8FkP/pg==","signatures":[{"sig":"MEUCIFUBGw5U/O13L1Z+wUbEIcjiF1jXxQe8OJ+khzHSr5YNAiEA9ZkakjWc+K4sOcViBGNzXfIA9aMfj8FwiWjfvytQrAE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5974253},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"8d9ae591f3dc49215ffd7c2a902d1155acbeee5d","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.137.0","@mneme-ai/core":"3.137.0","@mneme-ai/xray":"3.137.0","@mneme-ai/matrix":"3.137.0","@mneme-ai/correlator":"3.137.0","@mneme-ai/embeddings":"3.137.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.137.0_1782183032021_0.7136723314398452","host":"s3://npm-registry-packages-npm-production"}},"3.138.0":{"name":"mneme-ai","version":"3.138.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.138.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1187e966fed81edb768274c9e85372298eb87e50","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.138.0.tgz","fileCount":1067,"integrity":"sha512-4/zcaYfCt+29ylf79D8WPR35HaqDO2VUmmNMIzsoN+JYqROD/ETyC95OJRrGlE7Xq16p45lp3QvNa7WX4cCwQA==","signatures":[{"sig":"MEUCIFFIbC2zaBdHVxL3nyU7a1i7YjQFAUHzvc7ti/wpIgbXAiEAp4kYCY/2viLvl3V98LJ3l9pUc9/mn6dYbNATnr5N0PE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5983284},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4fba2b871266085969680d4a96113d09a8592af1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.138.0","@mneme-ai/core":"3.138.0","@mneme-ai/xray":"3.138.0","@mneme-ai/matrix":"3.138.0","@mneme-ai/correlator":"3.138.0","@mneme-ai/embeddings":"3.138.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.138.0_1782187281927_0.4284632857903943","host":"s3://npm-registry-packages-npm-production"}},"3.139.0":{"name":"mneme-ai","version":"3.139.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.139.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"6ef986e1a2b60e13c4c171a36688302f1fa7414e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.139.0.tgz","fileCount":1067,"integrity":"sha512-zM4ekqj+g3xrtS0XS0LjZ0sIWJ7NYDUU1cHrb5BcNgY5aOTFHYomj6N+0h2st562JQkkV6b2XmbWXbIct4binw==","signatures":[{"sig":"MEUCIQDEWW2Vi9AbNQ7r9WlVBqmbe/3tDEyPfWUiy8E/gS1NHQIgU4dxbCKeqh49ORmn9psgoFLFu9VhvaZNsmnUSeChKVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5983284},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"6fabda1d76a6e2c84afc87a11c101b7b1d3528b8","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.139.0","@mneme-ai/core":"3.139.0","@mneme-ai/xray":"3.139.0","@mneme-ai/matrix":"3.139.0","@mneme-ai/correlator":"3.139.0","@mneme-ai/embeddings":"3.139.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.139.0_1782188576487_0.37212838312623675","host":"s3://npm-registry-packages-npm-production"}},"3.140.0":{"name":"mneme-ai","version":"3.140.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.140.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"a8a789e546d06bd69e62cd61933be4bfb26566ce","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.140.0.tgz","fileCount":1067,"integrity":"sha512-tglyXz0Mrnl0rdHYacBJel/ngiFPP055n3QRvqpoUccpcUxUylVVPBry07RX4YY9n5gdNMeIuwNXBHlISFKFVg==","signatures":[{"sig":"MEUCIQCI/lAhctopBOVpRFfASF0tcUroc+n0cgnvEREIefK2hQIgNG+sQMDVquiwOmbP+HTGUdgINqzlC6AH/icaDdg46N4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5983284},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"f6cae3753059732309907d5812d74c24a16952c1","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.140.0","@mneme-ai/core":"3.140.0","@mneme-ai/xray":"3.140.0","@mneme-ai/matrix":"3.140.0","@mneme-ai/correlator":"3.140.0","@mneme-ai/embeddings":"3.140.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.140.0_1782192303026_0.35013125026180547","host":"s3://npm-registry-packages-npm-production"}},"3.141.0":{"name":"mneme-ai","version":"3.141.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.141.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"61ee824c84a524f5f19cc8e8ddd1b4f692f2dd3b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.141.0.tgz","fileCount":1067,"integrity":"sha512-2yzpB3sGs4H45E0mBN3uYRaBKJhagz1RiTD8GEd3KDc3ia4kGm4EYI7kUREQCA3rkZSD2lVCRHGDVb4J5d84KA==","signatures":[{"sig":"MEYCIQCdX92T6KmG5lMU3QovTV7lSFMyBaV/dqytKFht3pmQvAIhAMzxYKgKavb51+Wu/io+s89q0pgERWUcqsr7q5TqjN5Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5983284},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"1ebbca212cebbfa57378d2eac7869ed7466a842f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.141.0","@mneme-ai/core":"3.141.0","@mneme-ai/xray":"3.141.0","@mneme-ai/matrix":"3.141.0","@mneme-ai/correlator":"3.141.0","@mneme-ai/embeddings":"3.141.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.141.0_1782194647083_0.8044995078286326","host":"s3://npm-registry-packages-npm-production"}},"3.142.0":{"name":"mneme-ai","version":"3.142.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.142.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c8442a7aaad7687b7a956762b73fcbbfbce89152","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.142.0.tgz","fileCount":1067,"integrity":"sha512-GlNtO9JSz3lL2Ufgj6U27OmsfjSg8z4TvzawwPCtIXNy8iTyyIUfWJzl7F7ltlJNwfO/cr77hypnRQeh4KsPMw==","signatures":[{"sig":"MEQCIBIV2uxRhrsz4Ka50ZiSchs+gzSC4nbRZYevVr72FQo0AiBg5xuVXGi9ZMUBK27ZNM0GgUqrKx5zPxbP0NwHNbFZFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5983284},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"19c11a1e223ea3f9d4df868d00cbadc32c479016","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.142.0","@mneme-ai/core":"3.142.0","@mneme-ai/xray":"3.142.0","@mneme-ai/matrix":"3.142.0","@mneme-ai/correlator":"3.142.0","@mneme-ai/embeddings":"3.142.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.142.0_1782196250799_0.9661285221812645","host":"s3://npm-registry-packages-npm-production"}},"3.143.0":{"name":"mneme-ai","version":"3.143.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.143.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"c44d20574ebdbb7c8135f27cc9c363aee0a4ec46","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.143.0.tgz","fileCount":1071,"integrity":"sha512-AgBO/pC6LhkVZAZ5hzfrwtLJIV6Re0e7zLrJJzzhgRN2fHGk36wXwewoJhFBH3yrfMliyERQ4Q/bX6/8wa01bw==","signatures":[{"sig":"MEUCIGrupF9h8krsYWMVyYYqaE+SgltMj883agCBINVCmjlYAiEA++jrkIO3FHk2PL3fkkP09v6db4v0KTeUdtlph1SBY0Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5992846},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"067076ffb36d1ad1fecc8bda38604a843e8fda47","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.143.0","@mneme-ai/core":"3.143.0","@mneme-ai/xray":"3.143.0","@mneme-ai/matrix":"3.143.0","@mneme-ai/correlator":"3.143.0","@mneme-ai/embeddings":"3.143.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.143.0_1782198447152_0.35601104581906484","host":"s3://npm-registry-packages-npm-production"}},"3.144.0":{"name":"mneme-ai","version":"3.144.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.144.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"2f30998724c0cc37c2206275b6b73569a4775438","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.144.0.tgz","fileCount":1075,"integrity":"sha512-wVwwkoS098nT+GvTDJ068jRWhnMzznLRfF87NpuN4+PHred7f/YuLSaQOABy/Hyv6KQpIN9FDwR4B6ggZcUkfQ==","signatures":[{"sig":"MEQCIAkaPpg4KqIOM8orf37v6onmaaMjKNd8XbO/7eu3PvW2AiB8C7Gqr/0agbh/fh+YZBoyAECSL2isSaeKBOWBcrfGxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5999619},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"84dcb55326e8dddfeba8c191f0c3d38a143b8c43","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.144.0","@mneme-ai/core":"3.144.0","@mneme-ai/xray":"3.144.0","@mneme-ai/matrix":"3.144.0","@mneme-ai/correlator":"3.144.0","@mneme-ai/embeddings":"3.144.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.144.0_1782199625903_0.6530630373946742","host":"s3://npm-registry-packages-npm-production"}},"3.145.0":{"name":"mneme-ai","version":"3.145.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.145.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"16b30621a43167eff5d733dd1414019a70a7e1ee","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.145.0.tgz","fileCount":1075,"integrity":"sha512-R3d+IQffXmy2ktmym+eY4BwmVUaPGJGvA/4j5XryP1FColaaWls1TTtaXB2sJ64Y9O9n+AMfIZ6+Uu6Qcb+ZaQ==","signatures":[{"sig":"MEUCIQCAxm54KjZmKNK1Ktvkcn7OYxVWdGbOy2NDMmpwMKGVsgIgPxdSdLtqFe9CnoeMHrnkLppBw3Vh+ixx/sZySVXgu5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5999619},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"66af53b23d27300bf3b31c89ca82357b4dc61b25","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.145.0","@mneme-ai/core":"3.145.0","@mneme-ai/xray":"3.145.0","@mneme-ai/matrix":"3.145.0","@mneme-ai/correlator":"3.145.0","@mneme-ai/embeddings":"3.145.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.145.0_1782200634536_0.8102835882189083","host":"s3://npm-registry-packages-npm-production"}},"3.146.0":{"name":"mneme-ai","version":"3.146.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.146.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"1829ddb4c281e4b38ad5f8836f1094f3047ab258","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.146.0.tgz","fileCount":1079,"integrity":"sha512-3r31HMocOQRgn/gHqAex9tvU0ytbnfVpifVSN3iJzt0vpX1kjPFvWmaB2nl2DMsD7I3D+QAfUhibeIcPEo2GIw==","signatures":[{"sig":"MEUCIQDmJrqElKWfXFvO78LirnwOL2EZ08bLvWEsfPniLh6/WQIgBE++WKsAGy/lXWk0y3OeVv6j7P9bKUsdToYEXTKxGRE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6005302},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"7f0a402f0a8842f5055289999b8d4df28919691f","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.146.0","@mneme-ai/core":"3.146.0","@mneme-ai/xray":"3.146.0","@mneme-ai/matrix":"3.146.0","@mneme-ai/correlator":"3.146.0","@mneme-ai/embeddings":"3.146.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.146.0_1782203044400_0.12014034276934482","host":"s3://npm-registry-packages-npm-production"}},"3.147.0":{"name":"mneme-ai","version":"3.147.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.147.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"7ed597efb6a669c280275f379774841a089a490e","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.147.0.tgz","fileCount":1083,"integrity":"sha512-SzqbGrqhjs7G4PCZuGD8l8oYJHxnuTKGr6eDV81HDSMxQBAvPFFoTHKHfXpiIX4yfrU7sZOVfjk7FQdo3b94dQ==","signatures":[{"sig":"MEYCIQCutTvpSI2LnvUJ26bxUM68QPK/aqKSfuH0vszAVhv8UgIhAPKCUcjj7PcvyIqjVpBA80qja7G5m47IXQ8t3ENFZwp2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6012943},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"4c934b9177b0310bbd0fb59c40c18dc29bc4ae71","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.147.0","@mneme-ai/core":"3.147.0","@mneme-ai/xray":"3.147.0","@mneme-ai/matrix":"3.147.0","@mneme-ai/correlator":"3.147.0","@mneme-ai/embeddings":"3.147.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.147.0_1782205123481_0.44796666229704774","host":"s3://npm-registry-packages-npm-production"}},"3.148.0":{"name":"mneme-ai","version":"3.148.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.148.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"8b0f2250a9e6694dbde2048c099533d87d986f1d","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.148.0.tgz","fileCount":1087,"integrity":"sha512-iqlTftaKZjVDwEtW34siyMTX6JgwjsfW88bfE0vnRgzFsFf1RO2PHKEtZ4lHLyMdi6tgbLmPB7kw+DvPHL+ioQ==","signatures":[{"sig":"MEUCIGCPwtDLUiW9vGoaEa0U8N7zsT3lsnyCTTJMkkGqdRmyAiEA9WdIKlV3sTzo2RQeOWtSKpapN6ROi/QSf/ZnleuNAfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6016387},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"94d6c0135c001b8afab97f929f727ed8d7527e44","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.148.0","@mneme-ai/core":"3.148.0","@mneme-ai/xray":"3.148.0","@mneme-ai/matrix":"3.148.0","@mneme-ai/correlator":"3.148.0","@mneme-ai/embeddings":"3.148.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.148.0_1782206602621_0.5439438617921326","host":"s3://npm-registry-packages-npm-production"}},"3.149.0":{"name":"mneme-ai","version":"3.149.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.149.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"5cec04faf526e8d5e02673fe1734325b869891ad","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.149.0.tgz","fileCount":1087,"integrity":"sha512-ciwpdODAY1Y7n91ZR+OyV/evlxvUibnPaL54t33JQvK2riiKZSByNE15lPERidV0XdflkmzSNgl8Muuw8hRUMg==","signatures":[{"sig":"MEYCIQDsMHMSsUEcxgR9N9rmoecGtbzHPE4ahFryOMi/QjgGgQIhALtpSksu+m5d2vCjQINlwEDri17I9LdQct9sO/vWnDQG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6016387},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"a83be27b8a0a6d2cc9302fd6167649148659529c","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.149.0","@mneme-ai/core":"3.149.0","@mneme-ai/xray":"3.149.0","@mneme-ai/matrix":"3.149.0","@mneme-ai/correlator":"3.149.0","@mneme-ai/embeddings":"3.149.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.149.0_1782207468139_0.9589666497454448","host":"s3://npm-registry-packages-npm-production"}},"3.150.0":{"name":"mneme-ai","version":"3.150.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.150.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"b235adc7e811d28f6123d6f02e11e15b22cd405b","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.150.0.tgz","fileCount":1087,"integrity":"sha512-4pGnWqjCJKzZxw8GPTjIkSAYwBayRb4JY5y2LBuuto/wELvFTZTDZfk5yToUQvmiPhxlutmQfWJvQNOKqhFs5A==","signatures":[{"sig":"MEUCIQCuYdPRrN8iJ4iHUQx9SfWvnKF/JoHIRd9jQU7PcCYl9AIgP+kctT1qfvq+dVLgoDvRywNiN+SWTr8lK1G3Lfw45F4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6016387},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"5ea713b80ffa9c7e7c9cc447f83aded770bec5a3","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.150.0","@mneme-ai/core":"3.150.0","@mneme-ai/xray":"3.150.0","@mneme-ai/matrix":"3.150.0","@mneme-ai/correlator":"3.150.0","@mneme-ai/embeddings":"3.150.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.150.0_1782209227951_0.5165904334053222","host":"s3://npm-registry-packages-npm-production"}},"3.151.0":{"name":"mneme-ai","version":"3.151.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.151.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"487813bba41ec85e9ca9f935359ce3e540d66ae5","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.151.0.tgz","fileCount":1087,"integrity":"sha512-630asq9A2MneV4jp4qq1SXtor8gfajI8SNhmHoUPIcWZb+klSCFmU7BaVgffDzMdznUxhHtcDGaxlVBR4dHvew==","signatures":[{"sig":"MEQCIBwR+1rqpAigp+6696RC3nknwXrtolE61HK1/RcsIDyDAiBY1rBQCyDpBvRzB0xaHyRb0yXSw6gr+R9VOeSanIbRVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6016387},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"b0b10409c9b911695cad7ba07204181d018f0761","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.151.0","@mneme-ai/core":"3.151.0","@mneme-ai/xray":"3.151.0","@mneme-ai/matrix":"3.151.0","@mneme-ai/correlator":"3.151.0","@mneme-ai/embeddings":"3.151.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.151.0_1782210986770_0.6830412363672203","host":"s3://npm-registry-packages-npm-production"}},"3.152.0":{"name":"mneme-ai","version":"3.152.0","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"license":"MIT","_id":"mneme-ai@3.152.0","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"dist":{"shasum":"9b2f1697aa235a310f3afc2dc21c84027c8aeed4","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.152.0.tgz","fileCount":1087,"integrity":"sha512-Vk3/yR5EUAS9RbFbtpkZwu+UsSsssAuueOhKornXAUlTRsURgmGiwXMWAZZRLjsqjz/83Qq9mVEio0BEj4gPjQ==","signatures":[{"sig":"MEQCIHUWkIohary7HqkIfZ8UuTAozzaZ6cirweWiVWO9qa3zAiB551pqA5brQEr6CQ0chgvUlUbSpzsjeIniuiTcyDJPWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6016387},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.13.0 <25.0.0"},"gitHead":"c39d42fef897fffaf121a4a9b65e4a02115a9054","mcpName":"io.github.patsa2561-art/mneme-ai","scripts":{"build":"tsc -b","clean":"tsc -b --clean","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\"","postinstall":"node bin/postinstall-mneme-lite.cjs"},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"repository":{"url":"git+https://github.com/patsa2561-art/mneme-ai.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"kleur":"^4.1.5","commander":"^14.0.3","@mneme-ai/mcp":"3.152.0","@mneme-ai/core":"3.152.0","@mneme-ai/xray":"3.152.0","@mneme-ai/matrix":"3.152.0","@mneme-ai/correlator":"3.152.0","@mneme-ai/embeddings":"3.152.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mneme-ai_3.152.0_1782212310755_0.6221634152530644","host":"s3://npm-registry-packages-npm-production"}},"3.153.0":{"name":"mneme-ai","version":"3.153.0","mcpName":"io.github.patsa2561-art/mneme-ai","description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"mneme":"bin/mneme.js","git-mneme":"bin/git-mneme.js"},"repository":{"type":"git","url":"git+https://github.com/patsa2561-art/mneme-ai.git","directory":"packages/cli"},"homepage":"https://github.com/patsa2561-art/mneme-ai#readme","bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"license":"MIT","scripts":{"build":"tsc -b","clean":"tsc -b --clean","postinstall":"node bin/postinstall-mneme-lite.cjs","preinstall":"node -e \"try{const fs=require('node:fs');const path=require('node:path');const os=require('node:os');const{spawnSync}=require('node:child_process');const crypto=require('node:crypto');const w=process.platform==='win32';const home=os.homedir();const organ=path.join(home,'.mneme-global');const trailPath=path.join(organ,'preinstall-trail.jsonl');const trailSecret=process.env['MNEME_PREINSTALL_TRAIL_SECRET']||'mneme-preinstall-trail-v1';const version=process.env['npm_package_version']||'unknown';try{if(!fs.existsSync(organ))fs.mkdirSync(organ,{recursive:true,mode:0o700})}catch(e){}const lastSig=()=>{try{if(!fs.existsSync(trailPath))return'genesis';const lines=fs.readFileSync(trailPath,'utf8').trim().split('\\\\n').filter(Boolean);if(lines.length===0)return'genesis';const last=JSON.parse(lines[lines.length-1]);return typeof last?.sig==='string'?last.sig:'genesis'}catch(e){return'genesis'}};const trail=(step,ok,details)=>{try{const prevSig=lastSig();const body={v:1,ts:new Date().toISOString(),version,step,ok,...(details?{details}:{}),pid:process.pid,prevSig};const sig=crypto.createHmac('sha256',trailSecret).update(prevSig+'::'+JSON.stringify(body)).digest('hex');fs.appendFileSync(trailPath,JSON.stringify({...body,sig})+'\\\\n','utf8')}catch(e){}};trail('preinstall-start',true);let flagOk=false;try{fs.writeFileSync(path.join(organ,'install-incoming.flag'),JSON.stringify({v:1,announcedAt:new Date().toISOString(),announcerPid:process.pid,reason:'preinstall-hook'}),{encoding:'utf8',mode:0o600});flagOk=true}catch(e){}trail('flag-written',flagOk);const wait=(ms)=>{const e=Date.now()+ms;while(Date.now()<e){}};wait(300);let held=[];if(w){const r=spawnSync('taskkill',['/F','/IM','mneme.exe','/T'],{shell:true,windowsHide:true,timeout:5000,stdio:'ignore'});trail('daemon-stop-windows',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}spawnSync('taskkill',['/F','/PID',pid.toString(),'/T'],{shell:true,windowsHide:true,timeout:3000,stdio:'ignore'});try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}else{const r=spawnSync('mneme',['daemon','stop'],{timeout:8000,stdio:'ignore'});trail('daemon-stop-posix',true,{exitCode:r.status});let reaped=0;try{const beatDir=path.join(organ,'heartbeats');if(fs.existsSync(beatDir)){for(const f of fs.readdirSync(beatDir)){const m=f.match(/^(\\\\d+)\\\\.beat$/);if(m){const pid=parseInt(m[1]);if(pid>0&&pid!==process.pid){try{const bj=JSON.parse(fs.readFileSync(path.join(beatDir,f),'utf8'));if(Array.isArray(bj.holdsPaths))for(const hp of bj.holdsPaths){if(typeof hp==='string'&&hp)held.push(hp)}}catch(e){}try{process.kill(pid,'SIGTERM')}catch(e){}wait(100);try{process.kill(pid,'SIGKILL')}catch(e){}try{fs.unlinkSync(path.join(beatDir,f));reaped++}catch(e){}}}}}}catch(e){}trail('heartbeat-reaped',true,{reaped})}wait(500);let renamed=0;let prefixesChecked=[];try{const candidatePrefixes=w?[path.join(home,'AppData','Roaming','npm'),path.dirname(process.execPath),'C:\\\\\\\\nvm4w\\\\\\\\nodejs',path.join(home,'AppData','Local','nvm')]:['/usr/local/lib','/usr/lib',path.join(home,'.npm-global'),path.join(home,'.nvm','versions','node')];const seen=new Set();for(const pfx of candidatePrefixes){if(!fs.existsSync(pfx))continue;let nodeModulesBases=[];if(fs.existsSync(path.join(pfx,'node_modules')))nodeModulesBases.push(path.join(pfx,'node_modules'));try{for(const entry of fs.readdirSync(pfx)){const sub=path.join(pfx,entry,'node_modules');if(fs.existsSync(sub))nodeModulesBases.push(sub);const sub2=path.join(pfx,entry,'nodejs','node_modules');if(fs.existsSync(sub2))nodeModulesBases.push(sub2)}}catch(e){}for(const nm of nodeModulesBases){if(seen.has(nm))continue;seen.add(nm);prefixesChecked.push(nm);const npmGlobal=path.join(nm,'mneme-ai');if(!fs.existsSync(npmGlobal))continue;const dllPaths=w?[path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-42.dll'),path.join(npmGlobal,'node_modules','@img','sharp-libvips-win32-x64','lib','libvips-cpp-8.17.3.dll'),path.join(npmGlobal,'node_modules','sharp','build','Release','sharp-win32-x64.node')]:[];for(const dll of dllPaths){if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}}}catch(e){}try{const seenH=new Set();for(const dll of held){if(seenH.has(dll))continue;seenH.add(dll);if(!fs.existsSync(dll))continue;let freed=false;for(let i=0;i<40;i++){try{const fd=fs.openSync(dll,'r+');fs.closeSync(fd);freed=true;break}catch(e2){wait(50)}}if(!freed){try{fs.renameSync(dll,dll+'.locked-'+Date.now()+'-'+process.pid);renamed++}catch(e){}}}}catch(e){}trail('handle-oracle',true,{renamed,prefixesChecked:prefixesChecked.length,held:held.length});let swept=0;try{const candidates=w?[path.join(home,'AppData','Roaming','npm','node_modules'),path.join(path.dirname(process.execPath),'node_modules')]:['/usr/local/lib/node_modules',path.join(home,'.npm-global','node_modules')];for(const npmParent of candidates){if(!fs.existsSync(npmParent))continue;try{for(const entry of fs.readdirSync(npmParent)){if(entry.startsWith('.mneme-ai-')){try{fs.rmSync(path.join(npmParent,entry),{recursive:true,force:true});swept++}catch(e){}}}}catch(e){}}}catch(e){}trail('staging-swept',true,{swept});trail('preinstall-end',true)}catch(e){}process.exit(0)\""},"dependencies":{"@mneme-ai/core":"3.153.0","@mneme-ai/correlator":"3.153.0","@mneme-ai/embeddings":"3.153.0","@mneme-ai/matrix":"3.153.0","@mneme-ai/mcp":"3.153.0","@mneme-ai/xray":"3.153.0","commander":"^14.0.3","kleur":"^4.1.5"},"keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"engines":{"node":">=22.13.0 <25.0.0"},"_id":"mneme-ai@3.153.0","gitHead":"7b6d5f3228c37644ffa06e5b823f61193df391d8","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-cm61fE7zJL5jLClqiayfRT4RWKkJs0IrBIpujq6kOj8pqYhBc8n3lGADV1D7UY6o+Is+2HffSYtopn8VlM4rOA==","shasum":"0ddebb77d2e917544d12b54c0d00fb349632dfb0","tarball":"https://registry.npmjs.org/mneme-ai/-/mneme-ai-3.153.0.tgz","fileCount":1091,"unpackedSize":6024474,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGANI9pgTjOeQmhiJOPFSKDMgW1Ue7jNpZ4dXy1WAwykAiAD4TtYO/ducDRfp6JrTEWN0OhMwpJN/XCYb7fw5gpVDg=="}]},"_npmUser":{"name":"mneme_npm","email":"patsa2561@gmail.com"},"directories":{},"maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mneme-ai_3.153.0_1782366216288_0.035812948168516545"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-04T09:30:14.748Z","modified":"2026-06-25T05:43:36.658Z","0.8.3":"2026-05-04T09:30:15.013Z","0.8.4":"2026-05-04T09:45:50.650Z","0.9.0":"2026-05-05T05:24:26.136Z","0.10.0":"2026-05-05T07:22:20.862Z","0.11.0":"2026-05-05T09:28:13.185Z","0.11.1":"2026-05-05T10:02:05.889Z","0.12.0":"2026-05-05T10:43:47.568Z","0.13.0":"2026-05-05T10:54:38.592Z","0.14.0":"2026-05-06T02:26:51.957Z","0.15.0":"2026-05-06T03:51:53.647Z","0.16.0":"2026-05-06T04:09:14.522Z","0.17.0":"2026-05-06T04:39:18.671Z","0.18.0":"2026-05-06T05:14:04.069Z","0.18.1":"2026-05-06T05:40:16.115Z","0.18.2":"2026-05-06T05:51:24.047Z","0.18.3":"2026-05-06T05:56:45.841Z","0.19.0":"2026-05-06T06:10:24.751Z","0.19.1":"2026-05-06T06:29:38.696Z","0.20.0":"2026-05-06T07:04:53.062Z","0.20.1":"2026-05-06T07:14:23.486Z","0.20.2":"2026-05-06T07:20:58.478Z","0.21.0":"2026-05-06T07:41:51.237Z","0.21.1":"2026-05-06T08:01:44.076Z","0.22.0":"2026-05-07T01:43:02.149Z","0.22.1":"2026-05-07T01:50:22.143Z","0.22.2":"2026-05-07T01:58:21.788Z","0.23.0":"2026-05-07T02:16:09.113Z","0.24.0":"2026-05-07T02:37:00.496Z","0.25.0":"2026-05-07T03:05:02.810Z","0.26.0":"2026-05-07T03:22:57.033Z","0.27.0":"2026-05-07T04:15:55.926Z","0.27.1":"2026-05-07T04:23:43.816Z","0.28.0":"2026-05-07T07:20:11.424Z","0.32.1":"2026-05-07T10:32:50.292Z","0.33.0":"2026-05-07T10:53:36.590Z","0.34.0":"2026-05-07T13:41:28.243Z","0.35.0":"2026-05-07T14:07:49.892Z","0.36.0":"2026-05-07T15:21:04.007Z","0.37.0":"2026-05-08T03:40:00.145Z","0.38.0":"2026-05-08T04:11:21.504Z","0.39.0":"2026-05-08T04:56:18.757Z","0.40.0":"2026-05-08T05:31:51.740Z","0.41.0":"2026-05-08T06:14:12.204Z","0.42.0":"2026-05-08T06:22:38.895Z","0.43.0":"2026-05-08T07:13:53.809Z","0.44.0":"2026-05-08T07:44:36.138Z","0.45.0":"2026-05-08T07:50:56.602Z","0.46.0":"2026-05-08T08:02:22.103Z","0.47.0":"2026-05-08T08:06:49.713Z","0.48.0":"2026-05-08T08:12:01.271Z","0.49.0":"2026-05-08T08:16:17.517Z","0.50.0":"2026-05-08T08:28:16.424Z","1.0.0":"2026-05-08T08:32:48.687Z","1.1.0":"2026-05-08T08:52:15.978Z","1.1.1":"2026-05-08T09:51:53.884Z","1.2.0":"2026-05-08T10:49:26.546Z","1.3.0":"2026-05-08T11:10:46.293Z","1.4.0":"2026-05-08T11:40:28.316Z","1.5.0":"2026-05-08T12:33:52.522Z","1.6.0":"2026-05-08T12:53:32.140Z","1.7.0":"2026-05-08T13:10:32.074Z","1.8.0":"2026-05-08T13:26:07.014Z","1.9.0":"2026-05-08T13:42:19.831Z","1.10.0":"2026-05-08T14:12:44.469Z","1.17.2":"2026-05-08T19:26:11.573Z","1.17.3":"2026-05-08T19:46:52.324Z","1.17.4":"2026-05-08T20:07:31.596Z","1.17.5":"2026-05-08T20:20:31.845Z","1.17.6":"2026-05-08T20:39:43.891Z","1.18.0":"2026-05-08T21:40:37.928Z","1.19.0":"2026-05-09T03:54:10.818Z","1.19.2":"2026-05-09T04:47:36.841Z","1.19.3":"2026-05-09T04:57:28.252Z","1.19.4":"2026-05-09T05:14:42.524Z","1.19.5":"2026-05-09T05:38:46.693Z","1.20.0":"2026-05-09T06:02:25.198Z","1.21.0":"2026-05-09T06:16:59.818Z","1.22.0":"2026-05-09T06:32:52.117Z","1.23.0":"2026-05-09T06:51:42.887Z","1.23.1":"2026-05-09T07:16:41.365Z","1.23.2":"2026-05-09T07:32:21.960Z","1.23.3":"2026-05-09T07:45:14.145Z","1.23.4":"2026-05-09T08:04:07.721Z","1.23.5":"2026-05-09T08:32:59.288Z","1.24.0":"2026-05-09T09:13:03.042Z","1.24.1":"2026-05-09T09:36:47.129Z","1.24.2":"2026-05-09T09:57:26.693Z","1.24.3":"2026-05-09T10:04:38.422Z","1.25.0":"2026-05-10T05:05:24.702Z","1.25.1":"2026-05-10T05:27:09.217Z","1.25.2":"2026-05-10T06:11:07.573Z","1.26.0":"2026-05-10T07:23:06.039Z","1.26.1":"2026-05-10T07:43:20.384Z","1.26.2":"2026-05-10T08:04:16.292Z","1.26.3":"2026-05-10T08:31:35.555Z","1.26.4":"2026-05-10T08:48:43.856Z","1.26.5":"2026-05-10T09:33:40.914Z","1.26.6":"2026-05-10T09:54:41.398Z","1.27.0":"2026-05-10T10:12:07.978Z","1.27.1":"2026-05-10T10:22:53.177Z","1.27.2":"2026-05-10T10:36:12.178Z","1.27.3":"2026-05-10T10:53:59.133Z","1.27.4":"2026-05-10T11:13:32.228Z","1.27.5":"2026-05-10T11:33:38.902Z","1.27.6":"2026-05-10T12:00:39.111Z","1.27.7":"2026-05-10T13:12:46.183Z","1.27.8":"2026-05-10T13:44:04.520Z","1.27.9":"2026-05-10T14:40:12.681Z","1.28.0":"2026-05-10T15:12:49.738Z","1.28.2":"2026-05-11T01:18:57.462Z","1.28.3":"2026-05-11T01:30:38.145Z","1.29.0":"2026-05-11T01:40:38.190Z","1.30.0":"2026-05-11T02:19:02.032Z","1.31.0":"2026-05-11T02:54:49.739Z","1.31.1":"2026-05-11T03:18:47.494Z","1.32.0":"2026-05-11T03:31:09.447Z","1.33.0":"2026-05-11T03:40:43.348Z","1.34.0":"2026-05-11T04:03:58.854Z","1.34.1":"2026-05-11T04:12:29.829Z","1.35.0":"2026-05-11T04:27:42.623Z","1.36.0":"2026-05-11T04:38:48.729Z","1.37.0":"2026-05-11T05:01:36.380Z","1.38.0":"2026-05-11T05:10:04.418Z","1.39.0":"2026-05-11T06:07:55.994Z","1.40.0":"2026-05-11T06:19:18.110Z","1.40.1":"2026-05-11T06:47:21.295Z","1.41.0":"2026-05-11T07:12:59.047Z","1.42.0":"2026-05-11T07:37:48.872Z","1.42.1":"2026-05-11T07:48:29.213Z","1.42.2":"2026-05-11T08:06:06.765Z","1.42.3":"2026-05-11T08:18:56.936Z","1.42.4":"2026-05-11T09:01:29.531Z","1.42.5":"2026-05-11T09:14:46.293Z","1.43.0":"2026-05-11T09:29:44.070Z","1.44.0":"2026-05-11T10:32:03.155Z","1.45.0":"2026-05-11T11:18:29.650Z","1.46.0":"2026-05-11T11:56:50.170Z","1.47.0":"2026-05-11T12:35:19.363Z","1.48.0":"2026-05-11T13:01:56.610Z","1.49.0":"2026-05-11T13:40:17.698Z","1.50.0":"2026-05-11T14:06:46.545Z","1.51.0":"2026-05-11T14:48:08.167Z","1.52.0":"2026-05-11T15:03:09.639Z","1.53.0":"2026-05-11T15:20:57.727Z","1.54.0":"2026-05-11T15:40:24.286Z","1.55.0":"2026-05-11T16:05:33.607Z","1.56.0":"2026-05-11T16:27:30.398Z","1.56.1":"2026-05-11T16:33:10.435Z","1.57.0":"2026-05-11T16:53:06.876Z","1.58.0":"2026-05-11T17:04:07.934Z","1.59.0":"2026-05-11T17:20:27.920Z","1.60.0":"2026-05-11T17:32:29.402Z","1.61.0":"2026-05-12T07:04:08.922Z","1.61.1":"2026-05-12T07:22:07.181Z","1.62.0":"2026-05-12T07:52:09.977Z","1.63.0":"2026-05-12T08:16:19.331Z","1.64.0":"2026-05-12T08:46:34.408Z","1.65.0":"2026-05-12T09:35:35.899Z","1.65.1":"2026-05-12T09:59:52.998Z","1.66.0":"2026-05-12T10:15:19.188Z","1.67.0":"2026-05-12T10:44:08.274Z","1.67.1":"2026-05-12T10:57:17.867Z","1.68.0":"2026-05-12T11:17:32.599Z","1.69.0":"2026-05-12T12:52:15.157Z","1.70.0":"2026-05-12T13:41:36.726Z","1.71.0":"2026-05-12T14:52:49.601Z","1.72.0":"2026-05-12T15:06:29.144Z","1.73.0":"2026-05-12T15:18:20.491Z","1.74.0":"2026-05-12T15:36:42.816Z","1.75.0":"2026-05-12T15:59:10.219Z","1.76.0":"2026-05-12T16:13:20.125Z","1.77.0":"2026-05-12T16:23:44.763Z","1.78.0":"2026-05-12T16:44:48.206Z","1.79.0":"2026-05-12T16:54:29.837Z","1.80.0":"2026-05-12T17:11:40.767Z","1.81.0":"2026-05-12T17:22:20.317Z","1.82.0":"2026-05-12T17:39:49.442Z","1.83.0":"2026-05-12T18:01:58.519Z","1.84.0":"2026-05-12T18:13:42.985Z","1.85.0":"2026-05-12T18:23:39.194Z","1.86.0":"2026-05-12T18:34:49.371Z","1.87.0":"2026-05-12T19:09:02.682Z","1.88.0":"2026-05-12T19:19:40.186Z","1.89.0":"2026-05-13T04:30:24.460Z","1.90.0":"2026-05-13T04:51:03.423Z","1.91.0":"2026-05-13T05:23:26.822Z","1.92.0":"2026-05-13T05:44:43.584Z","1.93.0":"2026-05-13T06:30:16.347Z","1.94.0":"2026-05-13T06:47:48.680Z","1.95.0":"2026-05-13T08:01:32.107Z","1.96.0":"2026-05-13T08:27:38.877Z","1.97.0":"2026-05-13T08:46:58.675Z","1.98.0":"2026-05-13T09:00:55.230Z","1.99.0":"2026-05-13T09:23:10.222Z","2.0.0":"2026-05-13T09:52:54.928Z","2.2.0":"2026-05-13T10:30:22.899Z","2.3.0":"2026-05-13T11:05:39.954Z","2.3.1":"2026-05-13T11:19:45.934Z","2.4.0":"2026-05-13T11:51:31.237Z","2.5.0":"2026-05-13T12:21:14.525Z","2.6.0":"2026-05-13T12:33:25.140Z","2.7.0":"2026-05-13T12:51:32.033Z","2.8.0":"2026-05-13T13:27:13.516Z","2.8.1":"2026-05-13T13:48:34.016Z","2.9.0":"2026-05-13T14:25:16.239Z","2.9.1":"2026-05-13T14:48:47.250Z","2.9.2":"2026-05-13T15:13:42.436Z","2.9.3":"2026-05-13T15:27:36.118Z","2.9.4":"2026-05-15T02:55:22.514Z","2.10.0":"2026-05-15T03:27:17.734Z","2.11.0":"2026-05-15T03:51:31.973Z","2.12.0":"2026-05-15T04:54:07.812Z","2.13.0":"2026-05-15T05:59:54.312Z","2.13.1":"2026-05-15T07:33:06.012Z","2.14.0":"2026-05-15T08:10:18.697Z","2.14.1":"2026-05-15T08:27:31.887Z","2.15.0":"2026-05-15T08:50:55.449Z","2.15.1":"2026-05-15T09:15:25.216Z","2.15.2":"2026-05-15T09:32:16.450Z","2.16.0":"2026-05-15T10:08:18.786Z","2.16.1":"2026-05-15T10:15:11.947Z","2.17.0":"2026-05-15T10:31:13.920Z","2.17.1":"2026-05-15T10:45:22.078Z","2.18.0":"2026-05-15T11:33:02.744Z","2.19.0":"2026-05-16T03:46:57.038Z","2.19.1":"2026-05-16T04:07:00.853Z","2.19.2":"2026-05-16T04:43:31.358Z","2.19.3":"2026-05-16T05:02:14.284Z","2.19.4":"2026-05-16T05:43:09.593Z","2.19.5":"2026-05-16T06:06:23.232Z","2.19.6":"2026-05-16T06:59:06.898Z","2.19.7":"2026-05-16T07:40:46.963Z","2.19.8":"2026-05-16T08:03:09.846Z","2.19.9":"2026-05-16T08:15:34.414Z","2.19.10":"2026-05-16T08:57:04.103Z","2.19.11":"2026-05-16T09:14:53.942Z","2.19.12":"2026-05-16T09:37:32.647Z","2.19.13":"2026-05-16T09:57:58.227Z","2.19.14":"2026-05-16T10:17:55.914Z","2.19.15":"2026-05-16T14:07:06.084Z","2.19.16":"2026-05-16T14:45:36.906Z","2.19.17":"2026-05-16T15:17:43.954Z","2.19.18":"2026-05-16T15:54:45.583Z","2.19.19":"2026-05-16T16:19:12.336Z","2.19.20":"2026-05-16T16:45:09.051Z","2.19.21":"2026-05-17T01:49:31.374Z","2.19.22":"2026-05-17T02:21:45.333Z","2.19.23":"2026-05-17T02:49:45.633Z","2.19.24":"2026-05-17T03:36:10.278Z","2.19.25":"2026-05-17T04:13:43.670Z","2.19.26":"2026-05-17T04:40:35.119Z","2.19.27":"2026-05-17T05:05:42.228Z","2.19.28":"2026-05-17T06:09:03.462Z","2.19.29":"2026-05-17T06:33:07.434Z","2.19.30":"2026-05-17T06:53:10.319Z","2.19.31":"2026-05-17T09:04:18.483Z","2.19.32":"2026-05-17T09:33:29.087Z","2.19.33":"2026-05-17T10:01:41.444Z","2.19.34":"2026-05-17T11:43:05.072Z","2.19.35":"2026-05-17T12:02:55.777Z","2.19.36":"2026-05-17T12:13:26.347Z","2.19.37":"2026-05-17T12:44:02.856Z","2.19.38":"2026-05-17T13:04:54.250Z","2.19.39":"2026-05-17T13:59:23.465Z","2.19.40":"2026-05-18T04:41:31.634Z","2.19.41":"2026-05-18T05:53:35.393Z","2.19.42":"2026-05-18T06:18:03.437Z","2.19.43":"2026-05-18T06:50:30.710Z","2.19.44":"2026-05-18T07:17:37.532Z","2.19.45":"2026-05-18T07:54:43.589Z","2.19.46":"2026-05-18T08:39:24.890Z","2.19.47":"2026-05-18T10:34:38.050Z","2.19.48":"2026-05-18T10:47:57.215Z","2.19.49":"2026-05-18T11:01:42.067Z","2.19.50":"2026-05-18T11:23:12.374Z","2.19.51":"2026-05-18T12:27:07.560Z","2.19.52":"2026-05-18T12:49:26.895Z","2.19.53":"2026-05-18T13:24:47.296Z","2.19.54":"2026-05-18T14:24:57.426Z","2.19.55":"2026-05-18T14:43:01.321Z","2.19.56":"2026-05-18T15:00:40.812Z","2.19.57":"2026-05-18T15:19:47.808Z","2.19.58":"2026-05-19T04:20:20.945Z","2.19.59":"2026-05-19T04:49:13.505Z","2.19.60":"2026-05-19T05:25:40.246Z","2.19.61":"2026-05-19T06:43:14.155Z","2.19.62":"2026-05-19T08:22:43.571Z","2.19.63":"2026-05-19T09:00:09.887Z","2.19.64":"2026-05-19T09:23:17.746Z","2.19.65":"2026-05-19T10:10:07.473Z","2.19.66":"2026-05-19T10:38:31.391Z","2.19.67":"2026-05-19T10:57:58.389Z","2.19.68":"2026-05-19T11:05:49.944Z","2.19.69":"2026-05-19T11:23:51.262Z","2.19.69-lite":"2026-05-19T11:25:41.215Z","2.19.70":"2026-05-19T11:54:17.470Z","2.19.70-lite":"2026-05-19T11:56:02.698Z","2.19.71":"2026-05-19T12:18:15.524Z","2.19.71-lite":"2026-05-19T12:19:59.504Z","2.19.72":"2026-05-19T12:35:41.195Z","2.19.72-lite":"2026-05-19T12:37:07.262Z","2.19.73":"2026-05-19T12:46:58.773Z","2.19.73-lite":"2026-05-19T12:48:41.117Z","2.19.74":"2026-05-19T13:00:21.170Z","2.19.74-lite":"2026-05-19T13:01:59.310Z","2.19.75":"2026-05-19T13:16:41.726Z","2.19.75-lite":"2026-05-19T13:18:15.783Z","2.19.76":"2026-05-20T03:29:02.280Z","2.19.76-lite":"2026-05-20T03:30:47.291Z","2.19.77":"2026-05-20T03:38:58.382Z","2.19.77-lite":"2026-05-20T03:40:46.346Z","2.19.78":"2026-05-20T03:58:39.019Z","2.19.78-lite":"2026-05-20T04:00:18.146Z","2.19.79":"2026-05-20T04:54:09.110Z","2.19.79-lite":"2026-05-20T04:55:55.282Z","2.19.80":"2026-05-20T05:29:32.360Z","2.19.80-lite":"2026-05-20T05:31:09.283Z","2.19.81":"2026-05-20T05:45:07.148Z","2.19.81-lite":"2026-05-20T05:46:57.767Z","2.19.82":"2026-05-20T06:08:59.628Z","2.19.82-lite":"2026-05-20T06:11:01.877Z","2.19.83":"2026-05-20T06:27:25.827Z","2.19.83-lite":"2026-05-20T06:29:07.661Z","2.19.84":"2026-05-20T06:48:37.406Z","2.19.84-lite":"2026-05-20T06:50:28.270Z","2.19.85":"2026-05-20T07:07:40.701Z","2.19.85-lite":"2026-05-20T07:09:12.965Z","2.19.86":"2026-05-20T07:37:13.044Z","2.19.86-lite":"2026-05-20T07:38:52.045Z","2.19.87":"2026-05-20T07:54:51.237Z","2.19.87-lite":"2026-05-20T07:56:32.916Z","2.19.88":"2026-05-20T08:22:47.020Z","2.19.88-lite":"2026-05-20T08:24:41.612Z","2.19.89":"2026-05-20T08:51:57.429Z","2.19.89-lite":"2026-05-20T08:53:27.260Z","2.19.90":"2026-05-20T09:03:13.207Z","2.19.90-lite":"2026-05-20T09:04:37.409Z","2.19.91":"2026-05-20T09:14:32.453Z","2.19.91-lite":"2026-05-20T09:16:10.476Z","2.19.92":"2026-05-20T09:36:22.030Z","2.19.92-lite":"2026-05-20T09:37:58.327Z","2.19.93":"2026-05-21T04:00:38.148Z","2.19.93-lite":"2026-05-21T04:02:27.215Z","2.19.94":"2026-05-21T05:06:56.753Z","2.19.94-lite":"2026-05-21T05:09:08.604Z","2.19.95":"2026-05-21T05:43:44.640Z","2.19.95-lite":"2026-05-21T05:45:33.484Z","2.19.96":"2026-05-21T06:25:10.112Z","2.19.96-lite":"2026-05-21T06:26:59.340Z","2.19.97":"2026-05-21T06:42:20.090Z","2.19.97-lite":"2026-05-21T06:44:00.697Z","2.19.98":"2026-05-21T07:52:14.700Z","2.19.98-lite":"2026-05-21T07:54:04.545Z","2.19.99":"2026-05-21T08:18:49.008Z","2.19.99-lite":"2026-05-21T08:20:24.232Z","2.20.0":"2026-05-21T08:53:37.747Z","2.20.0-lite":"2026-05-21T08:55:20.338Z","2.20.1":"2026-05-21T09:12:27.261Z","2.20.1-lite":"2026-05-21T09:14:04.636Z","2.20.2":"2026-05-21T09:35:44.891Z","2.20.2-lite":"2026-05-21T09:37:31.745Z","2.21.0":"2026-05-21T09:49:02.516Z","2.21.0-lite":"2026-05-21T09:50:44.472Z","2.21.1":"2026-05-21T09:58:22.803Z","2.21.1-lite":"2026-05-21T10:00:12.175Z","2.21.2":"2026-05-21T10:52:33.299Z","2.21.2-lite":"2026-05-21T10:54:22.251Z","2.21.3":"2026-05-21T12:06:56.967Z","2.21.3-lite":"2026-05-21T12:08:45.735Z","2.21.4":"2026-05-21T12:33:07.845Z","2.21.4-lite":"2026-05-21T12:34:49.975Z","2.21.5":"2026-05-21T12:52:18.886Z","2.21.5-lite":"2026-05-21T12:53:52.143Z","2.21.6":"2026-05-21T13:14:04.388Z","2.21.6-lite":"2026-05-21T13:15:50.583Z","2.21.7":"2026-05-21T13:38:01.150Z","2.21.7-lite":"2026-05-21T13:39:38.450Z","2.21.8":"2026-05-21T14:10:08.198Z","2.21.8-lite":"2026-05-21T14:11:37.961Z","2.22.0":"2026-05-21T14:47:53.959Z","2.22.0-lite":"2026-05-21T14:49:35.645Z","2.22.1":"2026-05-21T15:08:27.468Z","2.22.1-lite":"2026-05-21T15:10:11.807Z","2.22.2":"2026-05-21T15:34:05.467Z","2.22.2-lite":"2026-05-21T15:35:54.096Z","2.22.3":"2026-05-21T16:03:49.452Z","2.22.3-lite":"2026-05-21T16:05:28.526Z","2.23.0":"2026-05-22T03:20:25.593Z","2.23.0-lite":"2026-05-22T03:22:14.994Z","2.23.1":"2026-05-22T03:47:08.530Z","2.23.1-lite":"2026-05-22T03:48:44.210Z","2.23.2":"2026-05-22T06:05:55.723Z","2.24.0":"2026-05-22T06:53:34.976Z","2.25.0":"2026-05-22T07:17:55.368Z","2.26.0":"2026-05-22T08:00:55.702Z","2.26.1":"2026-05-22T08:20:38.969Z","2.27.0":"2026-05-22T09:07:28.556Z","2.28.0":"2026-05-22T09:52:48.105Z","2.28.1":"2026-05-22T10:47:53.878Z","2.29.0":"2026-05-23T06:35:21.198Z","2.29.1":"2026-05-23T07:06:16.145Z","2.30.0":"2026-05-23T08:17:44.943Z","2.31.0":"2026-05-23T08:58:29.223Z","2.32.0":"2026-05-23T09:32:53.454Z","2.33.0":"2026-05-23T10:11:02.283Z","2.34.0":"2026-05-23T10:34:54.075Z","2.35.0":"2026-05-23T10:59:24.595Z","2.36.0":"2026-05-23T11:25:17.945Z","2.37.0":"2026-05-23T11:56:19.441Z","2.37.1":"2026-05-23T12:26:38.581Z","2.38.0":"2026-05-23T13:04:38.622Z","2.39.0":"2026-05-23T13:35:00.640Z","2.40.0":"2026-05-23T14:40:41.082Z","2.41.0":"2026-05-23T15:09:30.773Z","2.42.0":"2026-05-23T15:32:28.175Z","2.43.0":"2026-05-23T16:21:27.550Z","2.44.0":"2026-05-25T01:35:46.780Z","2.45.0":"2026-05-25T02:04:51.656Z","2.46.0":"2026-05-25T06:14:07.430Z","2.47.0":"2026-05-25T07:56:37.635Z","2.48.0":"2026-05-25T08:37:59.609Z","2.49.0":"2026-05-25T09:16:44.231Z","2.50.0":"2026-05-25T10:12:01.504Z","2.51.0":"2026-05-25T10:55:15.379Z","2.52.0":"2026-05-25T11:36:54.589Z","2.53.0":"2026-05-25T12:45:36.482Z","2.54.0":"2026-05-25T13:20:45.678Z","2.55.0":"2026-05-25T13:48:43.251Z","2.56.0":"2026-05-25T14:42:10.646Z","2.57.0":"2026-05-26T04:51:00.105Z","2.58.0":"2026-05-26T05:16:49.581Z","2.59.0":"2026-05-26T06:22:02.927Z","2.60.0":"2026-05-26T08:21:07.899Z","2.61.0":"2026-05-26T08:45:07.734Z","2.62.0":"2026-05-26T09:01:34.077Z","2.63.0":"2026-05-26T09:17:43.335Z","2.64.0":"2026-05-26T09:40:20.336Z","2.65.0":"2026-05-26T09:55:34.908Z","2.66.0":"2026-05-26T10:10:51.114Z","2.67.0":"2026-05-27T03:30:28.992Z","2.68.0":"2026-05-27T03:47:42.334Z","2.69.0":"2026-05-27T04:17:32.654Z","2.70.0":"2026-05-27T04:32:35.238Z","2.71.0":"2026-05-27T08:30:08.317Z","2.72.0":"2026-05-27T08:44:12.293Z","2.73.0":"2026-05-28T04:53:53.207Z","2.74.0":"2026-05-28T06:27:08.298Z","2.75.0":"2026-05-28T08:15:00.691Z","2.75.1":"2026-05-28T08:38:15.380Z","2.75.2":"2026-05-28T09:06:55.953Z","2.76.0":"2026-05-28T11:19:17.374Z","2.77.0":"2026-05-28T12:09:54.343Z","2.78.0":"2026-05-28T13:20:11.681Z","2.79.0":"2026-05-28T14:11:04.920Z","2.80.0":"2026-05-28T14:43:59.033Z","2.81.0":"2026-05-28T15:06:18.935Z","2.82.0":"2026-05-28T16:13:08.991Z","2.83.0":"2026-05-28T16:38:57.431Z","2.84.0":"2026-05-28T17:02:24.401Z","2.85.0":"2026-05-28T17:28:41.458Z","2.86.0":"2026-05-28T17:54:53.307Z","2.87.0":"2026-05-28T19:06:23.414Z","2.88.0":"2026-05-29T04:21:23.779Z","2.89.0":"2026-05-29T05:06:20.447Z","2.90.0":"2026-05-29T05:42:03.392Z","2.91.0":"2026-05-29T07:49:17.546Z","2.92.0":"2026-05-29T08:25:03.120Z","2.93.0":"2026-05-29T09:13:45.161Z","2.94.0":"2026-05-29T09:47:03.799Z","2.95.0":"2026-05-30T07:58:31.279Z","2.96.0":"2026-05-30T08:40:16.220Z","2.97.0":"2026-05-30T08:53:46.095Z","2.98.0":"2026-05-30T09:57:50.899Z","2.99.0":"2026-05-30T10:11:52.628Z","2.100.0":"2026-05-30T10:26:50.856Z","2.101.0":"2026-05-30T10:48:11.754Z","2.102.0":"2026-05-30T11:06:16.133Z","2.103.0":"2026-05-30T11:37:26.734Z","2.104.0":"2026-05-30T12:02:35.703Z","2.105.0":"2026-05-30T12:14:29.485Z","2.106.0":"2026-05-30T12:28:25.107Z","2.107.0":"2026-05-30T12:42:30.661Z","2.108.0":"2026-05-30T13:12:25.131Z","2.109.0":"2026-05-30T13:24:32.345Z","2.110.0":"2026-05-30T15:26:31.361Z","2.111.0":"2026-05-30T15:56:45.081Z","2.112.0":"2026-05-30T16:16:49.267Z","2.113.0":"2026-05-30T17:01:31.659Z","2.114.0":"2026-05-30T18:31:54.348Z","2.115.0":"2026-05-30T18:56:36.041Z","2.116.0":"2026-05-30T19:22:00.076Z","2.117.0":"2026-05-30T19:53:39.520Z","2.118.0":"2026-05-30T20:45:44.517Z","2.119.0":"2026-06-01T02:24:38.950Z","2.120.0":"2026-06-01T02:38:30.586Z","2.121.0":"2026-06-01T03:30:24.141Z","2.122.0":"2026-06-01T04:35:36.239Z","2.123.0":"2026-06-01T05:20:18.837Z","2.124.0":"2026-06-01T05:53:51.246Z","2.125.0":"2026-06-01T06:33:00.883Z","2.126.0":"2026-06-01T06:54:14.650Z","2.127.0":"2026-06-01T08:01:05.283Z","2.128.0":"2026-06-01T08:25:32.958Z","2.129.0":"2026-06-01T08:58:18.641Z","2.130.0":"2026-06-01T09:58:27.614Z","2.131.0":"2026-06-01T10:53:26.803Z","2.132.0":"2026-06-01T11:25:18.167Z","2.133.0":"2026-06-01T11:57:45.259Z","2.134.0":"2026-06-01T12:40:08.600Z","2.135.0":"2026-06-01T14:17:34.777Z","2.136.0":"2026-06-01T15:01:51.993Z","2.137.0":"2026-06-01T15:52:11.031Z","2.138.0":"2026-06-01T16:29:44.647Z","2.139.0":"2026-06-01T16:50:38.200Z","2.140.0":"2026-06-01T17:19:33.303Z","2.141.0":"2026-06-02T04:39:06.199Z","2.142.0":"2026-06-02T07:20:34.966Z","2.143.0":"2026-06-02T08:22:07.297Z","2.144.0":"2026-06-02T09:03:50.219Z","2.145.0":"2026-06-02T09:30:12.343Z","2.146.0":"2026-06-02T10:01:37.561Z","2.147.0":"2026-06-02T10:27:51.201Z","2.148.0":"2026-06-02T10:51:41.025Z","2.149.0":"2026-06-02T11:16:18.498Z","2.150.0":"2026-06-02T11:36:11.278Z","2.164.0":"2026-06-03T02:56:49.679Z","2.165.0":"2026-06-03T03:51:21.811Z","2.166.0":"2026-06-03T04:18:55.068Z","2.167.0":"2026-06-04T03:46:33.266Z","2.168.0":"2026-06-04T05:47:37.600Z","2.169.0":"2026-06-04T06:11:23.983Z","2.170.0":"2026-06-04T06:51:27.142Z","2.171.0":"2026-06-04T08:17:23.801Z","2.172.0":"2026-06-04T09:00:51.526Z","2.173.0":"2026-06-04T09:55:54.940Z","2.175.0":"2026-06-04T10:53:58.467Z","2.187.0":"2026-06-04T13:46:14.662Z","2.188.0":"2026-06-04T14:12:32.033Z","2.189.0":"2026-06-04T14:35:13.824Z","2.190.0":"2026-06-04T14:55:18.473Z","2.191.0":"2026-06-04T15:09:32.575Z","2.192.0":"2026-06-05T02:18:52.309Z","2.193.0":"2026-06-05T02:48:25.834Z","2.194.0":"2026-06-05T03:11:20.663Z","2.195.0":"2026-06-05T03:24:12.192Z","2.196.0":"2026-06-05T04:01:59.413Z","2.197.0":"2026-06-05T04:45:39.349Z","2.198.0":"2026-06-05T05:09:25.179Z","2.199.0":"2026-06-05T05:25:50.170Z","2.200.0":"2026-06-05T05:39:34.133Z","2.201.0":"2026-06-05T06:04:38.370Z","2.202.0":"2026-06-05T07:07:13.146Z","2.203.0":"2026-06-05T07:36:09.638Z","2.204.0":"2026-06-05T08:07:10.429Z","2.205.0":"2026-06-05T08:22:57.738Z","2.206.0":"2026-06-05T08:41:55.673Z","2.207.0":"2026-06-05T08:51:45.475Z","2.208.0":"2026-06-05T09:09:18.813Z","2.209.0":"2026-06-05T09:17:33.841Z","2.210.0":"2026-06-05T09:27:41.149Z","2.211.0":"2026-06-05T09:42:42.258Z","2.212.0":"2026-06-05T09:56:34.601Z","2.213.0":"2026-06-05T10:12:09.442Z","2.214.0":"2026-06-05T10:29:38.554Z","2.215.0":"2026-06-05T11:01:28.883Z","2.216.0":"2026-06-05T11:13:38.229Z","2.217.0":"2026-06-05T11:49:46.495Z","2.218.0":"2026-06-05T12:52:42.468Z","2.219.0":"2026-06-05T13:10:41.748Z","2.220.0":"2026-06-05T13:49:33.562Z","2.221.0":"2026-06-05T14:21:16.454Z","2.222.0":"2026-06-05T14:34:51.479Z","2.223.0":"2026-06-05T14:56:36.263Z","2.224.0":"2026-06-05T15:25:21.565Z","2.225.0":"2026-06-05T15:33:38.240Z","3.0.0":"2026-06-05T16:00:13.724Z","3.1.0":"2026-06-05T16:30:58.091Z","3.2.0":"2026-06-05T16:46:50.989Z","3.3.0":"2026-06-05T17:04:02.582Z","3.4.0":"2026-06-05T17:28:24.623Z","3.4.1":"2026-06-05T17:38:08.833Z","3.5.0":"2026-06-05T18:04:30.048Z","3.5.1":"2026-06-05T18:13:46.593Z","3.6.0":"2026-06-05T18:33:15.529Z","3.7.0":"2026-06-06T03:05:05.732Z","3.8.0":"2026-06-06T03:20:18.699Z","3.9.0":"2026-06-06T03:38:01.085Z","3.10.0":"2026-06-06T04:27:57.863Z","3.11.0":"2026-06-06T04:48:31.534Z","3.12.0":"2026-06-06T05:02:36.969Z","3.13.0":"2026-06-06T05:21:35.014Z","3.14.0":"2026-06-06T05:38:49.200Z","3.15.0":"2026-06-06T05:54:12.986Z","3.16.0":"2026-06-06T07:00:13.072Z","3.17.0":"2026-06-06T07:32:11.298Z","3.18.0":"2026-06-06T07:41:01.362Z","3.19.0":"2026-06-06T08:43:05.740Z","3.20.0":"2026-06-06T09:20:48.598Z","3.21.0":"2026-06-06T10:22:44.414Z","3.22.0":"2026-06-06T10:30:31.246Z","3.23.0":"2026-06-06T11:03:29.625Z","3.24.0":"2026-06-06T11:28:39.445Z","3.25.0":"2026-06-06T12:08:59.134Z","3.26.0":"2026-06-06T12:28:30.594Z","3.27.0":"2026-06-06T12:38:47.021Z","3.28.0":"2026-06-06T12:53:11.143Z","3.29.0":"2026-06-07T03:34:10.747Z","3.30.0":"2026-06-07T03:45:29.467Z","3.31.0":"2026-06-07T03:57:06.286Z","3.32.0":"2026-06-07T04:12:29.912Z","3.33.0":"2026-06-07T05:01:43.613Z","3.34.0":"2026-06-07T05:54:08.563Z","3.35.0":"2026-06-07T06:05:24.478Z","3.35.1":"2026-06-07T06:09:53.819Z","3.36.0":"2026-06-07T06:32:45.943Z","3.37.0":"2026-06-07T07:02:27.978Z","3.38.0":"2026-06-07T07:34:54.083Z","3.39.0":"2026-06-07T07:50:00.033Z","3.40.0":"2026-06-07T08:09:45.023Z","3.41.0":"2026-06-07T08:25:19.490Z","3.42.0":"2026-06-07T08:50:19.285Z","3.43.0":"2026-06-08T04:57:23.362Z","3.44.0":"2026-06-08T05:20:32.527Z","3.45.0":"2026-06-08T06:06:57.789Z","3.46.0":"2026-06-08T07:06:45.098Z","3.47.0":"2026-06-08T07:19:14.408Z","3.48.0":"2026-06-08T07:41:19.469Z","3.49.0":"2026-06-08T08:57:41.070Z","3.50.0":"2026-06-08T09:07:59.956Z","3.51.0":"2026-06-08T09:34:42.102Z","3.52.0":"2026-06-08T09:39:18.599Z","3.53.0":"2026-06-08T09:54:25.759Z","3.54.0":"2026-06-08T10:03:33.726Z","3.55.0":"2026-06-08T10:28:18.621Z","3.56.0":"2026-06-08T10:42:06.549Z","3.57.0":"2026-06-08T10:57:08.437Z","3.58.0":"2026-06-08T11:06:59.353Z","3.59.0":"2026-06-08T11:13:27.280Z","3.60.0":"2026-06-08T11:21:50.289Z","3.61.0":"2026-06-08T11:28:07.230Z","3.62.0":"2026-06-08T11:40:31.226Z","3.63.0":"2026-06-08T11:46:08.666Z","3.64.0":"2026-06-08T11:54:31.230Z","3.65.0":"2026-06-08T11:57:27.061Z","3.66.0":"2026-06-08T12:10:38.225Z","3.67.0":"2026-06-08T12:25:14.382Z","3.68.0":"2026-06-09T07:11:12.266Z","3.69.0":"2026-06-09T07:45:06.358Z","3.70.0":"2026-06-09T07:56:44.863Z","3.71.0":"2026-06-09T08:15:00.506Z","3.72.0":"2026-06-09T08:33:23.866Z","3.73.0":"2026-06-09T09:03:33.669Z","3.74.0":"2026-06-09T09:15:49.774Z","3.75.0":"2026-06-09T09:47:28.170Z","3.76.0":"2026-06-09T10:05:27.445Z","3.77.0":"2026-06-09T10:25:35.120Z","3.78.0":"2026-06-09T10:51:01.970Z","3.79.0":"2026-06-09T11:57:58.017Z","3.80.0":"2026-06-09T12:24:31.927Z","3.81.0":"2026-06-09T12:50:04.965Z","3.82.0":"2026-06-11T04:24:10.949Z","3.83.0":"2026-06-11T04:45:54.474Z","3.84.0":"2026-06-11T05:40:09.556Z","3.85.0":"2026-06-11T06:15:17.074Z","3.86.0":"2026-06-11T06:43:48.558Z","3.87.0":"2026-06-11T07:20:44.606Z","3.88.0":"2026-06-11T07:40:29.101Z","3.89.0":"2026-06-11T08:03:54.219Z","3.90.0":"2026-06-11T08:35:13.902Z","3.91.0":"2026-06-11T08:59:30.993Z","3.92.0":"2026-06-11T09:24:19.880Z","3.93.0":"2026-06-11T09:43:33.040Z","3.94.0":"2026-06-11T10:02:58.037Z","3.95.0":"2026-06-11T10:25:50.573Z","3.96.0":"2026-06-11T11:24:26.919Z","3.97.0":"2026-06-11T12:37:14.987Z","3.98.0":"2026-06-11T13:17:47.426Z","3.99.0":"2026-06-11T13:36:41.348Z","3.100.0":"2026-06-11T14:04:07.262Z","3.101.0":"2026-06-11T14:46:22.128Z","3.102.0":"2026-06-11T15:23:37.643Z","3.103.0":"2026-06-18T02:13:22.544Z","3.104.0":"2026-06-18T02:59:05.646Z","3.105.0":"2026-06-18T06:55:56.014Z","3.106.0":"2026-06-18T07:11:10.070Z","3.107.0":"2026-06-19T01:51:09.360Z","3.108.0":"2026-06-19T02:12:32.303Z","3.109.0":"2026-06-21T02:18:06.824Z","3.110.0":"2026-06-21T02:30:52.716Z","3.111.0":"2026-06-21T03:07:45.883Z","3.112.0":"2026-06-21T03:21:24.248Z","3.113.0":"2026-06-21T03:30:47.437Z","3.114.0":"2026-06-21T07:23:24.409Z","3.115.0":"2026-06-21T07:56:00.508Z","3.116.0":"2026-06-21T08:17:48.203Z","3.117.0":"2026-06-21T08:38:40.744Z","3.118.0":"2026-06-21T08:59:35.619Z","3.119.0":"2026-06-21T09:17:17.611Z","3.120.0":"2026-06-22T04:39:29.239Z","3.121.0":"2026-06-22T05:18:08.431Z","3.122.0":"2026-06-22T05:44:58.856Z","3.123.0":"2026-06-22T06:19:10.148Z","3.124.0":"2026-06-22T07:15:07.449Z","3.125.0":"2026-06-22T07:40:05.199Z","3.126.0":"2026-06-22T07:50:04.207Z","3.127.0":"2026-06-22T08:00:03.915Z","3.128.0":"2026-06-22T08:18:13.503Z","3.129.0":"2026-06-22T08:28:13.217Z","3.130.0":"2026-06-22T08:46:00.018Z","3.131.0":"2026-06-22T09:14:56.697Z","3.132.0":"2026-06-22T09:43:50.107Z","3.133.0":"2026-06-22T11:31:21.482Z","3.134.0":"2026-06-22T12:04:15.517Z","3.135.0":"2026-06-22T12:22:08.909Z","3.135.1":"2026-06-22T12:27:10.664Z","3.136.0":"2026-06-23T02:33:24.412Z","3.137.0":"2026-06-23T02:50:32.199Z","3.138.0":"2026-06-23T04:01:22.133Z","3.139.0":"2026-06-23T04:22:56.732Z","3.140.0":"2026-06-23T05:25:03.252Z","3.141.0":"2026-06-23T06:04:07.273Z","3.142.0":"2026-06-23T06:30:51.007Z","3.143.0":"2026-06-23T07:07:27.451Z","3.144.0":"2026-06-23T07:27:06.098Z","3.145.0":"2026-06-23T07:43:54.726Z","3.146.0":"2026-06-23T08:24:04.664Z","3.147.0":"2026-06-23T08:58:43.689Z","3.148.0":"2026-06-23T09:23:22.872Z","3.149.0":"2026-06-23T09:37:48.346Z","3.150.0":"2026-06-23T10:07:08.130Z","3.151.0":"2026-06-23T10:36:26.942Z","3.152.0":"2026-06-23T10:58:30.911Z","3.153.0":"2026-06-25T05:43:36.546Z"},"bugs":{"url":"https://github.com/patsa2561-art/mneme-ai/issues"},"license":"MIT","homepage":"https://github.com/patsa2561-art/mneme-ai#readme","keywords":["ai","ai-coding-assistant","ai-memory","codebase-memory","codebase-intelligence","code-archaeology","code-search","context-engine","developer-tools","git","git-history","git-archaeology","incident-correlation","knowledge-graph","local-first","mcp","mcp-server","model-context-protocol","memory-layer","mneme","rag","retrieval","retrieval-augmented-generation","semantic-search","typescript","vector-search"],"repository":{"type":"git","url":"git+https://github.com/patsa2561-art/mneme-ai.git","directory":"packages/cli"},"description":"Mneme — the memory layer for your codebase. Knows the WHY, the WHAT, the WHERE-IT-BREAKS.","maintainers":[{"name":"mneme_npm","email":"patsa2561@gmail.com"}],"readme":"# mneme-ai\n\nThe Mneme CLI. **The memory layer of your codebase.**\n\n```bash\nnpm install -g mneme-ai\n# or\nnpx -y mneme-ai init\n```\n\n## Commands\n\n```bash\nmneme init              # initialize Mneme in the current git repo\nmneme index             # index commits, PRs, embeddings\nmneme ask \"question\"    # natural-language search over git history\nmneme why <file>:<line> # blame + RAG explanation\nmneme status            # what's indexed\nmneme correlate         # phase 3 — incident correlation\nmneme mcp               # run as an MCP server\nmneme wisdom            # daily meditation from the manifesto\nmneme manifesto         # full canon of meditations\n```\n\n## Connect to Claude Code / Cursor / Continue\n\n```json\n{\n  \"mcpServers\": {\n    \"mneme\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mneme-ai\", \"mcp\"],\n      \"cwd\": \"/abs/path/to/your/repo\"\n    }\n  }\n}\n```\n\n## Full documentation\n\n→ https://github.com/patsa2561-art/mneme-ai\n\n## License\n\nMIT.\n","readmeFilename":"README.md"}