{"_id":"@a13xu/lucid","_rev":"22-aed6971fdf0f4a34111e356a9e5485aa","name":"@a13xu/lucid","dist-tags":{"latest":"1.25.0"},"versions":{"1.0.0":{"name":"@a13xu/lucid","version":"1.0.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.0.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js"},"dist":{"shasum":"006bdcaefb42db49ec79e8a33d44d08ce8ee08d4","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.0.0.tgz","fileCount":21,"integrity":"sha512-ziACZWI3v7rTrS0tWLSw9wErYxVJB31ZGKlpNOJZYmx/KBDNreLdCH2wtyx6td0A1K9NiSzE2oHWhUoR6go91w==","signatures":[{"sig":"MEUCIBsSv+luR27bBs/ePboYShQzzvS243vOOfkjBUkl4L9vAiEAlYipATPER/uEZmPYhqNn26TZA2jVrefKloJyF/JkYhI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27534},"type":"module","engines":{"node":">=18"},"gitHead":"e31f6b49973d02caf810e45b7822c1b0c1c861bf","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Persistent memory for Claude Code agents — SQLite + FTS5 knowledge graph via MCP","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","better-sqlite3":"^11.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.0.0","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.0.0_1772314394705_0.9446184295876132","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@a13xu/lucid","version":"1.1.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.1.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js"},"dist":{"shasum":"d1dd7168881ecf6002d67de302fe2967e575e0de","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.1.0.tgz","fileCount":27,"integrity":"sha512-aaGISPlGDGIQUZP3J8wBzGzIQuglUm5Gr19fecrtbFCGiqisOnbDnyAmiJkK1RmJIj8M5tLFCp3ASyIMPgAYpQ==","signatures":[{"sig":"MEUCIQDVSIEofd+q5guaD4AQUDrCJ1udlo0RJ1TMSzwWZRcyjwIgFuVZhF5q9yC29ee9FBXJTqXZtFNOD4gNLNWUqPSQDNw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52866},"type":"module","engines":{"node":">=18"},"gitHead":"320c1f4b653c35c205d32525fa2c6d8c16420958","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Persistent memory for Claude Code agents — SQLite + FTS5 knowledge graph via MCP","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","better-sqlite3":"^11.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.0.0","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.1.0_1772314919983_0.8553113839420321","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@a13xu/lucid","version":"1.4.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.4.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js"},"dist":{"shasum":"78cfb0e9d158cd3652bb8f978cce0b308b8a644b","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.4.0.tgz","fileCount":39,"integrity":"sha512-YTDLr/o6iWWrzVZotZcY8Tsdp9kntEUKkOUGlC7B+GCxCFzkFhFVN+kCvXKRyVpkcunGQ982CUYsSWM+FnSjOA==","signatures":[{"sig":"MEYCIQCdHC56Hr6grIOaoajwgHMHNIV6ThpoBYvE4r+v7p7KngIhAP7uLjFzD7zrXf0wT0A5pbiEn/gYeRFmhUzWFP/5TrqV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89803},"type":"module","engines":{"node":">=18"},"gitHead":"2ddefbdb51358cdb5ea6114e2e9e4fee844260f9","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Persistent memory for Claude Code agents — SQLite + FTS5 knowledge graph via MCP","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","better-sqlite3":"^11.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.0.0","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.4.0_1772316647252_0.7078830095528064","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@a13xu/lucid","version":"1.9.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.9.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js"},"dist":{"shasum":"6cd54c2e7b2556bdbdbfbb90fbc0f2a6814e8d8b","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.9.0.tgz","fileCount":75,"integrity":"sha512-0OWsLzXNN3dgKlnC8UbN38y/T/tjzVraqswLh2pBcIVB2+7f3TWm1SclAdZ1bWHswFGbVvk9tG3CSj6Ay+IPHA==","signatures":[{"sig":"MEUCIHHPR4qgWHrbccoUrfwwPV/J1Ezp3QGQCgvu9toYQeyDAiEA9uBF7o4xcQBwFzU1HuxOLkcc6J+DXb5M4WVHKxJ8UVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240476},"type":"module","engines":{"node":">=18"},"gitHead":"a1a197df722a6605ca9ca568b5a7534fb7d3993c","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","better-sqlite3":"^11.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.0.0","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.9.0_1772323750653_0.9094796158641301","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"@a13xu/lucid","version":"1.9.1","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.9.1","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js"},"dist":{"shasum":"498b841b5847ab76419f35331bebf287779c8300","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.9.1.tgz","fileCount":75,"integrity":"sha512-4BaahwO66cRCbPzC8VGZAiRA1d9rbLKFfQIxVoogtm8CurfwGRMjDD0kzCxxUvEWO7rUFFTKwAMF8q8jUb/91A==","signatures":[{"sig":"MEUCIGeuVJ8m75ViLabkBzqSlVEHxNqQsy0KbumunKo99/D3AiEA4FUrt/PuzAgHbIIV8UYIRRYY1Zwd2Zh98g34k9kIiG0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240476},"type":"module","engines":{"node":">=18"},"gitHead":"eb04e5e592153e0952d92f7d2438faf575562df2","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","better-sqlite3":"^11.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.0.0","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.9.1_1772352253185_0.7052060317699478","host":"s3://npm-registry-packages-npm-production"}},"1.9.2":{"name":"@a13xu/lucid","version":"1.9.2","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.9.2","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js"},"dist":{"shasum":"3feebf5bcb62a2c395516aeffd21c96af6d4b57f","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.9.2.tgz","fileCount":75,"integrity":"sha512-yk8sUs8smNwxApje3fRdwd9t9zParUufATEoKGs4NsBswOK6BFyl+6GmB/T7ucFfUPYynl1PmDWXGOyxTLw/dw==","signatures":[{"sig":"MEQCIArjgXxvnpHGBfiT24i3euVlK7TO0wYCgAUeOXxuKQElAiACOFcwQbfPOY53UuQa/WUnSe9K0Q5lKdoK4IwVNs8KDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":241572},"type":"module","engines":{"node":">=18"},"gitHead":"fbc26bef71fa5b12c0b0be227bf6038084b8e8f0","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","better-sqlite3":"^11.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.0.0","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.9.2_1772352871567_0.3915840671992663","host":"s3://npm-registry-packages-npm-production"}},"1.9.4":{"name":"@a13xu/lucid","version":"1.9.4","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.9.4","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js"},"dist":{"shasum":"a9fe7df7dc9871578a006bc6a761d11d800905e5","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.9.4.tgz","fileCount":75,"integrity":"sha512-Vk+xh5eq7hR3o16xRaaFWmrND+mceSH2P6SzH2eTqr6DSp1bhbMcFHyM7BPZu15ptEWsPvNqGY/2iG8ja9Q3QQ==","signatures":[{"sig":"MEQCIBSEuyOQ1WIfTvEZ9qO2sNjHzwSC454Mxvj2umjbcdJIAiBg0jHijj7rmyUrbTh/mQx5FPRDOuBE9UJ6X+RdOp0Sfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":247655},"type":"module","engines":{"node":">=18"},"gitHead":"7b5980559663bba69f9818b1de75e7c614ad664b","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","better-sqlite3":"^12.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.9.4_1772356991320_0.8620490744259652","host":"s3://npm-registry-packages-npm-production"}},"1.9.5":{"name":"@a13xu/lucid","version":"1.9.5","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.9.5","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js"},"dist":{"shasum":"45bebd8950ff3facf81095161965eeda95f8e053","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.9.5.tgz","fileCount":75,"integrity":"sha512-VM+K9u8W2hTmlPWokAtAa8EPUYx6FqnQy8NFI13KOs2jgjsyEeQfUJYJYCsPpANT7SmY+1oAWKPDICpZR5OR+A==","signatures":[{"sig":"MEUCIQCeQ4rH6BQMxd2cTISAI5MKJYo3xYhY6bZ1qAeZpQBoZgIgRP0WXaCegcVXMC3P77WUFQQpxMQzH07GT9RUMRG+zJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":247795},"type":"module","engines":{"node":">=18"},"gitHead":"5ab98edd6b32f87a854bddc712d2c05ce4a03e6c","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","better-sqlite3":"^12.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.9.5_1772453053723_0.95077738669974","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@a13xu/lucid","version":"1.10.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.10.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js"},"dist":{"shasum":"74514a2c134de49757351d023e6285a64e04ce86","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.10.0.tgz","fileCount":77,"integrity":"sha512-iNCdFfGW6u8je5OX4OvOj81nShLsMWWJAjsHnfyfYvealSNxC+XRpdlEOze6s7gzlywRfIi58lBM4TsTmGwnRw==","signatures":[{"sig":"MEUCIE/yWXJk02OZd+d8EzmSv2Kkbiay/kW3iUDLY+oIPdVsAiEAt01avKYOQ8hZmXdyXQiIZQ7v1un0pVJRzRAOJw8kdmM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263031},"type":"module","engines":{"node":">=18"},"gitHead":"6a96ab58d7338626d229de78697564ef22c0115c","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","better-sqlite3":"^12.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.10.0_1772554864483_0.07789446048024984","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@a13xu/lucid","version":"1.11.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.11.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js"},"dist":{"shasum":"ca4f7a24386c07457a516606f8f168396a864c1c","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.11.0.tgz","fileCount":103,"integrity":"sha512-TIZ9EI+6zPxBVrnXj8ui6gZox9cjmExMjEZMQ21PUKq+GSt71fJJ6l4KpY/E/vQBjDGAtwmdqZtb09VkoXPIbQ==","signatures":[{"sig":"MEUCIBPz0wi7RuLKvrrYPx2Eg2HkvR0R/p60pFv1TNtXpZ+OAiEAtsdpqp42yFleg49JzOdsV+wClA+EHZ2qDm/n3qcJEHw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":379772},"type":"module","engines":{"node":">=18"},"gitHead":"54ffdcee90f9d118574c83bb6dd4a8e8adc0706f","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","better-sqlite3":"^12.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.11.0_1773146633215_0.2889503711651562","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"@a13xu/lucid","version":"1.12.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.12.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js"},"dist":{"shasum":"f2b49eca627bc651ced7a24f99fd4dfd1164b2e1","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.12.0.tgz","fileCount":108,"integrity":"sha512-NbUzoF6b0h/yRn/xh4tRK0ZFuyrhUS5pb9W6Ysrwwtag2zJJI8iRaD0FdoK3zhEAgjsCN84sOEDzD2IMB7PrfA==","signatures":[{"sig":"MEQCIGlRTxqKSgGZUA3pJJ89hQCKhGP4KUugXUNlEglHwdp9AiAyDIjkfV4KKcJS8SPvymIJSRw+2QTQVfDklcU4xOuJrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":392997},"type":"module","engines":{"node":">=18"},"gitHead":"b9efb08befb582df3c6a080036a88663e6d8c32e","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","better-sqlite3":"^12.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.12.0_1773150208828_0.2755951198279316","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"@a13xu/lucid","version":"1.13.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.13.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js"},"dist":{"shasum":"55c6ef289923c165e48a5a8ce6cfc2ac0621d409","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.13.0.tgz","fileCount":110,"integrity":"sha512-Ytk3m14chDyS2qcsAa11ZH8V2iXCeyB0WyeBP6kSXJ7+g/3S2IUXildphVNzuF82h5yikqbQK5QB3v1nlAxilQ==","signatures":[{"sig":"MEYCIQCkR//TjZ4yYuj96pE5rVXW6H7eDPZuy6ldf6+n0/PRuAIhAJ3U11wBYN8bQb4xCtdVbtChPFwmeBq7NOCM6Q26OE7P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":401913},"type":"module","engines":{"node":">=18"},"gitHead":"f01572537536e0eaf8a716ee7716b20a8fd31015","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","better-sqlite3":"^12.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.13.0_1773151045666_0.6006722526340227","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"@a13xu/lucid","version":"1.16.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.16.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js","lucid-sync":"build/lucid-sync.js"},"dist":{"shasum":"308003ebef0576f6e218ec90d3f09770e59b628f","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.16.0.tgz","fileCount":125,"integrity":"sha512-iU32n0DAQPfdTmE/4yujQMVxFE07PQbT63l/Ifj+7U35QkO0PByEpnHb2aM/Rlo19aXTDErxDK8nFHN0+JoeZg==","signatures":[{"sig":"MEYCIQDelaTEHz6IweCdbUNz8K1tudj7DT2tksixhCp0aV7asgIhALC9RKdMw5EK+IJwANTBfRgoq7aEUcepEoOCnnO1vCuI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":433568},"type":"module","engines":{"node":">=18"},"gitHead":"739e681607312dee06ebf9342742394f752c22a4","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","express":"^5.2.1","chokidar":"^4.0.3","better-sqlite3":"^12.0.0","@huggingface/transformers":"^4.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^22.0.0","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.16.0_1774956291250_0.5327429621563178","host":"s3://npm-registry-packages-npm-production"}},"1.16.1":{"name":"@a13xu/lucid","version":"1.16.1","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.16.1","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js","lucid-sync":"build/lucid-sync.js"},"dist":{"shasum":"505f5592885e45e78940fcf996e152467d794f7f","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.16.1.tgz","fileCount":125,"integrity":"sha512-/0z30jis1Jnwq8oDr19gmbeMmh/CgFM9aybOqKUOY6SYgYZ2gpLg6k+8Kga79VvvqlKCy0vJRjlCRQFTmQWTpQ==","signatures":[{"sig":"MEUCIFFarh8Wf2Y/vLL9vvIG5EgPv+eOARgmoezNk9x/1C63AiEAiAzl2zaXQfmWIW7rJ6TZ6lPmWXXV/ScFNL/r8P0GAiI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":439165},"type":"module","engines":{"node":">=18"},"gitHead":"fb23338369e4db4170f1071c216cf9c684eb57a8","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","express":"^5.2.1","chokidar":"^4.0.3","better-sqlite3":"^12.0.0","@huggingface/transformers":"^4.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^22.0.0","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.16.1_1774957445946_0.37204815307749595","host":"s3://npm-registry-packages-npm-production"}},"1.16.2":{"name":"@a13xu/lucid","version":"1.16.2","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.16.2","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js","lucid-sync":"build/lucid-sync.js"},"dist":{"shasum":"abf016b9d20f0e108296756b23d467ea8db09391","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.16.2.tgz","fileCount":125,"integrity":"sha512-ZAIbPQ6+ck4rV1OkDDoz2b9wZQF0MUEH60o3TSkMSxILRIkaSfsi7yXpCWklDCWTdJ27qP7lJkPUtmk5bJC10g==","signatures":[{"sig":"MEUCIEd45Iex/JkHCb8D/u9H2BIVCTNOEgTRQYBgsHpQ5ZrPAiEA2n/ck2ddlKoChW/0r9Ze8ffiQHty8kqYwUc9vtWuRTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":429116},"type":"module","engines":{"node":">=18"},"gitHead":"3b4aaa5cebaf05a3bb62db39d461418dd2ea09ae","scripts":{"build":"tsc","prepublishOnly":"npm run build","compress-prompts":"node scripts/compress-prompts.mjs"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","sharp":"^0.34.5","express":"^5.2.1","chokidar":"^4.0.3","better-sqlite3":"^12.0.0","@huggingface/transformers":"^4.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^22.0.0","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.16.2_1776717915184_0.3344514333876527","host":"s3://npm-registry-packages-npm-production"}},"1.19.0":{"name":"@a13xu/lucid","version":"1.19.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.19.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js","lucid-sync":"build/lucid-sync.js"},"dist":{"shasum":"141023cf65d89082ab6db5eb80c4a6079cba9198","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.19.0.tgz","fileCount":145,"integrity":"sha512-Q01qB6KyudfiFdbISjpiiXeC6pA3H194Dgn4WVck+0aarNei1GBspbfU5PXT7AeFTSVG1U0448kLRAJtky9IWA==","signatures":[{"sig":"MEUCIFTvEO8LIC8AFoytw0yWxjiKM0+4YBe2gVBcKaivnpqaAiEAyBO8Jl3RPLOaj5ygbW7d16dBTRQ+88Rn4DWiZ/xNrw0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":512085},"type":"module","engines":{"node":">=18"},"gitHead":"3b4aaa5cebaf05a3bb62db39d461418dd2ea09ae","scripts":{"build":"tsc","prepublishOnly":"npm run build","compress-prompts":"node scripts/compress-prompts.mjs"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","sharp":"^0.34.5","express":"^5.2.1","chokidar":"^4.0.3","better-sqlite3":"^12.0.0","@huggingface/transformers":"^4.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^22.0.0","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.19.0_1777464649072_0.8495805505240186","host":"s3://npm-registry-packages-npm-production"}},"1.20.0":{"name":"@a13xu/lucid","version":"1.20.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.20.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js","lucid-sync":"build/lucid-sync.js"},"dist":{"shasum":"41a8a645a378d27e315361997902d28be4db9e13","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.20.0.tgz","fileCount":145,"integrity":"sha512-StNtPOx7S6CEMU4+ODkUK2K/TcuQ/sRZQIWa6aZ1nhJGY2L9YMlnzIVUQzUmCCQfNb4bdfhk2LCnQAB5jiYcXw==","signatures":[{"sig":"MEUCIQChcBzGm38M1dyi90mQTBgin5T0HlQYkp18+8FFvenUxgIgK+4tfPAmsbcv486vn1GCMh/HWft9gZOqajPDdYOLThY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":512085},"type":"module","engines":{"node":">=18"},"gitHead":"a2f380208ec029464cb0fb5902940821c156a20a","scripts":{"build":"tsc","prepublishOnly":"npm run build","compress-prompts":"node scripts/compress-prompts.mjs"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","sharp":"^0.34.5","express":"^5.2.1","chokidar":"^4.0.3","better-sqlite3":"^12.0.0","@huggingface/transformers":"^4.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^22.0.0","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.20.0_1778787354974_0.022839481123058558","host":"s3://npm-registry-packages-npm-production"}},"1.21.0":{"name":"@a13xu/lucid","version":"1.21.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.21.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js","lucid-sync":"build/lucid-sync.js"},"dist":{"shasum":"3dc38847a1e9b61776f3d744e69579c3bd46b387","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.21.0.tgz","fileCount":147,"integrity":"sha512-hVMkTBjZXR3sULIc37/FnA6L6ks2K7r9A0G3qLMfYUj3A0KG7FxCO0Abptn748K4j+bzsQC0+lFPgPllaJz7iw==","signatures":[{"sig":"MEQCIAfGH0bLROCOhjjqPPyiqES2dsJ/xgLYXTvKxpQfrRfpAiBJZ57JWameSQUvG7VrQXdgdgcWpo+avZdcGtxVn0bL6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":535711},"type":"module","engines":{"node":">=18"},"gitHead":"a2f380208ec029464cb0fb5902940821c156a20a","scripts":{"build":"tsc","prepublishOnly":"npm run build","compress-prompts":"node scripts/compress-prompts.mjs"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"20.18.0","dependencies":{"zod":"^3.23.8","sharp":"^0.34.5","express":"^5.2.1","chokidar":"^4.0.3","better-sqlite3":"^12.0.0","@huggingface/transformers":"^4.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^22.0.0","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.21.0_1778815987934_0.30308147989315315","host":"s3://npm-registry-packages-npm-production"}},"1.23.0":{"name":"@a13xu/lucid","version":"1.23.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.23.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js","lucid-sync":"build/lucid-sync.js"},"dist":{"shasum":"4403569f1b46b437e7688c3b9aa394fb80ad7ab4","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.23.0.tgz","fileCount":187,"integrity":"sha512-LeRFWwDOXouUUrctsbe4qKEwqiYbpcVA92B6N2yWAQ7lZLcnhpTOWfFULtk3JlPA2fiaLWZgeQLPxfWyVzJWKw==","signatures":[{"sig":"MEQCIDTHCyohQiOtxakpGlG867MIFueT0SdzJrwSSSLsVJ69AiANzyI3UInpupTyU4nrM4WVY6D9Hsv8cUlDP/fR3C05Ew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":606967},"type":"module","engines":{"node":">=20"},"gitHead":"fb5912b869a36068bd0faae2a26fa6c90b631f22","scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","compress-prompts":"node scripts/compress-prompts.mjs"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.2","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"22.13.1","dependencies":{"zod":"^3.23.8","express":"^5.2.1","chokidar":"^4.0.3","better-sqlite3":"^12.0.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.4.0","@types/node":"^22.0.0","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"web-tree-sitter":"^0.24.7","@huggingface/transformers":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.23.0_1786393161943_0.6235789214781637","host":"s3://npm-registry-packages-npm-production"}},"1.23.1":{"name":"@a13xu/lucid","version":"1.23.1","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.23.1","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js","lucid-sync":"build/lucid-sync.js"},"dist":{"shasum":"696ad5f079e7612e80c6b3240727a3b8440b245f","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.23.1.tgz","fileCount":187,"integrity":"sha512-xFrm08e6ndag5XJUWkxjZDErFRyE5W7Qia4njxLawjq3MeWX96MRTmEyUF5c5UVX8mOMU1BQ8MQumeKQPBZEZA==","signatures":[{"sig":"MEUCIQCxPa+TTPK6QPCPJHb4LZ6sL5Sy5RUDoNNzjwmknQcmDAIgM8YObCOTPCjza7ubsEzdP2/5ptiiRQhixqBofOgRDBk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":608260},"type":"module","engines":{"node":">=20"},"gitHead":"0a5ca8bfbd1cf1d8e9c7528974930c44533dd738","scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","compress-prompts":"node scripts/compress-prompts.mjs"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.2","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"22.13.1","dependencies":{"zod":"^3.23.8","express":"^5.2.1","chokidar":"^4.0.3","better-sqlite3":"^12.0.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.4.0","@types/node":"^22.0.0","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"web-tree-sitter":"^0.24.7","@huggingface/transformers":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.23.1_1786393949705_0.31640374422016393","host":"s3://npm-registry-packages-npm-production"}},"1.24.0":{"name":"@a13xu/lucid","version":"1.24.0","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","_id":"@a13xu/lucid@1.24.0","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"homepage":"https://github.com/a13xu/lucid#readme","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"bin":{"lucid":"build/index.js","lucid-sync":"build/lucid-sync.js"},"dist":{"shasum":"264f4a29b08da143845193c84e76b30036c369e2","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.24.0.tgz","fileCount":192,"integrity":"sha512-qxGBlBU7U2eY6CEKtwVows/8WeNSZEmwhSe+OPiDR+nLIZUHLDD3pSiXPiohg3J4W+huuRFZJOp4be4WCtL7GQ==","signatures":[{"sig":"MEQCIAbHF0SWIVGZqWWRzNSromT4AyqXKNXLN9a1GcsI52N5AiBAqVY7dHHxF+lMeeKuQIdc2VSYSGVJCPdtobiDT3V6lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":629411},"type":"module","engines":{"node":">=20"},"gitHead":"23ed6b51e1c29e47c243aab1aeb7ee4b7e3a14a4","scripts":{"test":"vitest run","build":"tsc","prepublishOnly":"npm run build","compress-prompts":"node scripts/compress-prompts.mjs"},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"repository":{"url":"git+https://github.com/a13xu/lucid.git","type":"git"},"_npmVersion":"10.9.2","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","directories":{},"_nodeVersion":"22.13.1","dependencies":{"zod":"^3.23.8","express":"^5.2.1","chokidar":"^4.0.3","better-sqlite3":"^12.0.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^5.4.0","@types/node":"^22.0.0","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"web-tree-sitter":"^0.24.7","@huggingface/transformers":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lucid_1.24.0_1786394857980_0.6399661244433577","host":"s3://npm-registry-packages-npm-production"}},"1.25.0":{"name":"@a13xu/lucid","version":"1.25.0","description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","type":"module","bin":{"lucid":"build/index.js","lucid-sync":"build/lucid-sync.js"},"scripts":{"build":"tsc","test":"vitest run","compress-prompts":"node scripts/compress-prompts.mjs","prepublishOnly":"npm run build"},"keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"author":{"name":"a13xu"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/a13xu/lucid.git"},"homepage":"https://github.com/a13xu/lucid#readme","publishConfig":{"access":"public"},"engines":{"node":">=20"},"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","better-sqlite3":"^12.0.0","chokidar":"^4.0.3","express":"^5.2.1","zod":"^3.23.8"},"optionalDependencies":{"@huggingface/transformers":"^4.0.0","web-tree-sitter":"^0.24.7"},"devDependencies":{"@types/better-sqlite3":"^7.6.11","@types/express":"^5.0.6","@types/node":"^22.0.0","typescript":"^5.4.0","vitest":"^4.1.10"},"_id":"@a13xu/lucid@1.25.0","gitHead":"6eb924a1d550b638771a81d176591b0bd11aec98","bugs":{"url":"https://github.com/a13xu/lucid/issues"},"_nodeVersion":"22.13.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-NkEAdV3+iCFC+xOGLFiuogftSG+juOcavWM/dDPzfzVlJWjPyIpx+w9Lk9VQRDzW4vQKj9JkTsDZ9EU/wICHcQ==","shasum":"3b6a457bf53ba06807273a34b9274c6e5be28005","tarball":"https://registry.npmjs.org/@a13xu/lucid/-/lucid-1.25.0.tgz","fileCount":192,"unpackedSize":631419,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAZCzrInBg8cJ5bLDjMDKyBDuLDXVu+cRSB6V9JZQFPmAiATfuBXtwYFJpHjvDGD/T4M6NwGWYM1lADBBZdcHcsvwA=="}]},"_npmUser":{"name":"a13xu","email":"iancualexu@gmail.com"},"directories":{},"maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lucid_1.25.0_1786396988119_0.6064837949294335"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-28T21:33:14.608Z","modified":"2026-08-10T21:23:08.448Z","1.0.0":"2026-02-28T21:33:14.887Z","1.1.0":"2026-02-28T21:42:00.136Z","1.4.0":"2026-02-28T22:10:47.413Z","1.9.0":"2026-03-01T00:09:10.822Z","1.9.1":"2026-03-01T08:04:13.328Z","1.9.2":"2026-03-01T08:14:31.730Z","1.9.4":"2026-03-01T09:23:11.466Z","1.9.5":"2026-03-02T12:04:13.882Z","1.10.0":"2026-03-03T16:21:04.669Z","1.11.0":"2026-03-10T12:43:53.447Z","1.12.0":"2026-03-10T13:43:28.979Z","1.13.0":"2026-03-10T13:57:25.864Z","1.16.0":"2026-03-31T11:24:51.417Z","1.16.1":"2026-03-31T11:44:06.112Z","1.16.2":"2026-04-20T20:45:15.347Z","1.19.0":"2026-04-29T12:10:49.226Z","1.20.0":"2026-05-14T19:35:55.173Z","1.21.0":"2026-05-15T03:33:08.191Z","1.23.0":"2026-08-10T20:19:22.091Z","1.23.1":"2026-08-10T20:32:29.929Z","1.24.0":"2026-08-10T20:47:38.182Z","1.25.0":"2026-08-10T21:23:08.285Z"},"bugs":{"url":"https://github.com/a13xu/lucid/issues"},"author":{"name":"a13xu"},"license":"MIT","homepage":"https://github.com/a13xu/lucid#readme","keywords":["mcp","claude","claude-code","memory","sqlite","knowledge-graph","code-indexing","logic-guardian","drift-detection","tfidf","qdrant","token-optimization","context-pruning","ai","anthropic"],"repository":{"type":"git","url":"git+https://github.com/a13xu/lucid.git"},"description":"Token-efficient memory, code indexing, and validation for Claude Code agents — SQLite + FTS5, TF-IDF + Qdrant retrieval, AST skeleton pruning, diff-aware context, Logic Guardian drift detection","maintainers":[{"name":"a13xu","email":"iancualexu@gmail.com"}],"readme":"# @a13xu/lucid\r\n\r\n[![npm version](https://img.shields.io/npm/v/@a13xu/lucid)](https://www.npmjs.com/package/@a13xu/lucid)\r\n[![npm downloads](https://img.shields.io/npm/dm/@a13xu/lucid)](https://www.npmjs.com/package/@a13xu/lucid)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n\r\n> **MCP server for Claude Code** — persistent memory, smart code indexing, model selection, and code quality validation. Works out of the box with zero configuration.\r\n\r\nToken-efficient memory, code indexing, and validation for Claude Code agents — backed by **SQLite + FTS5**.\r\n\r\nStores a persistent knowledge graph (entities, relations, observations), indexes source files as compressed binary with change detection, retrieves minimal relevant context via TF-IDF or Qdrant, and validates code for LLM drift patterns. Supports TypeScript, JavaScript, Python, **Vue, Nuxt**. Optional **LLMLingua-2 semantic compression** reduces context tokens by 30–70% while preserving meaning.\r\n\r\n## Install\r\n\r\n**Requirements:** Node.js 18+\r\n\r\n```bash\r\n# Option 1 — global install (recommended, faster startup)\r\nnpm install -g @a13xu/lucid\r\nclaude mcp add --transport stdio lucid -- lucid\r\n\r\n# Option 2 — no install needed (uses npx on each start)\r\nclaude mcp add --transport stdio lucid -- npx -y @a13xu/lucid\r\n```\r\n\r\n### Optional: status bar\r\n\r\n```bash\r\nlucid setup statusline\r\n```\r\n\r\nInstalls a Claude Code status line showing the model, remaining 5h/weekly quota,\r\nknowledge-graph size, and the progress of the active plan **for the project you\r\nare in**, plus a `/tasks` command that expands it into the full task list. It\r\nwrites `lucid-statusline.mjs`, `lucid-tasks.mjs`, and `commands/tasks.md` into\r\n`~/.claude/` and registers `statusLine` in `~/.claude/settings.json`, preserving\r\nevery other setting and backing the file up first. Safe to re-run.\r\n\r\nOr add to `.mcp.json` in your project root:\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"lucid\": {\r\n      \"type\": \"stdio\",\r\n      \"command\": \"npx\",\r\n      \"args\": [\"-y\", \"@a13xu/lucid\"],\r\n      \"env\": {\r\n        \"MEMORY_DB_PATH\": \"/your/project/.claude/memory.db\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\nDefault DB path: `~/.claude/memory.db`\r\n\r\n## Quick start\r\n\r\n```\r\n1. \"Index this project\" → init_project()               → scans CLAUDE.md, package.json, src/**\r\n2. Write code           → sync_file(path)               → compressed + hashed + diff stored\r\n3. \"What's relevant?\"  → smart_context(\"auth flow\")    → recall + code in one call, adaptive budget\r\n4. \"What model?\"       → suggest_model(\"refactor auth\") → haiku (lookup) or sonnet (reasoning)\r\n5. \"What changed?\"     → get_recent(hours=2)            → line diffs of recent edits\r\n6. \"Where is X used?\"  → grep_code(\"X\")                → matching lines only, ~30 tokens\r\n7. \"What do we know?\"  → recall(\"query\")               → knowledge graph search\r\n```\r\n\r\n## Tools (40)\r\n\r\n### Memory\r\n| Tool | Description |\r\n|---|---|\r\n| `remember` | Store a fact about an entity (project, person, tool, decision…) |\r\n| `relate` | Create a directed relationship between two entities |\r\n| `recall` | Full-text search across all memory (FTS5 + LIKE fallback) |\r\n| `recall_all` | Return the entire knowledge graph with statistics |\r\n| `forget` | Remove an entity and all its relations |\r\n| `memory_stats` | DB size, WAL status, entity/relation counts |\r\n\r\n### Code indexing\r\n| Tool | Description |\r\n|---|---|\r\n| `init_project` | Scan project directory recursively and bootstrap knowledge graph. Reads `CLAUDE.md`, `package.json`/`pyproject.toml`, `README.md`, `.mcp.json`, `logic-guardian.yaml`, all source files. Installs a Claude Code hook for auto-sync. |\r\n| `sync_file` | Index or re-index a single file after writing/editing. Stores compressed binary (zlib-9), skips instantly if SHA-256 hash unchanged. Stores line-level diff from previous version. |\r\n| `sync_project` | Re-index entire project incrementally. Reports compression ratio. |\r\n| `grep_code` | Regex search across all indexed files. Decompresses binary on-the-fly, returns only matching lines with context — ~20-50 tokens vs reading full files. |\r\n\r\n### Token optimization\r\n| Tool | Description |\r\n|---|---|\r\n| `smart_context` | **Recommended entry point.** Combines `recall()` (knowledge graph) + `get_context()` (code files) in one call. Adaptive token budget: `simple`=2000, `moderate`=6000, `complex`=12000. Logs an experience for `reward()`/`penalize()` feedback. |\r\n| `suggest_model` | Classify task complexity → recommend Claude model. Returns `{ model, model_id, reasoning, context_budget }`. Simple lookups → Haiku; reasoning/code → Sonnet. Call at the start of any workflow. |\r\n| `get_context` | **Classic code context.** Ranks indexed files by TF-IDF (or Qdrant), applies recency boost, returns skeletons for large files. Respects `maxContextTokens` budget. |\r\n| `get_recent` | Return files modified in the last N hours with line-level diffs. |\r\n| `compress_text` | Compress any text using LLMLingua-2 semantic compression. Returns compressed text + stats (ratio, tokens saved). Model downloads ~700MB on first use. |\r\n\r\n### Logic Guardian\r\n| Tool | Description |\r\n|---|---|\r\n| `validate_file` | Detect LLM drift patterns in a source file: logic inversions, null propagation, type confusion, copy-paste drift, silent exceptions. Supports Python, JS, TS. |\r\n| `check_drift` | Analyze a code snippet inline without saving to disk. |\r\n| `get_checklist` | Return the full 5-pass validation protocol (Logic Trace, Contract Verification, Stupid Mistakes, Integration Sanity, Explain It). |\r\n\r\n### Plans\r\n| Tool | Description |\r\n|---|---|\r\n| `plan_create` | Create a development plan with title, description, and tasks. Returns plan ID. |\r\n| `plan_list` | List all plans with status summary (total/done/in-progress tasks). |\r\n| `plan_get` | Get full plan details including all tasks and their status. |\r\n| `plan_update_task` | Update a task's status (`pending` → `in_progress` → `done` \\| `blocked`) and optionally add notes. Accepts `task_id` as number or string. |\r\n\r\n### Reward system\r\n| Tool | Description |\r\n|---|---|\r\n| `reward` | Signal that the last `smart_context()`/`get_context()` result was helpful (+1). Rewarded files rank higher in future similar queries. |\r\n| `penalize` | Signal that the last result was unhelpful (-1). Penalized files rank lower. Accepts optional `note` to log what was missing. |\r\n| `show_rewards` | Show top rewarded experiences and most rewarded files. Rewards decay exponentially (half-life ~14 days). |\r\n\r\n### Code Quality Guard\r\n| Tool | Description |\r\n|---|---|\r\n| `coding_rules` | Get the 25 Golden Rules checklist — naming, single responsibility, file/function size, error handling, frontend component rules, architecture separation. |\r\n| `check_code_quality` | Analyze a file or snippet against the 25 Golden Rules. Detects file/function bloat, vague naming, deep nesting, dead code, and for React/Vue files: prop explosion, inline styles, fetch-in-component, direct DOM access. Complements `validate_file`. |\r\n\r\n### Book Ingestion → Auto-Skill\r\n| Tool | Description |\r\n|---|---|\r\n| `ingest_book` | Convert a book (PDF, EPUB, DOCX, or Markdown) into chunked markdown under `./books/<slug>/` and index every chunk into Lucid. Chunkers: `heading` (default, splits on H1 with H2 fallback over 80KB), `page` (uses pymupdf4llm page markers), `none`. Requires user-installed converter: `pip install pymupdf4llm` for PDFs (fastest, native-text) or `marker-pdf` (OCR/scans); `pandoc` for EPUB/DOCX. |\r\n| `generate_book_skill` | Emit a thin `SKILL.md` router (~100 tokens) into `~/.claude/skills/book-<slug>/` (or `.claude/skills/` with `scope=project`). The skill auto-loads when its trigger topics come up and delegates retrieval to `smart_context` — so the corpus is pulled on demand, never inlined into every prompt. |\r\n| `list_books` | List ingested books under `./books/` with chunk counts and ingestion dates (reads each `_manifest.json`). |\r\n\r\n#### CLI (mirrors the MCP tools)\r\n\r\n```bash\r\nlucid book ingest ./clean-code.pdf --title \"Clean Code\"\r\nlucid book skill clean-code --topics \"naming,refactor,functions,code review\"\r\nlucid book list\r\n\r\n# Per-subcommand help\r\nlucid book ingest --help\r\nlucid book skill  --help\r\n```\r\n\r\nPipeline: source file → conversion (shelled-out tool) → chunked markdown + `_manifest.json` → indexed via the standard `sync_file` pipeline (`.md` is now a supported extension) → optional `SKILL.md` router that triggers `smart_context` retrieval on relevant queries. Adding more books does not bloat Claude Code's startup — each skill costs ~100 tokens at scan time and bodies load only when relevant.\r\n\r\n### Web Dev Skills\r\n| Tool | Description |\r\n|---|---|\r\n| `generate_component` | Generate a complete component scaffold from a natural language description. Supports React (TSX/JSX) and Vue/Nuxt (`<script setup>` Composition API). Styling: Tailwind, CSS Modules, or none. |\r\n| `scaffold_page` | Generate a full page with layout, SEO head, and placeholder sections. Supports Nuxt (`useHead`), Next.js (`Metadata` API), and plain Vue. |\r\n| `seo_meta` | Generate complete SEO metadata: HTML meta tags, Open Graph, Twitter Card, and JSON-LD structured data (Article, Product, WebSite, WebPage). |\r\n| `accessibility_audit` | Audit HTML/JSX/Vue snippets for WCAG A/AA/AAA violations. Checks missing alt text, unlabeled inputs, empty buttons/links, positive tabindex, non-interactive click handlers, and more. Returns severity + corrected code. |\r\n| `api_client` | Generate a typed TypeScript async fetch function for a REST endpoint. Includes error handling (throws on non-2xx), full type aliases, and a usage example. Auth: Bearer, cookie, API key, or none. |\r\n| `test_generator` | Generate a complete test file covering happy path, edge cases, error path, and mock setup. Frameworks: Vitest, Jest, Playwright. Component testing: Vue Test Utils or React Testing Library. |\r\n| `responsive_layout` | Generate a mobile-first responsive layout from a wireframe description. Output: Tailwind utility classes, CSS Grid with named areas, or Flexbox + media queries. Container types: full, centered, sidebar. |\r\n| `security_scan` | Scan JS/TS/HTML/Vue for web security vulnerabilities: XSS, eval/injection, SQL injection, hardcoded secrets, open redirects, prototype pollution, path traversal, insecure CORS. Context-aware (frontend/backend/api). |\r\n| `design_tokens` | Generate a complete design token set from a brand color and mood. Produces 11-step color scales (50–950), neutral scale, semantic aliases, typography, spacing, radius, and shadows. Output: CSS variables, Tailwind config, or JSON. |\r\n| `perf_hints` | Analyze a component or page for Core Web Vitals issues (LCP, CLS, INP) and perf anti-patterns: missing image dimensions, render-blocking scripts, fetch-in-render, heavy click handlers, missing useMemo/computed, whole-library imports. |\r\n\r\n## Token optimization in depth\r\n\r\n### How `smart_context` works (recommended)\r\n\r\n```\r\nquery: \"auth middleware\"\r\n         ↓\r\n  1. recall(query)  — knowledge graph search (entities, relations)\r\n         ↓\r\n  2. TF-IDF score all indexed files against query\r\n     (or Qdrant top-k if QDRANT_URL is set)\r\n         ↓\r\n  3. Boost recently-modified files (+0.3 score)\r\n     Boost rewarded files (+0.25 score, decayed)\r\n         ↓\r\n  4. For each file within token budget:\r\n       file < maxTokensPerFile  → return full source\r\n       file > maxTokensPerFile  → return skeleton only\r\n                                   (imports + signatures + TODOs)\r\n                                   + relevant fragments around query terms\r\n         ↓\r\n  5. Optional: LLMLingua-2 compression (if enabled in config)\r\n         ↓\r\n  output: merged knowledge + code — budget: 2k/6k/12k by task_type\r\n```\r\n\r\n### How `get_context` works (classic)\r\n\r\n```\r\nquery: \"auth middleware\"\r\n         ↓\r\n  1. TF-IDF score all indexed files against query\r\n     (or Qdrant top-k if QDRANT_URL is set)\r\n         ↓\r\n  2. Boost recently-modified files (+0.3 score)\r\n         ↓\r\n  3. Apply whitelist dirs filter (if configured)\r\n         ↓\r\n  4. For each file within token budget:\r\n       file < maxTokensPerFile  → return full source\r\n       file > maxTokensPerFile  → return skeleton only\r\n                                   (imports + signatures + TODOs)\r\n                                   + relevant fragments around query terms\r\n         ↓\r\n  output: ~500–2000 tokens  vs  5000–20000 for reading full files\r\n```\r\n\r\n### Skeleton pruning (AST-based)\r\n\r\nLarge files are replaced with their structural skeleton:\r\n\r\n```typescript\r\n// src/middleware/auth.ts [skeleton]\r\n// Validates JWT tokens and attaches user to request context\r\n\r\nimport { Request, Response, NextFunction } from \"express\"\r\nimport { verifyToken } from \"../services/jwt.js\"\r\n\r\n// — exports —\r\nexport function authMiddleware(req: Request, res: Response, next: NextFunction): void { … }\r\nexport function requireRole(role: string): RequestHandler { … }\r\nexport type AuthenticatedRequest = Request & { user: User }\r\n```\r\n\r\nvs reading the full 200-line file.\r\n\r\n### Qdrant vector search (optional)\r\n\r\nSet env vars to enable semantic search instead of TF-IDF:\r\n\r\n```bash\r\nQDRANT_URL=http://localhost:6333\r\nQDRANT_API_KEY=your-key          # optional\r\nOPENAI_API_KEY=sk-...            # for embeddings\r\nEMBEDDING_MODEL=text-embedding-3-small  # optional\r\n```\r\n\r\nOr in `.mcp.json`:\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"lucid\": {\r\n      \"command\": \"npx\", \"args\": [\"-y\", \"@a13xu/lucid\"],\r\n      \"env\": {\r\n        \"QDRANT_URL\": \"http://localhost:6333\",\r\n        \"OPENAI_API_KEY\": \"sk-...\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\nFalls back to TF-IDF automatically if Qdrant is unreachable.\r\n\r\n### Semantic compression (optional)\r\n\r\nLLMLingua-2 (`microsoft/llmlingua-2-bert-base-multilingual-cased-meetingbank`) identifies and drops semantically unimportant tokens before returning context to Claude — and before generating Qdrant embeddings.\r\n\r\nEnable in `lucid.config.json`:\r\n\r\n```json\r\n{\r\n  \"semanticCompression\": {\r\n    \"enabled\": true,\r\n    \"ratio\": 0.5,\r\n    \"minLength\": 300,\r\n    \"applyToEmbeddings\": true\r\n  }\r\n}\r\n```\r\n\r\n| Key | Default | Description |\r\n|---|---|---|\r\n| `enabled` | `false` | Opt-in — model downloads ~700MB on first use |\r\n| `ratio` | `0.5` | Fraction of tokens to keep (0.3 = keep 30%) |\r\n| `minLength` | `300` | Skip compression for texts shorter than this |\r\n| `applyToEmbeddings` | `true` | Also compress chunk text before Qdrant embedding |\r\n\r\nModel is cached in `~/.lucid/models/` after first download. Falls back to uncompressed text on any error — safe to enable unconditionally.\r\n\r\n### Configuration (`lucid.config.json`)\r\n\r\nCreate in your project root to customize behavior:\r\n\r\n```json\r\n{\r\n  \"whitelistDirs\": [\"src\", \"backend\", \"api\"],\r\n  \"blacklistDirs\": [\"migrations\", \"fixtures\"],\r\n  \"maxTokensPerFile\": 600,\r\n  \"maxContextTokens\": 8000,\r\n  \"recentWindowHours\": 48,\r\n  \"semanticCompression\": {\r\n    \"enabled\": false,\r\n    \"ratio\": 0.5\r\n  }\r\n}\r\n```\r\n\r\n| Key | Default | Description |\r\n|---|---|---|\r\n| `whitelistDirs` | — | Only index/return files from these dirs |\r\n| `blacklistDirs` | — | Extra dirs to skip (merged with built-in skips) |\r\n| `maxTokensPerFile` | `600` | Files above this get skeleton treatment |\r\n| `maxContextTokens` | `8000` | Total token budget for `get_context` |\r\n| `recentWindowHours` | `48` | \"Recently touched\" threshold |\r\n\r\n## Why no vectors by default?\r\n\r\nCode has explicit structure — no NLP needed for most queries:\r\n\r\n| Need | Approach | Tokens |\r\n|---|---|---|\r\n| \"Where is X defined?\" | `grep_code(\"export.*X\")` | ~30 |\r\n| \"What does auth.ts export?\" | `recall(\"auth.ts\")` | ~50 |\r\n| \"What changed recently?\" | `get_recent(hours=2)` | ~200 |\r\n| \"Context for this task\" | `get_context(\"auth flow\")` | ~500 |\r\n| \"Project conventions?\" | `recall(\"CLAUDE.md conventions\")` | ~80 |\r\n| Read full file | `Read tool` | ~500–2000 |\r\n\r\nTF-IDF is fast, deterministic, and requires zero external services. Qdrant is available when you need semantic similarity across large codebases.\r\n\r\n## Why SQLite + FTS5?\r\n\r\n| | JSON file | SQLite + FTS5 |\r\n|---|---|---|\r\n| Search | O(n) linear scan | O(log n) indexed |\r\n| Write | Rewrite entire file | Atomic incremental |\r\n| Concurrent reads | Lock entire file | WAL mode |\r\n| Code storage | Plain text | Compressed BLOB + hash |\r\n| Change detection | Manual diff | SHA-256 per file |\r\n| Diff history | None | Line-level diffs per file |\r\n\r\n## Entity types\r\n`person` · `project` · `decision` · `pattern` · `tool` · `config` · `bug` · `convention`\r\n\r\n## Relation types\r\n`uses` · `depends_on` · `created_by` · `part_of` · `replaced_by` · `conflicts_with` · `tested_by`\r\n\r\n## HTTP daemon & auto-sync\r\n\r\nLucid can run as a background HTTP daemon (port 7821) for auto-syncing files without Claude's cooperation.\r\n\r\n```bash\r\n# Start daemon (watches for sync requests, serves REST API)\r\nlucid watch\r\n\r\n# With HTTP server\r\nlucid watch --http\r\n\r\n# Check status\r\nlucid status\r\n\r\n# Stop\r\nlucid stop\r\n```\r\n\r\n### REST API (when `--http` is active)\r\n\r\n| Endpoint | Description |\r\n|---|---|\r\n| `POST /sync` `{ path }` | Sync a single file |\r\n| `POST /sync-project` `{ directory? }` | Sync entire project |\r\n| `GET /context?q=<query>` | Get context via HTTP |\r\n| `POST /validate` `{ path }` | Validate file for drift |\r\n| `GET /health` | Daemon health check |\r\n\r\n### Auto-sync hook (`lucid-sync`)\r\n\r\n`init_project` installs a Claude Code `PostToolUse` hook that calls `lucid-sync` after every file write/edit. The sync binary:\r\n\r\n1. Tries HTTP sync (500ms timeout, if daemon running)\r\n2. Falls back to direct SQLite sync (no daemon needed)\r\n\r\nThis keeps the knowledge graph current automatically — without relying on Claude remembering to call `sync_file`.\r\n\r\n## Skills enforcement\r\n\r\nLucid ships **enforcement skills** that install globally into `~/.claude/skills/` and activate in every project:\r\n\r\n| Skill | Purpose |\r\n|---|---|\r\n| `lucid-start` | Session start — `get_recent` + `smart_context` before any coding |\r\n| `lucid-context` | Pre-task context loading — `suggest_model` + `smart_context` |\r\n| `lucid-audit` | Pre-done gate — validate + check drift before marking complete |\r\n| `lucid-plan` | Planning workflow |\r\n| `lucid-sync` | Post-edit sync reminder |\r\n| `lucid-webdev` | Web dev workflow with context |\r\n\r\nAll skills use `<HARD-GATE>` blocks that prevent proceeding until required tools are called.\r\n\r\nInstall globally:\r\n```bash\r\ninit_project()   # installs skills to ~/.claude/skills/ automatically\r\n```\r\n\r\n## Debugging\r\n\r\n```bash\r\necho '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"capabilities\":{},\"clientInfo\":{\"name\":\"test\",\"version\":\"1.0\"},\"protocolVersion\":\"2024-11-05\"}}' \\\r\n  | npx @a13xu/lucid\r\n```\r\n\r\nIn Claude Code: run `/mcp` — you should see `lucid` with 40 tools.\r\n\r\n## Contributing\r\n\r\nBug reports and pull requests are welcome on [GitHub](https://github.com/a13xu/lucid).\r\n\r\n1. Fork the repo\r\n2. `npm install` → `npm run build`\r\n3. Test locally: `claude mcp add --transport stdio lucid-dev -- node /path/to/lucid/build/index.js`\r\n4. Open a PR\r\n\r\n## Tech stack\r\n\r\n- **Runtime:** Node.js 18+, TypeScript, ES modules\r\n- **MCP SDK:** `@modelcontextprotocol/sdk`\r\n- **Database:** `better-sqlite3` (synchronous, WAL mode)\r\n- **Compression:** Node.js built-in `zlib` (deflate level 9) + LLMLingua-2 semantic compression (optional)\r\n- **Hashing:** SHA-256 via `crypto` (change detection)\r\n- **Ranking:** TF-IDF (built-in) or Qdrant (optional, via REST)\r\n- **Semantic compression:** `@huggingface/transformers` (ONNX Runtime, q8 quantization)\r\n- **HTTP daemon:** Express 5 on port 7821 (optional)\r\n- **File watcher:** `chokidar`\r\n- **Validation:** `zod`\r\n- **Transport:** stdio\r\n","readmeFilename":"README.md"}