{"_id":"@dex-ai/lsp","_rev":"9-7b75db98dc511a40c696eb7e680d875a","name":"@dex-ai/lsp","dist-tags":{"latest":"0.1.9"},"versions":{"0.1.0":{"name":"@dex-ai/lsp","version":"0.1.0","_id":"@dex-ai/lsp@0.1.0","maintainers":[{"name":"klxdev","email":"klxdev.code@gmail.com"}],"dist":{"shasum":"0edf4e22d477134b6138a56d0266f9cf82c102ce","tarball":"https://registry.npmjs.org/@dex-ai/lsp/-/lsp-0.1.0.tgz","fileCount":96,"integrity":"sha512-r37jhnEVv5EpbfynVMWp0BLsKSnHgJsSJRewwj8fYUovwgIM1/YIRHFQP8bMUuiw14kBX9Y8oaTx8Aw8moV3fA==","signatures":[{"sig":"MEQCIC+HeSwazTB5g8A4ZYkWjkOCxll4dbD/RN3rei7icU5SAiBj49G09Z2dpBMGncURnGtDomIQ22rxXNIMnD11KJgW5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276710},"type":"module","types":"./dist/index.d.ts","engines":{"npm":">=10","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"d6735b3e0a0d4d34e077920800564599c20345d5","scripts":{"test":"vitest run","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","release":"changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest","build:local":"npm run clean && tsc -p tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"klxdev","email":"klxdev.code@gmail.com"},"_npmVersion":"11.11.0","description":"Real-time code feedback for Dex — LSP, linters, formatters, structural analysis & edit guardrails","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.24.4","vscode-jsonrpc":"^8.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"npm@11.13.0","devDependencies":{"vitest":"^3.0.0","typescript":"^5.6.3","@dex-ai/sdk":"^0.3.0","@types/node":"^22.0.0","@changesets/cli":"^2.29.0"},"_npmOperationalInternal":{"tmp":"tmp/lsp_0.1.0_1781499559108_0.6429204655146439","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dex-ai/lsp","version":"0.1.1","_id":"@dex-ai/lsp@0.1.1","maintainers":[{"name":"klxdev","email":"klxdev.code@gmail.com"}],"dist":{"shasum":"200a888010406ecb8ef39d0b2400db0b4e51e981","tarball":"https://registry.npmjs.org/@dex-ai/lsp/-/lsp-0.1.1.tgz","fileCount":96,"integrity":"sha512-9HkyZbmDkYOR9GP5ezNGYta1r7F3EG3mClwb722ixthGOI1o0tG0jSWkA8+yBaZZKyNT5lA2GOyStywqYlEFWQ==","signatures":[{"sig":"MEUCIHgE5LbplAMMXCk0dvopXO73aAxRUCRyWX/rCyWsdENIAiEAiMsgzW82R1hOeo6bg4/QbYtDCigOJMMyTB8RuroTwTg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276710},"type":"module","types":"./dist/index.d.ts","engines":{"npm":">=10","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"d6735b3e0a0d4d34e077920800564599c20345d5","scripts":{"test":"vitest run","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","release":"changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest","build:local":"npm run clean && tsc -p tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"klxdev","email":"klxdev.code@gmail.com"},"_npmVersion":"11.11.0","description":"Real-time code feedback for Dex — LSP, linters, formatters, structural analysis & edit guardrails","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.24.4","vscode-jsonrpc":"^8.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"npm@11.13.0","devDependencies":{"vitest":"^3.0.0","typescript":"^5.6.3","@dex-ai/sdk":"^0.3.0","@types/node":"^22.0.0","@changesets/cli":"^2.29.0"},"_npmOperationalInternal":{"tmp":"tmp/lsp_0.1.1_1781499762973_0.259827472351418","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dex-ai/lsp","version":"0.1.2","_id":"@dex-ai/lsp@0.1.2","maintainers":[{"name":"klxdev","email":"klxdev.code@gmail.com"}],"dist":{"shasum":"2f61e391dda11446101ec102918ad3a2c82c37a4","tarball":"https://registry.npmjs.org/@dex-ai/lsp/-/lsp-0.1.2.tgz","fileCount":96,"integrity":"sha512-zKRWpitWnOuMKvU0tbHcfvOZiOev/vwLT9lIZOSah2EuGGZpEN6PkFa5URc6UzxpnAk64S8T1KmBLYZBXgClbQ==","signatures":[{"sig":"MEYCIQDl5oXv/8Q0Pfn/9+oUeIvCLe7+pC7MVeqfEgYsqQdP/wIhAL0f9Pyl19C6w+hfKK+2o1gx9XWIbZIAGZDZ0QaruodD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276710},"type":"module","types":"./dist/index.d.ts","engines":{"npm":">=10","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"d6735b3e0a0d4d34e077920800564599c20345d5","scripts":{"test":"vitest run","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","release":"changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest","build:local":"npm run clean && tsc -p tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"klxdev","email":"klxdev.code@gmail.com"},"_npmVersion":"11.11.0","description":"Real-time code feedback for Dex — LSP, linters, formatters, structural analysis & edit guardrails","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.24.4","vscode-jsonrpc":"^8.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"npm@11.13.0","devDependencies":{"vitest":"^3.0.0","typescript":"^5.6.3","@dex-ai/sdk":"^0.3.0","@types/node":"^22.0.0","@changesets/cli":"^2.29.0"},"_npmOperationalInternal":{"tmp":"tmp/lsp_0.1.2_1781499845611_0.669255394456675","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@dex-ai/lsp","version":"0.1.4","_id":"@dex-ai/lsp@0.1.4","maintainers":[{"name":"klxdev","email":"klxdev.code@gmail.com"}],"dist":{"shasum":"35ad25f90a33f110f5597f6c78ad514f8d04a540","tarball":"https://registry.npmjs.org/@dex-ai/lsp/-/lsp-0.1.4.tgz","fileCount":96,"integrity":"sha512-zZwaZGXwU6Jn6pl/DGJWvd/e94l6E5uBj8Na9TdfdorqVJK5ObdhFwzzqSnfvDDwjWq36k4AvI95mATAQ9VYYQ==","signatures":[{"sig":"MEUCIQCVf/uX1exdTnQnW0g2g2LYLCwHQuGjDAayvHiFpeGjFgIgDnOFBvSMFjH4Nq5a+AtCjIbSklyq58BzuDODl66kp/k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276710},"type":"module","types":"./dist/index.d.ts","engines":{"npm":">=10","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"dd54062e156dd0f2b002a9865e5679a48e2be98e","scripts":{"test":"vitest run","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","release":"changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest","build:local":"npm run clean && tsc -p tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"klxdev","email":"klxdev.code@gmail.com"},"_npmVersion":"11.11.0","description":"Real-time code feedback for Dex — LSP, linters, formatters, structural analysis & edit guardrails","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.24.4","@dex-ai/sdk":"^0.3.0","vscode-jsonrpc":"^8.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"npm@11.13.0","devDependencies":{"vitest":"^3.0.0","typescript":"^5.6.3","@types/node":"^22.0.0","@changesets/cli":"^2.29.0"},"_npmOperationalInternal":{"tmp":"tmp/lsp_0.1.4_1781500149940_0.554380364161817","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@dex-ai/lsp","version":"0.1.5","_id":"@dex-ai/lsp@0.1.5","maintainers":[{"name":"klxdev","email":"klxdev.code@gmail.com"}],"dist":{"shasum":"17be2f71e025491ba0fdf8a8f79707a576fec151","tarball":"https://registry.npmjs.org/@dex-ai/lsp/-/lsp-0.1.5.tgz","fileCount":108,"integrity":"sha512-4Eb04ghfTTvkoIccsox/LP73ftkeGgOrSfJOn3yG2AJrDnJ7IkSq7vdmwxjXukIQMOrz4zp3NED3Gx4Lj1Hu6Q==","signatures":[{"sig":"MEQCIGNh3oI7yW4wytRBC4bjCVDJYQ4udrl3XD7xveYa9+vyAiAUZsV+W5Lygp30EuyqJ96f4rf0aWclF0sVnX3bKVoLjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322836},"type":"module","types":"./dist/index.d.ts","engines":{"npm":">=10","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"dd54062e156dd0f2b002a9865e5679a48e2be98e","scripts":{"test":"vitest run","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","release":"changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest","build:local":"npm run clean && tsc -p tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"klxdev","email":"klxdev.code@gmail.com"},"_npmVersion":"11.11.0","description":"Real-time code feedback for Dex — LSP, linters, formatters, structural analysis & edit guardrails","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.24.4","@dex-ai/sdk":"^0.3.0","vscode-jsonrpc":"^8.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"npm@11.13.0","devDependencies":{"vitest":"^3.0.0","typescript":"^5.6.3","@types/node":"^22.0.0","@changesets/cli":"^2.29.0"},"_npmOperationalInternal":{"tmp":"tmp/lsp_0.1.5_1781502372089_0.6311955204643","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@dex-ai/lsp","version":"0.1.6","_id":"@dex-ai/lsp@0.1.6","maintainers":[{"name":"klxdev","email":"klxdev.code@gmail.com"}],"dist":{"shasum":"01234621395d3d971349ffd97d1e37066134bdcb","tarball":"https://registry.npmjs.org/@dex-ai/lsp/-/lsp-0.1.6.tgz","fileCount":108,"integrity":"sha512-R/PG+zc4DTlYV3UerJhHHfLD3om0hYpAEsKi9j19pnw/lDjNV6OaCQDLHqfBVT9uiGIgq3j9tOyIk6hNiniEZg==","signatures":[{"sig":"MEYCIQC5icSJzmY/9mFtPgMGlwy065kdxlK13hnKoM9/Tn5sSQIhANpwnTYrylbh9Ae6HBTVlHl1onSAW8Bme1ncwKiO2Nz/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":324862},"type":"module","types":"./dist/index.d.ts","engines":{"npm":">=10","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"e52f0ed7ddf4851aaeb609f4e40bac743294f4ce","scripts":{"test":"vitest run","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","release":"changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest","build:local":"npm run clean && tsc -p tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"klxdev","email":"klxdev.code@gmail.com"},"_npmVersion":"11.11.0","description":"Real-time code feedback for Dex — LSP, linters, formatters, structural analysis & edit guardrails","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.24.4","@dex-ai/sdk":"^0.3.0","vscode-jsonrpc":"^8.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"npm@11.13.0","devDependencies":{"vitest":"^3.0.0","typescript":"^5.6.3","@types/node":"^22.0.0","@changesets/cli":"^2.29.0"},"_npmOperationalInternal":{"tmp":"tmp/lsp_0.1.6_1781502801920_0.016969571377051684","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@dex-ai/lsp","version":"0.1.7","_id":"@dex-ai/lsp@0.1.7","maintainers":[{"name":"klxdev","email":"klxdev.code@gmail.com"}],"dist":{"shasum":"ac5ec0acc82078ad15f415cadeb9e537622e0e02","tarball":"https://registry.npmjs.org/@dex-ai/lsp/-/lsp-0.1.7.tgz","fileCount":108,"integrity":"sha512-YQg/XMUGebRQYoD1ApisOmEjTDJ4pYnsFWjohUS3vA9pzqeVOWQm9+uwwZ8H2tz48S8q4xSjFdy0rj0SmrkZVw==","signatures":[{"sig":"MEUCIGzG+ACuLGoT5E+o6E4nZciS6giJkVhLEI3EVzp7XCwzAiEA2GGgmilp+mdGd1livvvJpadSFAJx9dubKaCJSmnKhRs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":326336},"type":"module","types":"./dist/index.d.ts","engines":{"npm":">=10","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"88477b7de972a6032535da4fd30ad23aee05a317","scripts":{"test":"vitest run","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","release":"changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest","build:local":"npm run clean && tsc -p tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"klxdev","email":"klxdev.code@gmail.com"},"_npmVersion":"11.11.0","description":"Real-time code feedback for Dex — LSP, linters, formatters, structural analysis & edit guardrails","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.24.4","@dex-ai/sdk":"^0.3.0","vscode-jsonrpc":"^8.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"npm@11.13.0","devDependencies":{"vitest":"^3.0.0","typescript":"^5.6.3","@types/node":"^22.0.0","@changesets/cli":"^2.29.0"},"_npmOperationalInternal":{"tmp":"tmp/lsp_0.1.7_1781503172477_0.1293107055150171","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@dex-ai/lsp","version":"0.1.8","_id":"@dex-ai/lsp@0.1.8","maintainers":[{"name":"klxdev","email":"klxdev.code@gmail.com"}],"dist":{"shasum":"3880ea70938a4bb42bb17c78c7bbd27d93b17c83","tarball":"https://registry.npmjs.org/@dex-ai/lsp/-/lsp-0.1.8.tgz","fileCount":116,"integrity":"sha512-mLiXEB9fftHH2aWmyUE+GE5YSeqkvPqlQsX7YQSfonc8KIG6hiVgSJg/BM+YV1syOHKrsFT3Ro/Rb5RMJP0VKg==","signatures":[{"sig":"MEYCIQCEs+DWz0/TZMe4YXkB2w25PcDuvYYT7Ioa3pfUWkUmaQIhAMd8+Y26E3XdTwJdhKLmvTd0Wr/6ilFjhwJm7RnqeAl+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353590},"type":"module","types":"./dist/index.d.ts","engines":{"npm":">=10","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"f7588a69198a7cbbe24c68d1c0baa4739b7b5e1a","scripts":{"test":"vitest run","build":"npm run clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","release":"changeset publish","version":"changeset version","changeset":"changeset","typecheck":"tsc --noEmit","test:watch":"vitest","build:local":"npm run clean && tsc -p tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"klxdev","email":"klxdev.code@gmail.com"},"_npmVersion":"11.11.0","description":"Real-time code feedback for Dex — LSP, linters, formatters, structural analysis & edit guardrails","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.24.4","@dex-ai/sdk":"^0.3.0","vscode-jsonrpc":"^8.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"npm@11.13.0","devDependencies":{"vitest":"^3.0.0","typescript":"^5.6.3","@types/node":"^22.0.0","@changesets/cli":"^2.29.0"},"_npmOperationalInternal":{"tmp":"tmp/lsp_0.1.8_1781504333891_0.9414209747615085","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@dex-ai/lsp","version":"0.1.9","description":"Real-time code feedback for Dex — LSP, linters, formatters, structural analysis & edit guardrails","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","build":"npm run clean && tsc -p tsconfig.build.json","build:local":"npm run clean && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","changeset":"changeset","version":"changeset version","release":"changeset publish","prepublishOnly":"npm run build"},"dependencies":{"@dex-ai/sdk":"^0.3.0","vscode-jsonrpc":"^8.2.1","zod":"^3.24.4"},"devDependencies":{"@changesets/cli":"^2.29.0","@types/node":"^22.0.0","typescript":"^5.6.3","vitest":"^3.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"types":"./dist/index.d.ts","packageManager":"npm@11.13.0","engines":{"node":">=22","npm":">=10"},"sideEffects":false,"gitHead":"911cdbf92d25110a76855dbc3d23690bb0972076","_id":"@dex-ai/lsp@0.1.9","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-RbSmjEX6Fx7QYBYbIsiKslQSEnFym8aq+A0xf08jf1ec/Ifh0Y2WUgFpp7fyr0W0P5YixgijClMrWIFoakOoZQ==","shasum":"069e8e1117f30a552114f887ff7845b4091162e3","tarball":"https://registry.npmjs.org/@dex-ai/lsp/-/lsp-0.1.9.tgz","fileCount":116,"unpackedSize":356077,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE8B1IMNdAvjhOnWMX2u2juuzD7LnQnGNYnGYazGIwmOAiAOi5iQng+lEoQmKHCU+HRvVwxDFROXKE6VGFS/L3i59Q=="}]},"_npmUser":{"name":"klxdev","email":"klxdev.code@gmail.com"},"directories":{},"maintainers":[{"name":"klxdev","email":"klxdev.code@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lsp_0.1.9_1781645160550_0.16821817142078443"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-15T04:59:18.990Z","modified":"2026-06-16T21:26:00.839Z","0.1.0":"2026-06-15T04:59:19.268Z","0.1.1":"2026-06-15T05:02:43.130Z","0.1.2":"2026-06-15T05:04:05.765Z","0.1.4":"2026-06-15T05:09:10.084Z","0.1.5":"2026-06-15T05:46:12.240Z","0.1.6":"2026-06-15T05:53:22.074Z","0.1.7":"2026-06-15T05:59:32.612Z","0.1.8":"2026-06-15T06:18:54.047Z","0.1.9":"2026-06-16T21:26:00.695Z"},"description":"Real-time code feedback for Dex — LSP, linters, formatters, structural analysis & edit guardrails","maintainers":[{"name":"klxdev","email":"klxdev.code@gmail.com"}],"readme":"# @dex-ai/lsp\n\nReal-time code feedback for Dex — LSP servers, linters, formatters, structural analysis & edit guardrails.\n\n## Overview\n\n`@dex-ai/lsp` provides the AI coding agent with IDE-level code intelligence:\n\n- **37+ Language Servers** — TypeScript, Python, Go, Rust, Ruby, C/C++, Java, PHP, Zig, Bash, and more\n- **4 Tools** — diagnostics, navigation, ast-grep search, ast-grep replace\n- **Edit Guards** — secrets scanner, read-before-edit enforcement, duplicate export detection\n- **Post-Write Pipeline** — automatic diagnostics, lint feedback, deferred formatting\n- **Formatter Integration** — Biome, Prettier, Ruff, gofmt, rustfmt\n\n## Installation\n\n```bash\nnpm install @dex-ai/lsp\n```\n\nAdd to your Dex configuration:\n\n```json\n{\n  \"extensions\": [\"@dex-ai/lsp\"]\n}\n```\n\n## Configuration\n\nCreate `.dex/lsp.json` in your project root:\n\n```json\n{\n  \"disabledServers\": [],\n  \"customServers\": [],\n  \"format\": {\n    \"enabled\": true,\n    \"deferred\": true,\n    \"onSave\": false\n  },\n  \"guards\": {\n    \"readBeforeEdit\": \"warn\",\n    \"secrets\": true,\n    \"duplicateExports\": true\n  },\n  \"lint\": {\n    \"biome\": true,\n    \"ruff\": true\n  },\n  \"warmFiles\": []\n}\n```\n\n### Configuration Reference\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `disabledServers` | `string[]` | `[]` | Server IDs to disable |\n| `customServers` | `ServerDef[]` | `[]` | Additional server definitions |\n| `format.enabled` | `boolean` | `true` | Enable formatting |\n| `format.deferred` | `boolean` | `true` | Queue formatting until turn-end |\n| `format.onSave` | `boolean` | `false` | Format immediately on write |\n| `guards.readBeforeEdit` | `\"off\" \\| \"warn\" \\| \"block\"` | `\"warn\"` | Read-before-edit enforcement |\n| `guards.secrets` | `boolean` | `true` | Secrets scanning |\n| `guards.duplicateExports` | `boolean` | `true` | Duplicate export detection |\n| `lint.biome` | `boolean` | `true` | Enable Biome lint |\n| `lint.ruff` | `boolean` | `true` | Enable Ruff (Python) lint |\n| `warmFiles` | `string[]` | `[]` | Files to pre-analyze on session start |\n\n### Custom Server Definition\n\n```json\n{\n  \"customServers\": [\n    {\n      \"id\": \"my-server\",\n      \"name\": \"My Server\",\n      \"command\": \"my-lsp-server\",\n      \"args\": [\"--stdio\"],\n      \"extensions\": [\".myext\"],\n      \"rootMarkers\": [\"my.config.json\"],\n      \"initOptions\": {}\n    }\n  ]\n}\n```\n\n## Tools\n\n### `lsp_diagnostics`\n\nGet compiler/linter diagnostics for files or directories.\n\n```\nlsp_diagnostics({ path: \"src/\", severity: \"error\" })\nlsp_diagnostics({ path: \"src/foo.ts\" })\n```\n\n**Parameters:**\n- `path` (required) — File or directory path\n- `severity` — Filter: `\"error\"` | `\"warning\"` | `\"information\"` | `\"hint\"`\n- `includeSource` — Include source context lines (default: true)\n\n### `lsp_navigation`\n\nIDE-level code navigation with 12 operations.\n\n```\nlsp_navigation({ operation: \"definition\", file: \"src/foo.ts\", line: 10, character: 5 })\nlsp_navigation({ operation: \"references\", file: \"src/foo.ts\", line: 10, character: 5 })\nlsp_navigation({ operation: \"documentSymbols\", file: \"src/foo.ts\" })\n```\n\n**Operations:**\n| Operation | Description |\n|-----------|-------------|\n| `definition` | Go to definition |\n| `typeDefinition` | Go to type definition |\n| `implementation` | Find implementations |\n| `references` | Find all references |\n| `hover` | Get type/doc info |\n| `signatureHelp` | Get function signature |\n| `documentSymbols` | List all symbols in file |\n| `workspaceSymbols` | Search workspace symbols |\n| `rename` | Compute rename edits |\n| `codeActions` | Get available code actions |\n| `callHierarchyIn` | Incoming calls |\n| `callHierarchyOut` | Outgoing calls |\n\n### `ast_grep_search`\n\nAST-aware structural code search using [ast-grep](https://ast-grep.github.io/) patterns.\n\n```\nast_grep_search({ pattern: \"console.log($$$)\", lang: \"typescript\" })\nast_grep_search({ pattern: \"import $NAME from '$MOD'\", lang: \"typescript\", path: \"src/\" })\n```\n\n**Parameters:**\n- `pattern` (required) — ast-grep pattern with metavariables (`$X`, `$$$`)\n- `lang` (required) — Language: `typescript`, `python`, `go`, `rust`, etc.\n- `path` — Scope search to path (default: workspace root)\n- `limit` — Max results (default: 50)\n\n### `ast_grep_replace`\n\nAST-aware find-and-replace with preview.\n\n```\nast_grep_replace({\n  pattern: \"console.log($MSG)\",\n  replacement: \"logger.info($MSG)\",\n  lang: \"typescript\",\n  path: \"src/\"\n})\n```\n\n**Parameters:**\n- `pattern` (required) — Pattern to find\n- `replacement` (required) — Replacement template (use same metavariables)\n- `lang` (required) — Language\n- `path` — Scope to path\n- `dryRun` — Preview only, don't apply (default: false)\n\n## Edit Guards\n\n### Secrets Scanner\n\nAutomatically blocks writes containing credentials:\n- AWS access/secret keys\n- GitHub tokens (classic, fine-grained, OAuth)\n- Stripe keys\n- OpenAI/Anthropic API keys\n- NPM tokens\n- SSH/RSA private keys\n- Database URLs with passwords\n- Generic API key assignments\n\nExempt: test files, `.md`, `.example`, lockfiles.\n\n### Read-Before-Edit\n\nEnsures files are read before being edited, preventing blind overwrites.\nConfigurable: `\"off\"` | `\"warn\"` | `\"block\"`.\n\n### Duplicate Export\n\nDetects when a write would create duplicate exported symbols across the project.\n\n## Post-Write Pipeline\n\nAfter every file write:\n1. **Sync** — Notify LSP server of file change\n2. **Diagnostics** — Collect new errors/warnings\n3. **Lint** — Run Biome/Ruff on changed files\n4. **Format Queue** — Queue file for formatting at turn-end\n\nAt turn-end (generate-input):\n1. **Format** — Apply deferred formatting\n2. **Inject** — Provide diagnostic summary to the next AI turn\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────┐\n│                Extension Entry Point                  │\n├──────────┬──────────┬──────────┬────────────────────┤\n│  Tools   │  Guards  │  Events  │     Services       │\n│          │          │          │                    │\n│ diagnost │ secrets  │ session  │  LSPService        │\n│ navigat  │ read-be  │ tool-*   │  LintPipeline      │\n│ ast-srch │ dup-exp  │ gen-*    │  FormatService     │\n│ ast-repl │          │          │  RuntimeCoordinator│\n└──────────┴──────────┴──────────┴────────────────────┘\n         │                              │\n         ▼                              ▼\n┌─────────────────┐          ┌─────────────────────┐\n│   LSP Client    │          │   ast-grep Client   │\n│  (JSON-RPC)     │          │  (@ast-grep/napi)   │\n└────────┬────────┘          └─────────────────────┘\n         │ stdio\n         ▼\n┌─────────────────┐\n│  Language Server │ × 37+\n│  (typescript,   │\n│   pyright, etc) │\n└─────────────────┘\n```\n\n## Supported Languages\n\n<details>\n<summary>Full list (37+ servers)</summary>\n\n| Language | Server | ID |\n|----------|--------|----|\n| TypeScript/JavaScript | typescript-language-server | `typescript` |\n| Python | pyright | `python` |\n| Go | gopls | `go` |\n| Rust | rust-analyzer | `rust` |\n| Ruby | ruby-lsp | `ruby-lsp` |\n| C/C++ | clangd | `clangd` |\n| Java | jdtls | `java` |\n| PHP | phpactor | `php` |\n| Zig | zls | `zig` |\n| Bash | bash-language-server | `bash` |\n| Lua | lua-language-server | `lua` |\n| Elixir | elixir-ls | `elixir` |\n| Kotlin | kotlin-language-server | `kotlin` |\n| Dart | dart language-server | `dart` |\n| Swift | sourcekit-lsp | `swift` |\n| C# | OmniSharp | `csharp` |\n| Haskell | haskell-language-server | `haskell` |\n| OCaml | ocamllsp | `ocaml` |\n| Scala | metals | `scala` |\n| Terraform | terraform-ls | `terraform` |\n| YAML | yaml-language-server | `yaml` |\n| JSON | vscode-json-languageserver | `json` |\n| HTML | vscode-html-languageserver | `html` |\n| CSS | vscode-css-languageserver | `css` |\n| Vue | vue-language-server | `vue` |\n| Svelte | svelte-language-server | `svelte` |\n| Astro | @astrojs/language-server | `astro` |\n| Prisma | prisma-language-server | `prisma` |\n| GraphQL | graphql-language-service-cli | `graphql` |\n| Dockerfile | dockerfile-language-server | `dockerfile` |\n| Nix | nil | `nix` |\n| SQL | sqls | `sql` |\n| R | languageserver | `r` |\n| Julia | LanguageServer.jl | `julia` |\n| Erlang | erlang_ls | `erlang` |\n| Perl | PLS | `perl` |\n| TOML | taplo | `toml` |\n\n</details>\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build\nnpm run build\n\n# Typecheck (includes tests)\nnpx tsc --noEmit\n\n# Run tests\nnpm test\n\n# Watch mode\nnpm run test:watch\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}