{"_id":"@davehardy20/pi-lsp-tools","_rev":"2-591bc31dae0fe0c2446d3d14a15ba47b","name":"@davehardy20/pi-lsp-tools","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@davehardy20/pi-lsp-tools","version":"0.1.0","keywords":["pi-package","pi-extension","lsp","language-server","code-navigation"],"license":"MIT","_id":"@davehardy20/pi-lsp-tools@0.1.0","maintainers":[{"name":"davehardy20","email":"dave.hardy@protonmail.com"}],"homepage":"https://github.com/davehardy20/pi-lsp-tools#readme","bugs":{"url":"https://github.com/davehardy20/pi-lsp-tools/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"0571e072e7d66b11b8ed5f856fd1fa9e4ae0aea2","tarball":"https://registry.npmjs.org/@davehardy20/pi-lsp-tools/-/pi-lsp-tools-0.1.0.tgz","fileCount":10,"integrity":"sha512-P/nLxM+8ugBdvY1E5NyL2GhKJVyjDAvEs27hf7fCc4JXMCIk+/MZsPLwzPhun/xGyJsvtH5JWStWXzMzeoHzDQ==","signatures":[{"sig":"MEYCIQC7vi6p2lPMl/ofCVy3EbJomVSfw3eKpSSGcJT46Lu0WQIhAKOM9yLF5ijPDyDa0JXs6Yij/xhP9nQQCi2Vcl7XwSBv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69201},"type":"module","gitHead":"a7261bad551a4677effed47d53a3e0d13a6eadce","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"davehardy20","email":"dave.hardy@protonmail.com"},"repository":{"url":"git+https://github.com/davehardy20/pi-lsp-tools.git","type":"git"},"_npmVersion":"11.12.1","description":"Pi package for LSP-powered code navigation: goto definition, find references, diagnostics, symbols, and rename.","directories":{},"_nodeVersion":"26.0.0","dependencies":{"yaml":"^2.7.1","vscode-jsonrpc":"^9.0.0-next.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typebox":"^1.1.24","typescript":"^5.9.3","@types/node":"^24.7.2","@earendil-works/pi-coding-agent":"^0.74.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":false},"@earendil-works/pi-coding-agent":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/pi-lsp-tools_0.1.0_1779016965374_0.6452099777479359","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@davehardy20/pi-lsp-tools","version":"0.1.1","description":"Pi package for LSP-powered code navigation: goto definition, find references, diagnostics, symbols, and rename.","type":"module","keywords":["pi-package","pi-extension","lsp","language-server","code-navigation"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/davehardy20/pi-lsp-tools.git"},"bugs":{"url":"https://github.com/davehardy20/pi-lsp-tools/issues"},"homepage":"https://github.com/davehardy20/pi-lsp-tools#readme","publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.build.json","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit"},"dependencies":{"vscode-jsonrpc":"^9.0.0-next.11","yaml":"^2.7.1"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","typebox":"*"},"peerDependenciesMeta":{"@earendil-works/pi-coding-agent":{"optional":false},"typebox":{"optional":false}},"devDependencies":{"@earendil-works/pi-coding-agent":"^0.74.0","@types/node":"^24.7.2","typebox":"^1.1.24","typescript":"^5.9.3","vitest":"^3.2.4"},"pi":{"extensions":["./src/index.ts"]},"gitHead":"a7261bad551a4677effed47d53a3e0d13a6eadce","_id":"@davehardy20/pi-lsp-tools@0.1.1","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-F6Gvi3pcN0T7CuBSViSPLx1tnhGmYp87qsjNoHQBvWAaxfcFub3qylcLI1JxeGITBSbe6aoEQF/xj7BxJQO/2w==","shasum":"b775d261ec24d0f8f107d6162f86f38f9426d8a2","tarball":"https://registry.npmjs.org/@davehardy20/pi-lsp-tools/-/pi-lsp-tools-0.1.1.tgz","fileCount":10,"unpackedSize":69202,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIG3uGzxZftIKA05BIcp7tSn3DKobmWTx/+5z6zKrgAZrAiB7iHxTgZxQabZ3Bo5UnYGOWhAltTl1vOc7WraVokpuhQ=="}]},"_npmUser":{"name":"davehardy20","email":"dave.hardy@protonmail.com"},"directories":{},"maintainers":[{"name":"davehardy20","email":"dave.hardy@protonmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-lsp-tools_0.1.1_1779019916072_0.48966182519639334"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-17T11:22:45.277Z","modified":"2026-05-17T12:11:56.340Z","0.1.0":"2026-05-17T11:22:45.504Z","0.1.1":"2026-05-17T12:11:56.228Z"},"bugs":{"url":"https://github.com/davehardy20/pi-lsp-tools/issues"},"license":"MIT","homepage":"https://github.com/davehardy20/pi-lsp-tools#readme","keywords":["pi-package","pi-extension","lsp","language-server","code-navigation"],"repository":{"type":"git","url":"git+https://github.com/davehardy20/pi-lsp-tools.git"},"description":"Pi package for LSP-powered code navigation: goto definition, find references, diagnostics, symbols, and rename.","maintainers":[{"name":"davehardy20","email":"dave.hardy@protonmail.com"}],"readme":"# @davehardy20/pi-lsp-tools\n\nPi package for LSP-powered code navigation: goto definition, find references, diagnostics, symbols, and rename.\n\n## What it adds\n\nSix LSP tools for Pi:\n\n| Tool | Description |\n| --- | --- |\n| `lsp_goto_definition` | Jump to where a symbol is defined |\n| `lsp_find_references` | Find all references to a symbol across the workspace |\n| `lsp_diagnostics` | Get errors and warnings for a file |\n| `lsp_symbols` | List all symbols (functions, classes, variables) in a file |\n| `lsp_prepare_rename` | Check if a symbol can be renamed at a position |\n| `lsp_rename` | Rename a symbol across the workspace (applies changes) |\n\nOne command:\n\n- `/lsp-status` — show package name, version, and loaded source path\n\n## Supported languages\n\nThe package ships built-in support for these language servers:\n\n| Language | Server binary | File extensions |\n| --- | --- | --- |\n| TypeScript/JavaScript | `typescript-language-server` | `.ts`, `.tsx`, `.js`, `.jsx`, `.mjs`, `.cjs`, `.mts`, `.cts` |\n| Python | `pyright-langserver` | `.py`, `.pyi` |\n| Rust | `rust-analyzer` | `.rs` |\n| Go | `gopls` | `.go` |\n| Bash | `bash-language-server` | `.sh`, `.bash`, `.zsh` |\n| YAML | `yaml-language-server` | `.yaml`, `.yml` |\n| JSON | `vscode-json-language-server` | `.json`, `.jsonc` |\n\n## LSP runtime requirements\n\nThis package requires the language server binaries to be available in your\n`PATH`. It does **not** bundle the language servers themselves — they are\nexternal processes managed outside of Pi.\n\n### Auto-install\n\nBy default, the package attempts to auto-install missing language servers\nusing `npm install -g`, `rustup`, or `go install` as appropriate. This can\nbe disabled or configured via `~/.pi/lsp-config.yaml`:\n\n```yaml\nautoInstall: false\n```\n\n### Manual install\n\n```bash\n# TypeScript\nnpm install -g typescript-language-server typescript\n\n# Python\nnpm install -g pyright\n\n# Rust\nrustup component add rust-analyzer\n\n# Go\ngo install golang.org/x/tools/gopls@latest\n\n# Bash\nnpm install -g bash-language-server\n\n# YAML\nnpm install -g yaml-language-server\n\n# JSON\nnpm install -g vscode-langservers-extracted\n```\n\n### Custom server configuration\n\nYou can override server commands or add custom servers in\n`~/.pi/lsp-config.yaml`:\n\n```yaml\nservers:\n  typescript:\n    command: [\"my-custom-ts-server\", \"--stdio\"]\n    extensions: [\".ts\", \".tsx\"]\n  custom:\n    command: [\"my-lang-server\"]\n    extensions: [\".xyz\"]\n```\n\n## Install\n\nFrom npm:\n\n```bash\npi install npm:@davehardy20/pi-lsp-tools\n```\n\nFrom git:\n\n```bash\npi install git:github.com/davehardy20/pi-lsp-tools\n```\n\nFrom a local checkout during development:\n\n```bash\npi install /Users/dave/tools/pi-lsp-tools\n```\n\nFor one run only:\n\n```bash\npi -e /Users/dave/tools/pi-lsp-tools\n```\n\n## Settings\n\nNo Pi-level settings required. Language server configuration lives in\n`~/.pi/lsp-config.yaml`.\n\n## Update flow\n\n1. Update the package repo\n2. Push to GitHub\n3. Run `pi update --extensions` or reinstall the package\n4. Run `/reload`\n\n`/reload` alone does not fetch newer package commits.\n\n## Troubleshooting\n\nRun `/lsp-status` to confirm:\n\n- Package name and version\n- Loaded source path\n\nIf LSP tools appear twice, Pi may be loading both the package and the old\nlocal extension. Disable or remove the old local auto-discovered extension\nbefore reload verification.\n\nIf a language server fails to start, check:\n\n1. The server binary is installed and on your `PATH`\n2. `~/.pi/lsp-config.yaml` has correct server entries if customized\n3. The workspace root contains a recognizable project marker (e.g.\n   `package.json`, `Cargo.toml`, `go.mod`)\n\n## LSP runtime strategy\n\nSee [docs/lsp-runtime-strategy.md](docs/lsp-runtime-strategy.md) for the\nexplicit LSP runtime strategy covering server discovery, client lifecycle,\nauto-install, document synchronization, error handling, and cross-package\ncoupling notes.\n\n## Build and test\n\n```bash\nnpm run typecheck\nnpm run build\nnpm test\n```\n\n## Package-local source layout\n\n```\nsrc/\n├── index.ts              # Main extension entrypoint + tool registrations\n├── lsp-client.ts         # JSON-RPC LSP client (vscode-jsonrpc)\n├── lsp-service.ts        # Client cache, startup, shutdown\n├── lsp-server-resolver.ts # File→server mapping + config from lsp-config.yaml\n├── lsp-auto-installer.ts # Auto-installs missing language servers\n├── lsp-utils.ts          # File filtering and grouping helpers\n└── path-utils.ts         # Path normalization utilities\n```\n\nAll helpers are package-local. This package does **not** import from\n`~/.pi/agent/extensions/shared/*`.\n","readmeFilename":"README.md"}