{"_id":"@0xdeafcafe/tslsp-cli","_rev":"5-a66a06ba8a1f01626cdcf06c9be9f28d","name":"@0xdeafcafe/tslsp-cli","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@0xdeafcafe/tslsp-cli","version":"0.1.0","keywords":["claude","claude-code","cli","lsp","refactor","rename","tsgo","typescript"],"license":"MIT","_id":"@0xdeafcafe/tslsp-cli@0.1.0","maintainers":[{"name":"0xdeafcafe","email":"npm@alex.forbes.red"}],"homepage":"https://github.com/0xdeafcafe/tslsp-cli#readme","bugs":{"url":"https://github.com/0xdeafcafe/tslsp-cli/issues"},"bin":{"tslsp":"dist/cli.js"},"dist":{"shasum":"082f32ebba33605c031fd6b922e19334f9ca82c3","tarball":"https://registry.npmjs.org/@0xdeafcafe/tslsp-cli/-/tslsp-cli-0.1.0.tgz","fileCount":33,"integrity":"sha512-PFlFJmtrRxINzDeVzLqGXZ1AovjYrmR5KGciMhQtWzUqsEWs7Een+KFuKlmowQne5RoWnj3S8pEXafywGAGMjQ==","signatures":[{"sig":"MEQCICENOJNSKquzOghshFstt4zTSERrjdQFc2EdDg2o/XXZAiByDzb4bq5Azpjo//P21vPPLKFRfcuqVlkH6ot0RvrqsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233681},"type":"module","engines":{"node":">=22"},"gitHead":"f11850c16ee364fa6e68aa64b1bc041835b346b8","scripts":{"dev":"tsc --watch","lint":"oxlint","test":"vitest run","build":"pnpm run clean && tsc","clean":"rm -rf dist","start":"node dist/cli.js","format":"oxfmt --write","test:ui":"vitest --ui","lint:fix":"oxlint --fix","test:watch":"vitest","format:check":"oxfmt --check","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"0xdeafcafe","email":"npm@alex.forbes.red"},"repository":{"url":"git+https://github.com/0xdeafcafe/tslsp-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Type-aware TypeScript code intelligence CLI — rename, references, definitions, hover, symbols, diagnostics, call hierarchy, code actions. Backed by tsgo.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^4.4.3","@typescript/native-preview":"7.0.0-dev.20260506.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"oxfmt":"^0.52.0","oxlint":"^1.67.0","vitest":"^4.1.6","@vitest/ui":"^4.1.6","typescript":"^6.0.3","@types/node":"^22.19.17"},"_npmOperationalInternal":{"tmp":"tmp/tslsp-cli_0.1.0_1779970776082_0.6388421078363955","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@0xdeafcafe/tslsp-cli","version":"0.3.0","keywords":["claude","claude-code","cli","lsp","refactor","rename","tsgo","typescript"],"license":"MIT","_id":"@0xdeafcafe/tslsp-cli@0.3.0","maintainers":[{"name":"0xdeafcafe","email":"npm@alex.forbes.red"}],"homepage":"https://github.com/0xdeafcafe/tslsp-cli#readme","bugs":{"url":"https://github.com/0xdeafcafe/tslsp-cli/issues"},"bin":{"tslsp-cli":"dist/cli.js"},"dist":{"shasum":"d9b55f03722432b76d3f8a920518f8715e5c50ee","tarball":"https://registry.npmjs.org/@0xdeafcafe/tslsp-cli/-/tslsp-cli-0.3.0.tgz","fileCount":35,"integrity":"sha512-X2jEwtJdPgAISS0Tbw3/qLwO70wvWVahQyHMKKfBRHF2fyqUpqqEbGyy9Rh3KTvsgnlNu3WbeoHH3sZ8B7eViA==","signatures":[{"sig":"MEUCIQCG5Mn/QRLTCMi+bRz/H96/LpzNATqXXhptUeWkBLE8KAIgNZYOv3hwS6LdgcDqAS8Uy2OdzVHLBMOBOZ5oGb18vMQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xdeafcafe%2ftslsp-cli@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":271082},"type":"module","engines":{"node":">=22"},"gitHead":"9b2c16c7061ae480d08b6b0270303d92f8b5ff8b","scripts":{"dev":"tsc --watch","lint":"oxlint","test":"vitest run","build":"pnpm run clean && tsc","clean":"rm -rf dist","start":"node dist/cli.js","format":"oxfmt --write","test:ui":"vitest --ui","lint:fix":"oxlint --fix","test:watch":"vitest","format:check":"oxfmt --check","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:20a8a1da-130d-46c1-9e43-e0b8f9d767a9"}},"repository":{"url":"git+https://github.com/0xdeafcafe/tslsp-cli.git","type":"git"},"_npmVersion":"11.16.0","description":"Type-aware TypeScript code intelligence CLI — rename, references, definitions, hover, symbols, diagnostics, call hierarchy, code actions. Backed by tsgo.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","@typescript/native-preview":"7.0.0-dev.20260506.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"oxfmt":"^0.52.0","oxlint":"^1.67.0","vitest":"^4.1.6","@vitest/ui":"^4.1.6","typescript":"^6.0.3","@types/node":"^22.19.17"},"_npmOperationalInternal":{"tmp":"tmp/tslsp-cli_0.3.0_1780073377460_0.4269678211576491","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@0xdeafcafe/tslsp-cli","version":"0.4.0","keywords":["claude","claude-code","cli","lsp","refactor","rename","tsgo","typescript"],"license":"MIT","_id":"@0xdeafcafe/tslsp-cli@0.4.0","maintainers":[{"name":"0xdeafcafe","email":"npm@alex.forbes.red"}],"homepage":"https://github.com/0xdeafcafe/tslsp-cli#readme","bugs":{"url":"https://github.com/0xdeafcafe/tslsp-cli/issues"},"bin":{"tslsp-cli":"dist/cli.js"},"dist":{"shasum":"8e73ace231df3c895f7006042016b13e57342845","tarball":"https://registry.npmjs.org/@0xdeafcafe/tslsp-cli/-/tslsp-cli-0.4.0.tgz","fileCount":37,"integrity":"sha512-GBT+sgB3MafMPX3H5Z0T38Y/OLBTzKsyp1cYY1fHIgxsu3nARJJiDCNGkbWmWgWaKS30JpoY3M7PHF8xVQiUkg==","signatures":[{"sig":"MEUCIC/mpTOkJfhX/KSb8WstSAC5eUF3dxt1lhykGpNBYkiqAiEA2klIWBBDc3oaJdAocwWRMmwmTK/XyEHcWQusu/GdyvI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xdeafcafe%2ftslsp-cli@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":292388},"type":"module","engines":{"node":">=22"},"gitHead":"dfe2311672947cdd3bdb2e241d7ca83a9a3ca4db","scripts":{"dev":"tsc --watch","lint":"oxlint","test":"vitest run","build":"pnpm run clean && tsc","clean":"rm -rf dist","start":"node dist/cli.js","format":"oxfmt --write","test:ui":"vitest --ui","lint:fix":"oxlint --fix","test:watch":"vitest","format:check":"oxfmt --check","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:20a8a1da-130d-46c1-9e43-e0b8f9d767a9"}},"repository":{"url":"git+https://github.com/0xdeafcafe/tslsp-cli.git","type":"git"},"_npmVersion":"11.16.0","description":"Type-aware TypeScript code intelligence CLI — rename, references, definitions, hover, symbols, diagnostics, call hierarchy, code actions. Backed by tsgo.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@typescript/native-preview":"7.0.0-dev.20260506.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"oxfmt":"^0.53.0","oxlint":"^1.68.0","vitest":"^4.1.8","@vitest/ui":"^4.1.8","typescript":"^6.0.3","@types/node":"^22.19.17"},"_npmOperationalInternal":{"tmp":"tmp/tslsp-cli_0.4.0_1780931071511_0.035432919873277235","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@0xdeafcafe/tslsp-cli","version":"0.5.0","keywords":["claude","claude-code","cli","lsp","refactor","rename","tsgo","typescript"],"license":"MIT","_id":"@0xdeafcafe/tslsp-cli@0.5.0","maintainers":[{"name":"0xdeafcafe","email":"npm@alex.forbes.red"}],"homepage":"https://github.com/0xdeafcafe/tslsp-cli#readme","bugs":{"url":"https://github.com/0xdeafcafe/tslsp-cli/issues"},"bin":{"tslsp-cli":"dist/cli.js"},"dist":{"shasum":"38b4f76991df032ad6a87875c57928a7102af68e","tarball":"https://registry.npmjs.org/@0xdeafcafe/tslsp-cli/-/tslsp-cli-0.5.0.tgz","fileCount":37,"integrity":"sha512-iPIefq4fINx7jUnQmBIAF6hqLDL+ZlL9GYnpqAOOt9MUQdXyHQ4iqrqcVTZxmdynXMInptlINcoaArDnzu2O9Q==","signatures":[{"sig":"MEQCIBzelghLZjbD+MO7zG9gzqw8husdUPIA8JjpqsNqWdsKAiBXrvu0kYF6N50amTnVuxG12kb5wwLSi+aLigOQuVBJXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xdeafcafe%2ftslsp-cli@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":296464},"type":"module","engines":{"node":">=22"},"gitHead":"9cbb687098cb97672c1ff4f8a45a5f3fd9b6ef3c","scripts":{"dev":"tsc --watch","lint":"oxlint","test":"vitest run","build":"pnpm run clean && tsc","clean":"rm -rf dist","start":"node dist/cli.js","format":"oxfmt --write","test:ui":"vitest --ui","lint:fix":"oxlint --fix","test:watch":"vitest","format:check":"oxfmt --check","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:20a8a1da-130d-46c1-9e43-e0b8f9d767a9"}},"repository":{"url":"git+https://github.com/0xdeafcafe/tslsp-cli.git","type":"git"},"_npmVersion":"11.16.0","description":"Type-aware TypeScript code intelligence CLI — rename, references, definitions, hover, symbols, diagnostics, call hierarchy, code actions. Backed by tsgo.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@typescript/native-preview":"7.0.0-dev.20260506.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.29.3","devDependencies":{"oxfmt":"^0.53.0","oxlint":"^1.68.0","vitest":"^4.1.8","@vitest/ui":"^4.1.8","typescript":"^6.0.3","@types/node":"^22.19.17"},"_npmOperationalInternal":{"tmp":"tmp/tslsp-cli_0.5.0_1780939778855_0.058280468220564874","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@0xdeafcafe/tslsp-cli","version":"0.6.0","description":"Type-aware TypeScript code intelligence CLI — rename, references, definitions, hover, symbols, diagnostics, call hierarchy, code actions. Backed by tsgo.","keywords":["claude","claude-code","cli","lsp","refactor","rename","tsgo","typescript"],"homepage":"https://github.com/0xdeafcafe/tslsp-cli#readme","bugs":{"url":"https://github.com/0xdeafcafe/tslsp-cli/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/0xdeafcafe/tslsp-cli.git"},"bin":{"tslsp-cli":"dist/cli.js"},"type":"module","scripts":{"clean":"rm -rf dist","build":"pnpm run clean && tsc","dev":"tsc --watch","start":"node dist/cli.js","test":"vitest run","test:watch":"vitest","test:ui":"vitest --ui","lint":"oxlint","lint:fix":"oxlint --fix","format":"oxfmt --write","format:check":"oxfmt --check","prepublishOnly":"pnpm run build"},"dependencies":{"@typescript/native-preview":"7.0.0-dev.20260506.1"},"devDependencies":{"@types/node":"^22.19.17","@vitest/ui":"^4.1.8","oxfmt":"^0.53.0","oxlint":"^1.68.0","typescript":"^6.0.3","vitest":"^4.1.8"},"engines":{"node":">=22"},"packageManager":"pnpm@10.29.3","gitHead":"9dd08cce77277da09de26a973b4b8bb75998ceda","_id":"@0xdeafcafe/tslsp-cli@0.6.0","_nodeVersion":"22.22.3","_npmVersion":"11.16.0","dist":{"integrity":"sha512-3ed4cRuuptRkmpey3waZOd5Hl2Vl60NJlZCMr2g6QdxtIEGtopndcuwLiwaiJ9DgpTgqR4HKPKusZizLGfdp+A==","shasum":"94dd84fc0eba0b0b3752579a7b9f04f4b9205843","tarball":"https://registry.npmjs.org/@0xdeafcafe/tslsp-cli/-/tslsp-cli-0.6.0.tgz","fileCount":37,"unpackedSize":296486,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xdeafcafe%2ftslsp-cli@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDWb7zK8F+wgmXV/RI1KQz4v3IBQf2LeF6WqyI4i3AnbwIgL3mj0oWoG5ks5J7kzfz1IlI+GNvK9OQAPYyqS0kzDLI="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:20a8a1da-130d-46c1-9e43-e0b8f9d767a9"}},"directories":{},"maintainers":[{"name":"0xdeafcafe","email":"npm@alex.forbes.red"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tslsp-cli_0.6.0_1780941387540_0.943358445994217"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-28T12:19:35.591Z","modified":"2026-06-08T17:56:28.008Z","0.1.0":"2026-05-28T12:19:36.254Z","0.3.0":"2026-05-29T16:49:37.594Z","0.4.0":"2026-06-08T15:04:31.654Z","0.5.0":"2026-06-08T17:29:39.006Z","0.6.0":"2026-06-08T17:56:27.673Z"},"bugs":{"url":"https://github.com/0xdeafcafe/tslsp-cli/issues"},"license":"MIT","homepage":"https://github.com/0xdeafcafe/tslsp-cli#readme","keywords":["claude","claude-code","cli","lsp","refactor","rename","tsgo","typescript"],"repository":{"type":"git","url":"git+https://github.com/0xdeafcafe/tslsp-cli.git"},"description":"Type-aware TypeScript code intelligence CLI — rename, references, definitions, hover, symbols, diagnostics, call hierarchy, code actions. Backed by tsgo.","maintainers":[{"name":"0xdeafcafe","email":"npm@alex.forbes.red"}],"readme":"# tslsp-cli\n\n[![npm](https://img.shields.io/npm/v/@0xdeafcafe/tslsp-cli.svg?logo=npm&label=npm)](https://www.npmjs.com/package/@0xdeafcafe/tslsp-cli)\n[![CI](https://github.com/0xdeafcafe/tslsp-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/0xdeafcafe/tslsp-cli/actions/workflows/ci.yml)\n[![node](https://img.shields.io/node/v/@0xdeafcafe/tslsp-cli.svg?logo=node.js)](https://github.com/0xdeafcafe/tslsp-cli/blob/main/package.json)\n\nType-aware TypeScript/JavaScript code intelligence as a CLI. Wraps [tsgo](https://github.com/microsoft/typescript-go) (Microsoft's native Go port of tsserver) and exposes its LSP capabilities — `references`, `definition`, `rename`, `rename-file`, `hover`, `outline`, `diagnostics`, `call-hierarchy`, `code-action` — as a small set of agent-friendly commands.\n\nThe point is to give coding agents an alternative to grep/find-and-replace/`mv` on identifier-level work. `rename` updates every reference. `rename-file` rewrites every import. `outline` returns the LSP's structural view, not 200 lines of source.\n\nOne tsgo per `tsconfig.json`, lazy-spawned. Optional `--daemon` keeps tsgo warm across calls.\n\n## install\n\nTwo clients are first-class: Claude Code (via the bundled plugin marketplace) and Codex (via the CLI + `AGENTS.md`).\n\n### Claude Code\n\n```\n/plugin marketplace add 0xdeafcafe/tslsp-cli\n/plugin install tslsp@0xdeafcafe-tslsp\n```\n\nThe plugin bundles a routing skill that tells Claude to use `tslsp-cli` instead of grep / string-edit / `mv` for any TS/JS identifier work — no `CLAUDE.md` editing required. The skill drives the CLI, so install that too:\n\n```bash\nnpm i -g @0xdeafcafe/tslsp-cli\n```\n\nThe skill instructs Claude to verify the CLI is on `PATH` at the start of each session; a missing install surfaces immediately rather than mid-refactor. Update the skill with `/plugin marketplace update 0xdeafcafe-tslsp`.\n\n### Codex\n\nCodex reads `AGENTS.md` the same way Claude reads `CLAUDE.md`. Install the CLI and let it write the routing block:\n\n```bash\nnpm i -g @0xdeafcafe/tslsp-cli\n\ntslsp-cli install --skills --project --with-agents-md   # writes ./AGENTS.md\ntslsp-cli install --skills --with-agents-md             # writes ~/.codex/AGENTS.md (user-wide)\n```\n\nIdempotent — guarded by a marker comment, so re-runs are no-ops. `--with-claude-md` is the equivalent flag for non-marketplace Claude Code installs; both flags can be passed together.\n\n### Other agents\n\nCursor, Cline, Aider, anything else that runs a shell and reads an instructions file: install the CLI (`npm i -g @0xdeafcafe/tslsp-cli`), then paste the body of [`skills/tslsp/SKILL.md`](skills/tslsp/SKILL.md) into the host's equivalent file.\n\n### From source\n\n```bash\ngit clone https://github.com/0xdeafcafe/tslsp-cli.git\ncd tslsp-cli && pnpm install && pnpm run build\n./dist/cli.js --help\n```\n\n## commands\n\n| command           | purpose                                                                                         |\n| ----------------- | ----------------------------------------------------------------------------------------------- |\n| `find-symbol`     | Workspace symbol search. Multi-query positional or `--queries a,b,c`. `--kind`, `--container`.  |\n| `references`      | Every reference. Locator or `--symbols` batch. `--summary` for `path (N): lines`.               |\n| `definition`      | Jump to where a symbol is defined. `--symbols` batch.                                           |\n| `type-definition` | Jump to a value's _type_ declaration (vs. value). `--symbols` batch.                            |\n| `implementation`  | Concrete implementations of an interface/abstract member. `--symbols` batch.                    |\n| `rename`          | Type-aware rename across every file. `--dry-run` previews.                                      |\n| `rename-file`     | Move a file or folder; updates every import. Folders walked recursively.                        |\n| `hover`           | Type signature + JSDoc. `--symbols` batch.                                                      |\n| `outline`         | Indented declaration outline. Files, globs (`'src/**/*.ts'`), directories. `--depth`, `--kind`. |\n| `diagnostics`     | Type errors. Files, globs, directories. No args → aggregate across every open file.             |\n| `call-hierarchy`  | Callers and callees. `--direction incoming` / `outgoing` / `both`.                              |\n| `code-action`     | List quick-fixes / refactors / organize-imports; `--apply N` applies one.                       |\n\n`tslsp-cli --help` and `tslsp-cli <command> --help` are authoritative.\n\n## locator\n\nCommands that need a position accept three forms, in priority order:\n\n```\n--file F --line L --character C   explicit LSP position\n--file F --line L --symbol NAME   scan line L of F for NAME\n--symbol NAME                     workspace search; exit 2 with candidates if ambiguous\n```\n\nAgents typically know the symbol name and line, not the column. Modes 2 and 3 cover the gap.\n\n## batch\n\nEvery read-only command accepts a list. One CLI call → N parallel LSP queries → one labelled return:\n\n```bash\ntslsp-cli find-symbol  add double sum                # multi-positional\ntslsp-cli hover        --symbols User,Account,Session\ntslsp-cli references   --symbols add,sum,double\ntslsp-cli outline      'src/**/*.ts'                 # quote the glob\ntslsp-cli diagnostics  src/api/                      # directory walk\n```\n\nBlocks are labelled `=== name ===`. `find-symbol` serializes internally (tsgo's `workspace/symbol` races at cold-start); everything else fans out.\n\nGlob and directory inputs are filtered through a source-extension set (`.ts/.tsx/.mts/.cts/.js/.jsx/.mjs/.cjs`) and an ignore set (`node_modules`, `.git`, `dist`, `build`, `out`, `.next`, `coverage`). Mention an ignored segment in the pattern itself (e.g. `node_modules/**/*.ts`) to include those hits.\n\nBatched output is squeezed: clean items drop their `=== file ===` headers, all-clean batches collapse to one line, and `references --summary` swaps snippets for `path (N): l1, l2, l3` — ~15KB → a few hundred bytes on heavily-referenced symbols.\n\n## daemon\n\n```\ntslsp-cli <cmd>             fresh tsgo per invocation; disposed after the call\ntslsp-cli --daemon <cmd>    RPC into a per-workspace daemon\n```\n\nFresh-process mode is fine for one-off calls. For a refactor loop with many calls, `--daemon` autospawns a per-workspace daemon on first use and reuses it after. Socket path: `$CACHE/tslsp/daemon/<sha1(tsconfig-dir)>/<session>.sock` (macOS `~/Library/Caches`, Linux `$XDG_CACHE_HOME`, Windows `%LOCALAPPDATA%`; override with `TSLSP_DAEMON_DIR`).\n\n```bash\ntslsp-cli --daemon references --symbol User\ntslsp-cli daemon list           # running daemons\ntslsp-cli daemon restart        # after upgrading tslsp-cli\ntslsp-cli daemon stop           # graceful stop for this workspace\ntslsp-cli daemon kill-all       # SIGKILL every daemon\n```\n\nThe daemon self-exits after 30 min idle (`TSLSP_DAEMON_IDLE_MS`); individual tsgos inside reap after 10 min (`TSLSP_TSGO_IDLE_MS`). Version-skewed daemons refuse new calls — run `daemon restart` after upgrading.\n\n## gotchas\n\n- `@typescript/native-preview` is pinned to a specific dev build. tsgo moves fast; bump it deliberately.\n- `rename` and `rename-file` write to disk. `--dry-run` previews first.\n- Always quote glob patterns. An unquoted `src/**/*.ts` that matches nothing in your shell becomes a literal argument and the LSP errors instead of the expander finding zero files.\n- One tsgo per `tsconfig.json` root. Monorepos pay project-load cost the first time each project is hit (~50ms small, more on large).\n- `--daemon` keeps files open across calls. External edits between two daemon-routed calls may briefly lag until the next file-open or `didChangeWatchedFiles` event.\n- Daemon stderr lives at `$CACHE/tslsp/daemon/<hash>/<session>.err` — first place to look if a spawn fails.\n- `TSLSP_VERBOSE=1` forwards tsgo's stderr to the foreground process.\n- A homebrew-installed `tsgo` on `PATH` is ignored; `tslsp-cli` always uses the npm-pinned one.\n","readmeFilename":"README.md"}