{"_id":"@atul-labs/lex","_rev":"12-3a974c3ac4c2823f1af7d077a271f25f","name":"@atul-labs/lex","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.15":{"name":"@atul-labs/lex","version":"0.1.15","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"author":{"url":"https://github.com/pulak-ranjan","name":"pulak-ranjan"},"license":"Apache-2.0","_id":"@atul-labs/lex@0.1.15","maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"homepage":"https://github.com/ATUL-Labs/lex","bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"bin":{"lex":"bin/lex.js"},"dist":{"shasum":"23edb14893af07a71f2b28806644a760271083df","tarball":"https://registry.npmjs.org/@atul-labs/lex/-/lex-0.1.15.tgz","fileCount":107,"integrity":"sha512-3yzJCx5FTeAGOl+5aD4lbFjyhXF3WcbFW27w1G4xr/S5fA13Xo1YoTlB8Jxbyj9/YkvpfYj8Aig9KBf0MuRrSA==","signatures":[{"sig":"MEUCIQCER0ooLPHADEwquWvuN0pMnZX+rqJkc/QenuUmEBSXFgIgA11gVkHt2xXsu1d2YoOvNme+JP/EirYedANBN+zKqZ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":405553},"gitHead":"c58cc7601a983b65951e788c426c57182f23205a","_npmUser":{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"},"repository":{"url":"git+https://github.com/ATUL-Labs/lex.git","type":"git"},"_npmVersion":"11.6.0","description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery.","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lex_0.1.15_1784024023763_0.3444714587106543","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@atul-labs/lex","version":"0.1.16","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"author":{"url":"https://github.com/pulak-ranjan","name":"pulak-ranjan"},"license":"Apache-2.0","_id":"@atul-labs/lex@0.1.16","maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"homepage":"https://github.com/ATUL-Labs/lex","bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"bin":{"lex":"bin/lex.js"},"dist":{"shasum":"c9443fee1a756369051556fbc44a7e292c7dac38","tarball":"https://registry.npmjs.org/@atul-labs/lex/-/lex-0.1.16.tgz","fileCount":107,"integrity":"sha512-l9vXcTEdSQMamfKmwgsWqPJ+Ox1VxP3wSmlI6ihUZEsmcjPXNnZTxgcSF5uMss6EBPYW2zJqmjLRSo/dqC5ExA==","signatures":[{"sig":"MEQCIBVjAtsmRHSrTl9PXRLvd+/qlgENEau5WYBmoiDdPWPhAiAeHhL2WaJsc1ZRXy3Oa7TBb2TPr6p0fTALkgzVfL7PKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407441},"gitHead":"6c3acce6f72833c12585fd8474f4d85ade79e7df","_npmUser":{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"},"repository":{"url":"git+https://github.com/ATUL-Labs/lex.git","type":"git"},"_npmVersion":"11.6.0","description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery.","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lex_0.1.16_1784026222437_0.5529645058122885","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@atul-labs/lex","version":"0.1.17","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"author":{"url":"https://github.com/pulak-ranjan","name":"pulak-ranjan"},"license":"Apache-2.0","_id":"@atul-labs/lex@0.1.17","maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"homepage":"https://github.com/ATUL-Labs/lex","bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"bin":{"lex":"bin/lex.js"},"dist":{"shasum":"cc38075c6512c2b5fad52c810cba513f95e78f9d","tarball":"https://registry.npmjs.org/@atul-labs/lex/-/lex-0.1.17.tgz","fileCount":107,"integrity":"sha512-5YW1yuJl8OuiotCi4H05nMyTRv5mDHWg7MqkeaKdj7yqIKNol9afn4ZCNftdQRlBSa+jT+NTpNz8gEza9pHsZg==","signatures":[{"sig":"MEUCIBiVfpzWgM6g986JAUA7w84TVkp9SOexylb75jRV5ofNAiEAggJQGvIXtKmNgFOEGtlXs7DPRI4xigJlDhIPbe1GCO4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408662},"gitHead":"327741135dc17fa23272b4c39d922019155c8df0","_npmUser":{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"},"repository":{"url":"git+https://github.com/ATUL-Labs/lex.git","type":"git"},"_npmVersion":"11.6.0","description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery.","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lex_0.1.17_1784028581580_0.9850706022662998","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@atul-labs/lex","version":"0.1.18","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"author":{"url":"https://github.com/pulak-ranjan","name":"pulak-ranjan"},"license":"Apache-2.0","_id":"@atul-labs/lex@0.1.18","maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"homepage":"https://github.com/ATUL-Labs/lex","bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"bin":{"lex":"bin/lex.js"},"dist":{"shasum":"494f86966851b90770f6fb267654a98ed9009bb6","tarball":"https://registry.npmjs.org/@atul-labs/lex/-/lex-0.1.18.tgz","fileCount":107,"integrity":"sha512-iAfq4Qa21b5/ID8zEXbdEuQa+WNojt00GtcJ+gBB9IIX0Heqa0/mWvu5Fb7rvkuZ05UoRUGHDtAA4WXHDU7I4g==","signatures":[{"sig":"MEQCIBsU2wkuU7PXCqtCIy3F4Qz0bYnDP0e1oAYf3GD8MbZLAiAMqA9R6ua5aoXvu3ofF3Rd+doFsSGoZH1izQu2hyJMsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408994},"gitHead":"315b05c65b687f8f72a0808f9c656f204440221d","_npmUser":{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"},"repository":{"url":"git+https://github.com/ATUL-Labs/lex.git","type":"git"},"_npmVersion":"11.6.0","description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery.","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lex_0.1.18_1784028770508_0.35866751570153776","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@atul-labs/lex","version":"0.1.19","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"author":{"url":"https://github.com/pulak-ranjan","name":"pulak-ranjan"},"license":"Apache-2.0","_id":"@atul-labs/lex@0.1.19","maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"homepage":"https://github.com/ATUL-Labs/lex","bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"bin":{"lex":"bin/lex.js"},"dist":{"shasum":"cb690b988d108607c1eccd5c6e55190dd6a79345","tarball":"https://registry.npmjs.org/@atul-labs/lex/-/lex-0.1.19.tgz","fileCount":107,"integrity":"sha512-93azn9Q/vZuADsUnNp1va4//Ojv1FzsqbS49+OKqJHfVEha7wSpBzd1tm2xAy4JHhQXbtSZuKq8QZvQZfPO1UA==","signatures":[{"sig":"MEUCIHO3yRJ/u26NQPE47RR5YUZ0s744GMU/fHemm5sFXbiVAiEAhSPfOQ65+tTudNf4IXXCnVR1Y1YJgkwnLa1NsT1zICY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":409738},"gitHead":"aa875f5430f300339f3709d769c5e87279fd21ec","_npmUser":{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"},"repository":{"url":"git+https://github.com/ATUL-Labs/lex.git","type":"git"},"_npmVersion":"11.6.0","description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery.","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lex_0.1.19_1784028913898_0.6649731587332746","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@atul-labs/lex","version":"0.1.20","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"author":{"url":"https://github.com/pulak-ranjan","name":"pulak-ranjan"},"license":"Apache-2.0","_id":"@atul-labs/lex@0.1.20","maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"homepage":"https://github.com/ATUL-Labs/lex","bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"bin":{"lex":"bin/lex.js"},"dist":{"shasum":"0d00b6e8c1c1b0d20d330f92dca42be36cc6ec76","tarball":"https://registry.npmjs.org/@atul-labs/lex/-/lex-0.1.20.tgz","fileCount":107,"integrity":"sha512-p7m+n4ArisrYu7bNDzhFi0QcxQq3s8mxqlSKspFTw2Nla5kabDKkveTYqU6Ish5GTaaH9h/4Bt0qQJ2LFBu9gw==","signatures":[{"sig":"MEQCICXQ9lpiehX2slRWLp90BnyhqjJt7CW8fE610KQTfN9PAiBNB6UjKm41b+CGdZf6DRo3p5/1iwbX1iPPISl4vqoOsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":410022},"gitHead":"9c771d51edce90396430ef4e2b94da930168bbd3","_npmUser":{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"},"repository":{"url":"git+https://github.com/ATUL-Labs/lex.git","type":"git"},"_npmVersion":"11.6.0","description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery.","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lex_0.1.20_1784029970570_0.8818988952006519","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@atul-labs/lex","version":"0.1.21","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"author":{"url":"https://github.com/pulak-ranjan","name":"pulak-ranjan"},"license":"Apache-2.0","_id":"@atul-labs/lex@0.1.21","maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"homepage":"https://github.com/ATUL-Labs/lex","bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"bin":{"lex":"bin/lex.js"},"dist":{"shasum":"19a809ab9351687abc42cf4ab3ee60a043717f63","tarball":"https://registry.npmjs.org/@atul-labs/lex/-/lex-0.1.21.tgz","fileCount":107,"integrity":"sha512-wVYoSeBS94pbEZcTFnpcOrCK5Aq7Bf9iIvX0Fl0kwTdtckvkSNhtOQDoYyjq3DXLYoUQkZVPXIGpYDzeTW6bvg==","signatures":[{"sig":"MEUCIQCwO26PLpRwK1jrYW4ot1xyXuHiWDTOnl6frqMemYoa3AIgC2NRdyGrUQM0LMnUzrubBr6uzPNgxjeTeLTTSepMmqo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":412344},"gitHead":"ded70eace4353ed23498de54f8a16037ecf9d1fd","_npmUser":{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"},"repository":{"url":"git+https://github.com/ATUL-Labs/lex.git","type":"git"},"_npmVersion":"11.6.0","description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery.","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lex_0.1.21_1784093203376_0.47313122662761375","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@atul-labs/lex","version":"0.1.22","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"author":{"url":"https://github.com/pulak-ranjan","name":"pulak-ranjan"},"license":"Apache-2.0","_id":"@atul-labs/lex@0.1.22","maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"homepage":"https://github.com/ATUL-Labs/lex","bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"bin":{"lex":"bin/lex.js"},"dist":{"shasum":"9b56e1e26b6b3deeae0909bf0f24d0a25b6684c5","tarball":"https://registry.npmjs.org/@atul-labs/lex/-/lex-0.1.22.tgz","fileCount":117,"integrity":"sha512-FcZq7Pz1tDAidp8VpkgV59a37QsVgThQKwFdxFh/nbiDMnyiMWH6fah2Isaq6eFLqYqUjyqqUzSoUxLZOkP5Mw==","signatures":[{"sig":"MEQCIEDLcjWjtOCQ8SVShwcqtVlSLWjdj0JrvO74PtDZ7NSvAiBC941GUN0M/mUrO480KFyEC01yYvscCPr52hME4ekKAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":445206},"gitHead":"e3c4a3bac9624e8bfba9e6daace0bc4c8eaf7100","_npmUser":{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"},"repository":{"url":"git+https://github.com/ATUL-Labs/lex.git","type":"git"},"_npmVersion":"11.6.0","description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery.","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lex_0.1.22_1784098104740_0.47642568332099455","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@atul-labs/lex","version":"0.1.23","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"author":{"url":"https://github.com/pulak-ranjan","name":"pulak-ranjan"},"license":"Apache-2.0","_id":"@atul-labs/lex@0.1.23","maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"homepage":"https://github.com/ATUL-Labs/lex","bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"bin":{"lex":"bin/lex.js"},"dist":{"shasum":"b310393457d44e2debad5663524a5aabf0bee640","tarball":"https://registry.npmjs.org/@atul-labs/lex/-/lex-0.1.23.tgz","fileCount":117,"integrity":"sha512-l4H5eNl9CJAcfXNf+KZHL79ce7stpUN6bgcih0iYQ17QQgIpONUs91E443U7cqw5Bc5/cZx9VQEi1pv33k+3bg==","signatures":[{"sig":"MEQCIHDYFYm/elgAT4p5gHd9dksFMOeLUccHbvK8EW9pwfmgAiABTeAPAD0VrcE4UKfV9uCd/H30fgg37WPLpE1nQXYxLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":445416},"gitHead":"bd2a46c134d5ef352b0a9ba6fce3d4a5abbbab5a","_npmUser":{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"},"repository":{"url":"git+https://github.com/ATUL-Labs/lex.git","type":"git"},"_npmVersion":"11.6.0","description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery.","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lex_0.1.23_1784098430978_0.9644829331537472","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"@atul-labs/lex","version":"0.1.24","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"author":{"url":"https://github.com/pulak-ranjan","name":"pulak-ranjan"},"license":"Apache-2.0","_id":"@atul-labs/lex@0.1.24","maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"homepage":"https://github.com/ATUL-Labs/lex","bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"bin":{"lex":"bin/lex.js"},"dist":{"shasum":"e97f1e87d4e44e120d0e32db3e5d88502b89fabc","tarball":"https://registry.npmjs.org/@atul-labs/lex/-/lex-0.1.24.tgz","fileCount":149,"integrity":"sha512-PYDlxe0VngR3B1h46a6LpxN2s5JpeXj9I40fwjnozEhMJyhf5ci5T80lk22kw5sanELUXOXqjE6RS6M7lufQwA==","signatures":[{"sig":"MEYCIQDNSgIStEYsnr8qKb/BObg7DEZ0uT1dCEwPsdY5AF4OFAIhANPiV/d0X6+6fP2mcoZnHIrzxZjPtK/dTHGuNBf6DVix","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":686691},"gitHead":"3c21678bb01457f757eb8d82753750f041c7048f","_npmUser":{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"},"repository":{"url":"git+https://github.com/ATUL-Labs/lex.git","type":"git"},"_npmVersion":"11.6.0","description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery.","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lex_0.1.24_1784669781372_0.5036521354299819","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@atul-labs/lex","version":"0.1.25","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"author":{"url":"https://github.com/pulak-ranjan","name":"pulak-ranjan"},"license":"Apache-2.0","_id":"@atul-labs/lex@0.1.25","maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"homepage":"https://github.com/ATUL-Labs/lex","bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"bin":{"lex":"bin/lex.js"},"dist":{"shasum":"f2bf4d4c2f2a9f95d102455624ca028471fc787c","tarball":"https://registry.npmjs.org/@atul-labs/lex/-/lex-0.1.25.tgz","fileCount":152,"integrity":"sha512-j6rPKb3MOgU98FDeI2vd3ohvo90ig1nRbQ03zVv8yPG6gn9ioqypTkrp0rzX4k1KonhS+KfGW0iGtT4qwTPAGg==","signatures":[{"sig":"MEUCIQDWV/RkWiVTDMiB2RO+q+BiffW3pWvbwqmIyhpEySyFLgIgYq9DJI9Lk03ytJjfrU/r63OIp1kvcxLY8OFUxBs0N9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":740670},"gitHead":"e14a3913820d48962b5056fe249b9cf66a998b65","_npmUser":{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"},"repository":{"url":"git+https://github.com/ATUL-Labs/lex.git","type":"git"},"_npmVersion":"11.6.0","description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery. LTS release.","directories":{},"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/lex_0.1.25_1784718164892_0.8294947654115767","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@atul-labs/lex","version":"0.2.0","description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery. LTS release.","author":{"name":"pulak-ranjan","url":"https://github.com/pulak-ranjan"},"license":"Apache-2.0","bin":{"lex":"bin/lex.js","lex-mcp":"bin/lex-mcp.js"},"repository":{"type":"git","url":"git+https://github.com/ATUL-Labs/lex.git"},"homepage":"https://github.com/ATUL-Labs/lex","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"_id":"@atul-labs/lex@0.2.0","gitHead":"c38132677bb6d3db0537468e4a4b2a3ea87a90de","bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"_nodeVersion":"22.19.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-dPc3LmICAGuY0IVEr7rsnf05ayDdczVhqcc9hx+f1AywREHP3dPPUvTUP8/Aut1V2nzlhBx8M60tMil0BnWVSg==","shasum":"a8c4bfe01c0d14ee44c85a7eb8a47b053648cb54","tarball":"https://registry.npmjs.org/@atul-labs/lex/-/lex-0.2.0.tgz","fileCount":162,"unpackedSize":947884,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC5Pc+d9rMf6upVo+uXbl/P9dDLfTFVa1nABFZxsy73+QIgMewu7W1oLFsTBz3I/n93JVKrLltHP5ZxDkiVITT1SyM="}]},"_npmUser":{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"},"directories":{},"maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lex_0.2.0_1785242698040_0.6554403217175155"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-14T10:13:43.655Z","modified":"2026-07-28T12:44:58.351Z","0.1.15":"2026-07-14T10:13:43.935Z","0.1.16":"2026-07-14T10:50:22.629Z","0.1.17":"2026-07-14T11:29:41.730Z","0.1.18":"2026-07-14T11:32:50.642Z","0.1.19":"2026-07-14T11:35:14.035Z","0.1.20":"2026-07-14T11:52:50.759Z","0.1.21":"2026-07-15T05:26:43.561Z","0.1.22":"2026-07-15T06:48:24.887Z","0.1.23":"2026-07-15T06:53:51.164Z","0.1.24":"2026-07-21T21:36:21.629Z","0.1.25":"2026-07-22T11:02:45.078Z","0.2.0":"2026-07-28T12:44:58.200Z"},"bugs":{"url":"https://github.com/ATUL-Labs/lex/issues"},"author":{"name":"pulak-ranjan","url":"https://github.com/pulak-ranjan"},"license":"Apache-2.0","homepage":"https://github.com/ATUL-Labs/lex","keywords":["ai","coding","companion","skills","reasoning","tdd","debugging","memory","context","design","efficiency","claude","codex","cursor","windsurf","gemini","antigravity","browser-audit","headless","cdp","developer-tools"],"repository":{"type":"git","url":"git+https://github.com/ATUL-Labs/lex.git"},"description":"Universal coding companion - reasoning, efficient code, design intelligence, project memory, crash recovery. LTS release.","maintainers":[{"name":"atul-labs","email":"pulakranjanmahata0910@gmail.com"}],"readme":"<div align=\"center\">\r\n\r\n<img src=\"docs/images/lex-hero.svg\" alt=\"lex - The shared brain for AI coding agents\" width=\"100%\">\r\n\r\n[![Tests](https://img.shields.io/badge/tests-82%20pass-brightgreen)](#)\r\n[![Version](https://img.shields.io/badge/version-0.2.0-blue)](#)\r\n[![Stability](https://img.shields.io/badge/stability-stable-blue)](#)\r\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE)\r\n[![Node](https://img.shields.io/badge/node-%3E%3D22-green)](#)\r\n[![Dependencies](https://img.shields.io/badge/dependencies-zero-success)](#)\r\n[![Platforms](https://img.shields.io/badge/platforms-9%2B-informational)](#platform-support)\r\n[![MCP Tools](https://img.shields.io/badge/MCP%20tools-25-blueviolet)](#mcp-tools)\r\n\r\n[Quick Start](#quick-start) &bull; [CLI](#cli) &bull; [Gateway](#gateway-zero-approval-commands) &bull; [Viewer](#viewer) &bull; [Skills](#skills) &bull; [Docs](#docs)\r\n\r\n</div>\r\n\r\n<br>\r\n\r\n## The problem\r\n\r\nYou're building a feature in Claude Code. You hit a usage limit mid-task. You open\r\nCursor, or Windsurf, or Trae - and now you're explaining everything again. What you\r\nwere doing. What you already tried. What broke last time. The new agent has no memory\r\nof the last one.\r\n\r\nMultiply that across three projects and it's a constant tax: re-explaining,\r\nre-discovering, occasionally re-breaking something that was already fixed.\r\n\r\n**lex exists because the chat window was never the right place to keep a project's\r\nmemory.** The chat is disposable. `.lex/` is not.\r\n\r\n### The test lex is built to pass\r\n\r\n> Start a task in Claude Code. Close it mid-way. Open Cursor. Type \"continue\".  \r\n> The agent picks up exactly where the last one left off - same knowledge, same\r\n> discipline, same taste, on a completely different tool, with zero re-explaining.\r\n\r\n---\r\n\r\n## What's new in 0.2.0\r\n\r\n| Feature | Description |\r\n|---------|-------------|\r\n| **`lex benchmark`** | Compare Lex search vs grep timing on your actual codebase. Shows result counts, winner, and recommendations for when to use each tool |\r\n| **MCP benchmark tool** | `mcp0_benchmark` — agents can self-assess tool performance before choosing between Lex and built-in grep |\r\n| **Semantic search with fast-path** | Literal matches use fast mode (~5ms), semantic expansion activates only when grep would return nothing. Finds concepts grep can't: \"auth\" → \"authentication\", \"login\", \"passport\", \"jwt\" |\r\n| **Cross-session learnings in search** | Search results now surface relevant `mistakes.md` and `patterns.md` entries — agents see past lessons without calling `memory` separately |\r\n| **25 MCP tools** | 22 tools rewritten with explicit differentiation from built-in IDE tools. Each description says what's unique, when to prefer it, and when to use built-in instead |\r\n| **Guard attack mode** | `lex guard --attack <url>` discovers endpoints and tests each with security payloads. 6 built-in skills (sqli, xss, ssrf, idor, jwt, cors) with findings written to `.lex/findings/` |\r\n| **Dangerous command detection** | `lex guard --check-cmd \"rm -rf /\"` blocks 20 catastrophic command patterns (fork bombs, DROP TABLE, force-push main, mkfs, curl|bash) |\r\n| **MCP IDE installer** | `lex mcp install` — one command installs Lex MCP server config into 13 IDEs (VS Code, Cursor, Windsurf, Trae, Kilo, Grok, OpenCode, and more) |\r\n| **Proxy MCP chaining** | `lex proxy add` registers child MCP servers (e.g. laravel-boost) that chain through Lex — all tools available from one connection |\r\n\r\nFull changelog: [CHANGELOG.md](CHANGELOG.md)\r\n\r\n---\r\n\r\n## Demo\r\n\r\n<table>\r\n  <tr>\r\n    <td align=\"center\"><b>Dark mode</b></td>\r\n    <td align=\"center\"><b>Light mode</b></td>\r\n  </tr>\r\n  <tr>\r\n    <td><img src=\"docs/images/viewer-dark.png\" alt=\"lex viewer in dark mode\" width=\"480\"></td>\r\n    <td><img src=\"docs/images/viewer-light.png\" alt=\"lex viewer in light mode\" width=\"480\"></td>\r\n  </tr>\r\n</table>\r\n\r\n<img src=\"docs/images/viewer-panels.png\" alt=\"lex viewer with collapsible panels and schema canvas\" width=\"960\">\r\n\r\n```bash\r\n# Run the viewer\r\nnode bin/lex.js serve\r\n\r\n# Catch secrets before they ship\r\nnode bin/lex.js guard\r\n\r\n# Search without reading files\r\nnode bin/lex.js search \"userTask overdue\"\r\n\r\n# Test all endpoints with smart categorization\r\nnode bin/lex.js devloop\r\n```\r\n\r\n---\r\n\r\n## Why it's cheap on tokens\r\n\r\nThe usual way an agent \"understands\" a codebase is expensive: grep for a term, read\r\nthe whole file that matched, read three more files to find where something else is\r\ndefined, read every migration to piece together the database. Each read costs tokens,\r\nand most of a 500-line file is irrelevant to the one function you needed.\r\n\r\n**lex replaces that pattern with a query:**\r\n\r\n```bash\r\nlex search loadAgentConfig\r\n# → lib/indexer.js:42  function loadAgentConfig(root) {\r\n# → tests/indexer.test.js:88  test('loadAgentConfig returns defaults')\r\n# 2 files, ~248 tokens. grep would return ~4,880.\r\n```\r\n\r\nOn a 45K-file repo, a common query like `ocr` returns 224 tokens via lex vs **6.7\r\nmillion tokens** via grep. That's not a savings - it's the difference between working\r\nand crashing.\r\n\r\nFull benchmarks: [docs/benchmarks.md](docs/benchmarks.md)\r\n\r\n---\r\n\r\n<br>\r\n\r\n## What it does\r\n\r\n<table>\r\n<tr>\r\n<td width=\"50%\" valign=\"top\">\r\n\r\n### Memory & Continuity\r\n\r\n**Continuity engine** - `wip.md` checkpoints, ~80% context flush, hooks. Sessions survive compaction, crashes, and handoffs.\r\n\r\n**Project memory** - `.lex/` folder with knowledge pages, session summaries, audit trail. Any agent that can read a file gets the full picture.\r\n\r\n**Crash recovery** - the next agent resumes exactly where the last one left off.\r\n\r\n```bash\r\n$ lex status\r\n# → .lex/wip.md found - resuming task\r\n# → Step 3 of 5: implement auth middleware\r\n# → Last edit: src/auth.js (2m ago)\r\n```\r\n\r\n</td>\r\n<td width=\"50%\" valign=\"top\">\r\n\r\n### Code Intelligence\r\n\r\n**lex-index** - self-maintaining SQLite index. Zero tokens to maintain.\r\n\r\n```bash\r\n$ lex search validateToken\r\n# → lib/auth.js:42  function validateToken()\r\n# → tests/auth.test.js:88  test('rejects expired')\r\n# 2 files, ~248 tokens\r\n```\r\n\r\n**lex guard** - scans for exposed secrets + DB anti-patterns before every commit.\r\n\r\n**Browser audit** - headless Chrome/Edge crawls all pages, captures console + network errors.\r\n\r\n**API tester** - `lex test <url>` runs security scan: missing headers, SQL errors, XSS, info disclosure.\r\n\r\n**Dev loop** - `lex devloop` tests all endpoints with smart categories: OK, auth-required, not-found, server-error.\r\n\r\n</td>\r\n</tr>\r\n<tr>\r\n<td width=\"50%\" valign=\"top\">\r\n\r\n### Agent Tools\r\n\r\n**Reasoning skills** - 16 skills: brainstorming, planning, TDD, debugging, verification, code review, and more. Each with a `HARD-GATE` - written answers required before proceeding.\r\n\r\n**Stack overlays** - PHP? Agent uses Xdebug. Rust? Agent uses `dbg!` and audits `unsafe`. 5 overlay packs auto-detect at `lex init`.\r\n\r\n**Image converter** - `lex convert hero.svg hero.png` - SVG to PNG/WebP/ICO via headless Chrome.\r\n\r\n</td>\r\n<td width=\"50%\" valign=\"top\">\r\n\r\n### Infrastructure\r\n\r\n**Gateway** - 30+ commands via `write_to_file` - zero user approval, zero shell quoting.\r\n\r\n```bash\r\n# Agent writes this:\r\nwrite_to_file('.lex/in/r.json', 'search auth')\r\n# Result auto-injected as context. No approval needed.\r\n```\r\n\r\n**Live viewer** - `lex serve` opens a mission-control dashboard: status, task list, knowledge, schema, search, agent activity, API tester.\r\n\r\n**Zero dependencies** - pure markdown + one small Node script. No build step, no server, nothing to update.\r\n\r\n</td>\r\n</tr>\r\n</table>\r\n\r\nOne plugin replaces the separate reasoning, style, and memory tools you'd otherwise\r\nstitch together - and it works identically on **9+ platforms**.\r\n\r\n---\r\n\r\n<br>\r\n\r\n## Quick Start\r\n\r\n### 1. Install\r\n\r\n**One-line (npm global - recommended):**\r\n```bash\r\nnpm install -g @atul-labs/lex\r\n```\r\nThen use `lex` from anywhere:\r\n```bash\r\nlex init          # initialize .lex/ in your project\r\nlex serve         # live viewer at http://localhost:4747\r\nlex audit         # headless browser audit of your dev server\r\nlex guard         # scan for exposed secrets before commit\r\n```\r\n\r\n**Update to the latest version:**\r\n```bash\r\nnpm update -g @atul-labs/lex\r\n```\r\n\r\n**Or per-platform plugin:**\r\n\r\n**Claude Code:**\r\n```bash\r\nclaude plugin install github:ATUL-Labs/lex\r\n```\r\n\r\n**Codex:**\r\n```bash\r\ncodex plugin install github:ATUL-Labs/lex\r\n```\r\n\r\n**Gemini CLI:**\r\n```bash\r\ngemini extensions install github:ATUL-Labs/lex\r\n```\r\n\r\n**Cursor / Windsurf:** Auto-detected from plugin manifests. No manual setup.\r\n\r\n**Any agent:** If it can read files, lex works. Point it at `skills/using-lex/SKILL.md`.\r\n\r\n<details>\r\n<summary>More install options (per-project, clone, Trae, manual)</summary>\r\n\r\n#### Per-project (clone and link)\r\n```bash\r\ngit clone https://github.com/ATUL-Labs/lex.git\r\ncd lex && npm link   # makes `lex` available globally\r\n```\r\n\r\n#### Per-project (drop into codebase)\r\n```bash\r\ncp -r lex-plugin/skills/ .          # Skills folder - agents auto-discover\r\ncp lex-plugin/CLAUDE.md .           # Claude Code / Cursor / Windsurf\r\ncp lex-plugin/AGENTS.md .           # Codex / Copilot / Windsurf\r\ncp lex-plugin/GEMINI.md .           # Gemini CLI\r\n```\r\n\r\n#### Trae (no plugin system)\r\n```bash\r\nmkdir -p .trae/rules\r\ncp <lex-repo>/templates/platform/trae-rules.md .trae/rules/project_rules.md\r\n```\r\n</details>\r\n\r\n### 2. Initialize\r\n\r\nTell your agent:\r\n```\r\nInitialize lex for this project\r\n```\r\n\r\nOr run directly:\r\n```bash\r\nnode <lex-repo>/bin/lex.js init\r\n```\r\n\r\nThis creates `.lex/` with `status.md`, `INDEX.md`, knowledge pages, and detects your\r\nstack (PHP, Rust, Python, TypeScript, Go) to load the right overlays.\r\n\r\n### 3. Start working\r\n\r\nThe plugin activates automatically every session. The agent reads `.lex/status.md`,\r\nchecks for `wip.md` (crash recovery), and loads only the knowledge pages relevant to\r\nthe current task.\r\n\r\n---\r\n\r\n<br>\r\n\r\n## CLI\r\n\r\nRequires Node 22+.\r\n\r\n```bash\r\nnode <lex-repo>/bin/lex.js init [dir]                # scaffold .lex/ from templates\r\nnode <lex-repo>/bin/lex.js guard                      # scan for exposed secrets + DB anti-patterns\r\nnode <lex-repo>/bin/lex.js check                      # pre-flight: wip.md, index, guard\r\nnode <lex-repo>/bin/lex.js tokens                     # session token usage + context budget\r\nnode <lex-repo>/bin/lex.js search userTask overdue   # full-text, fuzzy + line numbers\r\nnode <lex-repo>/bin/lex.js grep \"TODO|FIXME\"         # regex search (patterns FTS can't do)\r\nnode <lex-repo>/bin/lex.js symbols src/App.tsx       # symbol list without reading the file\r\nnode <lex-repo>/bin/lex.js links dashboard/tasks     # route + every frontend consumer\r\nnode <lex-repo>/bin/lex.js recent 20                 # recently modified files from audit log\r\nnode <lex-repo>/bin/lex.js errors                    # console errors captured from browser\r\nnode <lex-repo>/bin/lex.js audit [urls...]           # headless browser audit (auto-detects dev server)\r\nnode <lex-repo>/bin/lex.js test <url> [method]       # send request + security scan (headers, SQL, XSS)\r\nnode <lex-repo>/bin/lex.js devloop [--diff]          # test all endpoints, categorize results\r\nnode <lex-repo>/bin/lex.js convert <in> <out>        # SVG to PNG/WebP/ICO, PNG to ICO\r\nnode <lex-repo>/bin/lex.js benchmark [term]           # compare lex search vs grep timing + recommendations\r\nnode <lex-repo>/bin/lex.js mcp install [--all]        # install MCP server config to IDEs\r\nnode <lex-repo>/bin/lex.js patch <file> <mode> ...   # surgical edit by anchor (saves tokens)\r\nnode <lex-repo>/bin/lex.js ls [dir]                  # list files from index (instant)\r\nnode <lex-repo>/bin/lex.js read <file> [start-end]   # read file with line numbers\r\nnode <lex-repo>/bin/lex.js refresh                   # manual reindex (rarely needed)\r\nnode <lex-repo>/bin/lex.js watch [port]              # server + file watcher, instant search\r\nnode <lex-repo>/bin/lex.js serve [port]              # live viewer, defaults to 4747\r\n```\r\n\r\n**`guard`** scans all source files for hardcoded API keys, passwords, tokens,\r\nconnection strings (CRITICAL - exits with code 1 if found), and database\r\nanti-patterns like 1-to-1 tables, EAV, and settings tables (IMPORTANT).\r\n**Run it before every commit.**\r\n\r\n**`watch`** starts the viewer server with a file watcher. Files are re-indexed\r\nautomatically on save (debounced 300ms). When `watch` is running, `lex search`\r\nroutes through the server via HTTP - cutting latency from ~200ms to ~15ms.\r\n\r\nLarge legacy folders: list path prefixes in `.lex/ignore` (one per line) to exclude\r\nthem from indexing.\r\n\r\n### `patch` - surgical edits\r\n\r\n```bash\r\n# Insert after an anchor\r\nlex patch src/app.js after \"const x = 1\" --insert \"const y = 2;\"\r\n\r\n# Replace an anchor\r\nlex patch src/app.js replace \"oldFunction()\" --insert \"newFunction()\"\r\n\r\n# Compact pipe format (41% shorter than JSON)\r\necho 'src/app.js|after|const x = 1|const y = 2;' | lex patch\r\n\r\n# JSON mode (for agents)\r\nlex patch '{\"file\":\"src/app.js\",\"anchor\":\"const x = 1\",\"insertion\":\"const y = 2;\",\"mode\":\"after\"}'\r\n```\r\n\r\n**Smart features:** auto-anchor (shortest unique substring), fuzzy match (typo\r\ntolerance with similarity %), diff output on every patch, preview mode, multi-match\r\ncontext.\r\n\r\n**Safety:** `rm` moves files to `.lex/trash/` with a timestamp prefix. `mv` backs up\r\nthe destination before overwriting. Both report the trash path for recovery.\r\n\r\n### `audit` - headless browser runtime check\r\n\r\n```bash\r\n# Auto-detect dev server, crawl all pages (default: depth 2, max 30 pages)\r\nlex audit\r\n\r\n# Explicit URLs\r\nlex audit http://localhost:3000 http://localhost:5173\r\n\r\n# Single page, no crawling\r\nlex audit --no-crawl http://localhost:3000\r\n\r\n# Deep crawl (depth 4, up to 100 pages)\r\nlex audit --depth=4 --max-pages=100\r\n\r\n# JSON output for agents\r\nlex audit --json\r\n\r\n# Wait longer for slow pages\r\nlex audit --wait=5000\r\n```\r\n\r\nLaunches your installed Chrome/Edge/Brave in headless mode, visits each URL,\r\nand captures:\r\n- **Console errors** - `console.error`, uncaught exceptions, unhandled rejections\r\n- **Network errors** - HTTP 4xx/5xx responses, failed resource loads\r\n- **Console warnings** - `console.warn`\r\n\r\n**Crawling**: By default, after each page loads, lex extracts all `<a href>` links\r\non the same origin and visits them too (BFS, up to `--depth` and `--max-pages`).\r\nThis catches errors on every page - dashboard, settings, login, etc.\r\n\r\n**Login support**: Create `.lex/audit.json` (gitignored - may contain credentials):\r\n\r\n```json\r\n{\r\n  \"login\": {\r\n    \"url\": \"/login\",\r\n    \"fields\": {\r\n      \"#email\": \"test@example.com\",\r\n      \"#password\": \"testpass123\"\r\n    },\r\n    \"submit\": \"button[type=submit]\"\r\n  },\r\n  \"crawl\": true,\r\n  \"maxDepth\": 3,\r\n  \"maxPages\": 50,\r\n  \"waitMs\": 3000\r\n}\r\n```\r\n\r\nLex logs in first, gets the session cookie, then crawls all authenticated pages.\r\nA single browser tab is reused for the entire session so cookies persist.\r\n\r\nAuto-detects browser path on Windows, macOS, Linux, and WSL. Zero dependencies -\r\nuses Chrome DevTools Protocol over WebSocket (built into Node 22).\r\n\r\nVia gateway (no approval needed):\r\n```\r\nwrite_to_file('.lex/in/audit.json', '', true)  # auto-detect URLs, crawl all pages\r\n```\r\n\r\n### `test` - API endpoint security scanner\r\n\r\n```bash\r\n# Test a single endpoint\r\nlex test http://localhost:3000/api/users\r\nlex test http://localhost:3000/api/users POST\r\n\r\n# XSS scan\r\nlex test http://localhost:3000/search?q=test --xss\r\n```\r\n\r\nSends an HTTP request and runs a security scan on the response:\r\n- **Missing security headers** - CSP, X-Frame-Options, HSTS, X-Content-Type-Options, X-XSS-Protection, Referrer-Policy, Permissions-Policy\r\n- **SQL error signatures** - SQLSTATE, PDOException, MySQL errors, SQLite errors, syntax errors\r\n- **Information disclosure** - stack traces, framework version leaks, debug mode, X-Powered-By\r\n- **XSS reflection** - injected parameters reflected without encoding\r\n\r\nVia gateway:\r\n```\r\nwrite_to_file('.lex/in/r.json', 'test http://localhost:3000/api/users GET')\r\n```\r\n\r\n### `devloop` - test all endpoints at once\r\n\r\n```bash\r\n# Test all indexed endpoints\r\nlex devloop\r\n\r\n# Compare to previous run (shows what changed)\r\nlex devloop --diff\r\n\r\n# Test with authentication\r\nlex devloop --cookie=\"session=abc123\"\r\nlex devloop --token=\"Bearer eyJhbG...\"\r\n\r\n# Filter to endpoints from a specific file\r\nlex devloop src/api/auth.js\r\n```\r\n\r\nTests every route and API consumer found in the index. Each endpoint gets a category:\r\n\r\n| Category | Meaning | Counts as |\r\n|----------|---------|-----------|\r\n| `pass` | 200-299 | OK |\r\n| `auth-required` | 302→/login, 401, 403, 419 | OK (expected) |\r\n| `redirect` | 302 to non-auth URL | OK |\r\n| `not-found` | 404 | Fail |\r\n| `method-not-allowed` | 405 | OK |\r\n| `server-error` | 500+ | Fail |\r\n| `connection-error` | ECONNREFUSED | Fail |\r\n\r\n**Smart summary** - instead of \"72 failed\", you get:\r\n```\r\n100 endpoints tested: 5 OK, 55 require auth, 38 not found, 2 method not allowed, 2 findings, 0 actionable errors\r\n```\r\n\r\n**Diff mode** - compares to the last run's `.lex/devloop.json`:\r\n```\r\n3 changed, 0 new, 0 removed, -3 errors, +0 findings\r\n  get /research: 500 server-error -> 200 pass\r\n  post /journals: 419 csrf-required -> 200 pass\r\n```\r\n\r\n**Expected findings filter** - HSTS is suppressed on HTTP dev servers (only flagged on HTTPS).\r\n\r\n**Auto port detection** - reads `.lex/pages/run.md`, `.lex/agent.json`, `.env`, and `docker-compose.yml` to find the app's actual port. Probes both IPv4 and IPv6 localhost.\r\n\r\nVia gateway:\r\n```\r\nwrite_to_file('.lex/in/r.json', 'devloop')\r\nwrite_to_file('.lex/in/r.json', 'devloop --diff')\r\n```\r\n\r\n### `convert` - SVG to PNG/WebP/ICO\r\n\r\n```bash\r\n# SVG to PNG (2x retina)\r\nlex convert hero.svg hero.png --width=1200 --height=630 --scale=2\r\n\r\n# SVG to WebP (17x smaller than PNG)\r\nlex convert hero.svg hero.webp --width=1200 --height=630\r\n\r\n# SVG to single-size ICO (favicon)\r\nlex convert logo.svg favicon.ico --size=32\r\n\r\n# SVG to multi-size ICO (16, 32, 48, 64, 128, 256)\r\nlex convert logo.svg favicon.ico --multi\r\n\r\n# PNG to ICO\r\nlex convert logo.png favicon.ico --multi\r\n```\r\n\r\nRenders SVG using headless Chrome/Edge via CDP (same zero-dependency approach as `lex audit`). ICO encoder is pure JS - wraps PNG data in ICO container format. Multi-size ICO includes all standard favicon sizes in one file.\r\n\r\nVia gateway:\r\n```\r\nwrite_to_file('.lex/in/r.json', 'convert hero.svg hero.png')\r\nwrite_to_file('.lex/in/req.json', '{\"cmd\":\"convert\",\"args\":{\"input\":\"logo.svg\",\"output\":\"favicon.ico\",\"multi\":true}}')\r\n```\r\n\r\n### Gateway: zero-approval commands\r\n\r\nThe gateway lets agents use lex **without `run_command`** - no user approval,\r\nno shell quoting, no PowerShell escaping. The agent writes a request to\r\n`.lex/in/` via `write_to_file` (a native tool), the PostToolUse hook processes\r\nit, and the result is auto-injected as `additionalContext`.\r\n\r\n**Three input formats** (pick the lightest):\r\n\r\n```\r\n# 1. Empty file = no-arg command (filename IS the command, 21% less overhead)\r\nwrite_to_file('.lex/in/errors.json', '', true)\r\n\r\n# 2. Plain text = cmd + args (17% less overhead than JSON)\r\nwrite_to_file('.lex/in/r.json', 'search ValidationError')\r\nwrite_to_file('.lex/in/r.json', 'grep res\\\\.status|src/app.js')\r\n\r\n# 3. JSON = full control (backward compatible)\r\nwrite_to_file('.lex/in/req.json', '{\"cmd\":\"search\",\"args\":[\"InputError\"]}')\r\n```\r\n\r\n**30+ commands available:** `search`, `memory`, `recall`, `episode`, `note`, `docs`,\r\n`proactive`, `symbols`, `grep`, `read`, `patch`, `insert`, `rename`, `delete`, `batch`,\r\n`chain`, `task`, `synth`, `check`, `diff`, `errors`, `audit`, `integrity`, `test`,\r\n`devloop`, `convert`, `undo`, `snapshot`, `refs`, `recent`, `links`, `guard`, `decay`, `assoc`.\r\n\r\n| Feature | Gateway (`write_to_file`) | CLI (`run_command`) |\r\n|---------|--------------------------|---------------------|\r\n| User approval | **Never** | Every call |\r\n| Shell quoting | None | Required (PowerShell) |\r\n| Output injection | Auto (`additionalContext`) | Manual (read stdout) |\r\n| Batch support | Yes (1 call, N commands) | No (N calls) |\r\n| Token overhead | 42-50 tokens | 24-28 tokens |\r\n\r\nGateway costs ~20 more raw tokens per call, but saves **all approval friction**\r\nand enables **batching** (2 commands in 1 call saves 24%).\r\n\r\n---\r\n\r\n<br>\r\n\r\n## Viewer\r\n\r\n```bash\r\nnode <lex-repo>/bin/lex.js serve        # http://127.0.0.1:4747\r\nnode <lex-repo>/bin/lex.js serve 3000   # specific port\r\n```\r\n\r\nA live mission-control dashboard for your project. Here's what you can do:\r\n\r\n**Monitor**\r\n- **App server status** - auto-detects your app's port from `run.md`, `.env`, `docker-compose.yml`. Live green/red indicator, polls every 10s\r\n- **Agent activity timeline** - see every file edit, search, and command your AI agent has run\r\n- **Current task list** - live view of `wip.md` steps and their status\r\n\r\n**Explore code**\r\n- **Full-text search** - search the entire codebase without opening files. Results show file, line number, and context\r\n- **API link graph** - visual graph of every API route and its frontend consumers. Filter by URL, color-coded by HTTP method\r\n- **Schema ERD** - tables, columns, foreign keys from real migrations. Fullscreen pannable/zoomable canvas\r\n- **Symbol browser** - list functions, classes, and exports in any file without reading it\r\n\r\n**Test & secure**\r\n- **API tester** - send requests to any endpoint, get security scan with findings categorized by severity (High/Medium/Low). URL auto-populates from detected app server\r\n- **Dev loop** - one click tests all indexed endpoints. Smart categories: OK, auth-required, not-found, server-error. Actionable summary instead of raw pass/fail\r\n- **Console errors** - captures `console.error`, uncaught exceptions, and network failures from your dev pages\r\n\r\n**Knowledge**\r\n- **Knowledge pages** - browse `.lex/pages/` with rendered markdown (stack.md, mistakes.md, patterns.md, design.md, rules.md)\r\n- **Session summaries** - read past agent sessions to see what was done and why\r\n\r\nDark/light theme toggle. Collapsible panels - show only what you need. Read-only and localhost-bound - never modifies your project.\r\n\r\nFull details: [docs/viewer.md](docs/viewer.md)\r\n\r\n---\r\n\r\n<br>\r\n\r\n## Skills\r\n\r\n16 skills, each a standalone `SKILL.md` with a `HARD-GATE` - written answers required\r\nbefore proceeding. No gate, no code. Stack overlays (PHP, Rust, Python, TypeScript,\r\nGo) auto-detect at `lex init` and add language-specific tooling guidance.\r\n\r\nFull skill catalog: [docs/skills.md](docs/skills.md)\r\n\r\n---\r\n\r\n<br>\r\n\r\n## How It Works\r\n\r\n<img src=\"docs/images/lex-architecture.svg\" alt=\"lex architecture: .lex/ folder structure and agent flow\" width=\"100%\">\r\n\r\n`.lex/` folder in each project root stores: `status.md` (current state), `wip.md`\r\n(work-in-progress, exists only during active work), `INDEX.md` (knowledge table of\r\ncontents), `audit.log` (agent activity trail), knowledge pages, and session\r\nsummaries. Any agent that can read markdown can use it.\r\n\r\n**Crash recovery:** `wip.md` checkpoints let the next agent resume exactly where the\r\nlast one left off - same knowledge, same discipline, on a completely different tool.\r\n\r\n**Enforcement:** PostToolUse hook warns if `wip.md` missing, auto-logs edits. Git\r\npre-commit hook runs `lex guard` and blocks on CRITICAL violations.\r\n\r\nFull architecture: [docs/how-it-works.md](docs/how-it-works.md)\r\n\r\n---\r\n\r\n<br>\r\n\r\n## Platform Support\r\n\r\n| Platform | How it activates | Install |\r\n|----------|-----------------|---------|\r\n| **Any CLI** | `lex` global command | `npm install -g @atul-labs/lex` |\r\n| **Claude Code** | Shell hook at session start | `claude plugin install github:ATUL-Labs/lex` |\r\n| **Codex** | Shell hook at session start | `codex plugin install github:ATUL-Labs/lex` |\r\n| **Cursor** | Auto-detected from manifest | Drop in project root |\r\n| **Windsurf** | `AGENTS.md` at session start | Auto-detected from `.windsurf/plugin.json` |\r\n| **Copilot CLI** | Shares Claude Code mechanism | Same as Claude Code |\r\n| **Gemini CLI** | `GEMINI.md` as context file | `gemini extensions install github:ATUL-Labs/lex` |\r\n| **Kimi Code** | Manifest at session start | `/plugins install github:ATUL-Labs/lex` |\r\n| **Antigravity** | `ANTIGRAVITY.md` context file | `agy plugin install github:ATUL-Labs/lex` |\r\n| **Any agent** | Reads `skills/using-lex/SKILL.md` | Drop `skills/` in project root |\r\n\r\n---\r\n\r\n<br>\r\n\r\n## Optional: code graph upgrade\r\n\r\nlex-index answers \"where is X used\" with text search. For true call-graphs,\r\ndead-code detection, and trace-paths on large codebases, add the MIT-licensed\r\n[codebase-memory-mcp](https://github.com/DeusData/codebase-memory-mcp) (single\r\nstatic binary, zero dependencies, fully local):\r\n\r\n```bash\r\n# macOS / Linux\r\ncurl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash\r\n```\r\n\r\n```powershell\r\n# Windows\r\nInvoke-WebRequest -Uri https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.ps1 -OutFile install.ps1; .\\install.ps1\r\n```\r\n\r\nlex works fully without it - skills prefer the graph when connected, fall back to\r\n`lex search`, then grep.\r\n\r\n---\r\n\r\n<br>\r\n\r\n## MCP Tools\r\n\r\nLex exposes 25 MCP tools for AI agents. Each tool description explicitly says when to use it vs built-in IDE tools.\r\n\r\n### When to use Lex vs built-in tools\r\n\r\n| Scenario | Use Lex | Use built-in grep/read |\r\n|----------|---------|----------------------|\r\n| Searching for a concept (auth, validation, middleware) | `mcp0_search` — semantic expansion finds related terms | grep only finds literal strings |\r\n| Searching for an exact string you know | — | grep is faster (~1ms vs ~50ms with MCP overhead) |\r\n| Listing functions/classes in a file | `mcp0_symbols` — returns structured kind, name, line | — |\r\n| Finding all references to a symbol | `mcp0_refs` — searches import graph + definitions | grep misses aliases and re-exports |\r\n| Tracing an API route to frontend consumers | `mcp0_links` — no grep equivalent | — |\r\n| Scanning for exposed secrets | `mcp0_guard` — 20+ secret patterns, exit code 1 | — |\r\n| Checking console errors | `mcp0_errors` — captures from running browser | — |\r\n| Reading past mistakes/patterns | `mcp0_memory` / `mcp0_recall` — cross-session | — |\r\n| Comparing tool performance | `mcp0_benchmark` — no built-in equivalent | — |\r\n| Reading a specific file | — | Use built-in `read_file` — Lex's `read` is a fallback |\r\n| Regex pattern search | — | Use built-in `grep_search` — Lex's `grep` is a fallback |\r\n\r\n### Quick benchmark\r\n\r\n```bash\r\nlex benchmark authentication\r\n```\r\n\r\nOutput shows timing, result counts, and a recommendation. Run it once per project to calibrate your agent's tool choices.\r\n\r\n### Installing Lex MCP in your IDE\r\n\r\n```bash\r\nlex mcp install              # auto-detect installed IDEs\r\nlex mcp install --all        # install to all 13 supported IDEs\r\nlex mcp install --ide cursor # specific IDE only\r\nlex mcp install --list       # show detected IDEs\r\n```\r\n\r\nSupports: VS Code, Cursor, Windsurf, Trae, Kilo Code, Grok Code, OpenCode, Continue, Roo Code, Cline, Zed, Claude Desktop, and Copilot.\r\n\r\n### Proxy MCP chaining\r\n\r\nChain other MCP servers through Lex so agents see all tools from one connection:\r\n\r\n```bash\r\nlex proxy add laravel-boost --command php --args artisan boost:mcp\r\nlex proxy list\r\nlex proxy remove laravel-boost\r\n```\r\n\r\n---\r\n\r\n<br>\r\n\r\n## Best Practices: Getting the Most from Lex\r\n\r\n### For agents\r\n\r\n1. **Start every session with `lex check`** — verifies index freshness, guard status, and config. Takes 50ms.\r\n\r\n2. **Use `lex search` for concepts, grep for literals** — Run `lex benchmark <term>` once to see which is faster for your codebase. As a rule of thumb:\r\n   - If grep returns nothing → use `lex search` (semantic expansion will find more)\r\n   - If you know the exact string → use grep (faster, no MCP overhead)\r\n   - If you're exploring an unfamiliar codebase → use `lex search` (clusters, proactive context, learnings)\r\n\r\n3. **Check `lex memory` before implementing** — past mistakes and patterns are curated knowledge. A 10-token search can save a 1000-token debugging session.\r\n\r\n4. **Run `lex guard` before every commit** — catches exposed secrets (CRITICAL) and DB anti-patterns (IMPORTANT). Git pre-commit hook enforces this automatically.\r\n\r\n5. **Use `lex recall` for cross-session context** — searches both persistent memory (mistakes, patterns, design) and episodic memory (past sessions) in one call.\r\n\r\n6. **Prefer gateway over CLI** — `write_to_file('.lex/in/r.json', 'search auth')` needs zero approvals vs `run_command` which interrupts the user every time.\r\n\r\n### For project setup\r\n\r\n1. **Run `lex init` once per project** — scaffolds `.lex/` with status, knowledge pages, skills, and stack detection.\r\n\r\n2. **Add large folders to `.lex/ignore`** — `vendor/`, `node_modules/`, `dist/` etc. One path per line. Keeps the index lean.\r\n\r\n3. **Run `lex config --detect` after setup changes** — updates the single source of truth for language, framework, database, commands, and paths.\r\n\r\n4. **Use `lex serve` during development** — the viewer dashboard shows live status, search, schema, API tester, and agent activity. Read-only, localhost-bound.\r\n\r\n5. **Let `lex watch` keep the index fresh** — file watcher re-indexes on save (debounced 300ms). Search routes through the server, cutting latency from ~200ms to ~15ms.\r\n\r\n### For large codebases (10K+ files)\r\n\r\n1. **Lex search uses fast-path mode** when literal matches are sufficient (~5ms), and falls back to semantic expansion only when needed (~100ms on 37K files).\r\n\r\n2. **`lex symbols` and `lex refs` are always fast** (~1ms) — they query the structured index, not the FTS table.\r\n\r\n3. **`lex benchmark` calibrates expectations** — run it once per project to see actual timings and recommendations.\r\n\r\n4. **Session history and proactive context are skipped in fast mode** — they add value but cost time. Semantic mode (when grep would fail) includes them automatically.\r\n\r\n---\r\n\r\n<br>\r\n\r\n## Docs\r\n\r\n- [benchmarks.md](docs/benchmarks.md) - speed, token savings, gateway overhead, benchmark command, test results\r\n- [best-practices.md](docs/best-practices.md) - usage guide: when to use Lex vs built-in tools, large codebase tips, agent workflow\r\n- [skills.md](docs/skills.md) - full skill catalog, stack overlays\r\n- [how-it-works.md](docs/how-it-works.md) - `.lex/` folder, crash recovery, enforcement, file structure\r\n- [viewer.md](docs/viewer.md) - panel details, API tester, dev loop, app server status, console error capture\r\n- [upgrading.md](docs/upgrading.md) - safe upgrade path, no data loss\r\n- [CHANGELOG.md](CHANGELOG.md) - version history\r\n\r\n---\r\n\r\n<br>\r\n\r\n## Acknowledgments\r\n\r\n- Cross-platform plugin delivery pattern inspired by [superpowers](https://github.com/obra/superpowers) by Jesse Vincent (MIT)\r\n- Efficient code ladder inspired by [ponytail](https://github.com/DietrichGebert/ponytail)\r\n- README design principles from [beautify-github-readme](https://github.com/oil-oil/beautify-github-readme)\r\n\r\nAll skill content is original.\r\n\r\n## Author\r\n\r\n**pulak-ranjan** - [LinkedIn](https://www.linkedin.com/in/pulak-ranjan/) | [GitHub](https://github.com/pulak-ranjan)\r\n\r\nBuilt by [ATUL AI](https://github.com/ATUL-Labs). Free for all developers.\r\n\r\n## License\r\n\r\nApache 2.0 - see [LICENSE](LICENSE) for details.\r\n\r\n---\r\n\r\n<div align=\"center\">\r\n\r\n### If lex saved you from re-explaining your project to yet another AI agent...\r\n\r\n**[Star this repo](https://github.com/ATUL-Labs/lex)** - it helps other developers discover it.\r\n\r\n[Report a bug](https://github.com/ATUL-Labs/lex/issues) &bull; [Request a feature](https://github.com/ATUL-Labs/lex/issues) &bull; [CHANGELOG](CHANGELOG.md)\r\n\r\n</div>\r\n","readmeFilename":"README.md"}