Skip to content

Commit 4922dfa

Browse files
committed
docs(agents): pin ts-morph 27.0.x rationale to TS-version match
ts-morph bundles its TypeScript dependency rather than treating it as a peer, so the ts-morph version effectively chooses the TS compiler that runs against transpiler ASTs regardless of the workspace `typescript` pin. ts-morph 28 bundles TS 6.0 and is gated behind the TS-6 maturation hold; ts-morph 27.0.2 bundles TS 5.9 and aligns with the project's `typescript ^5.9.3` pin. Document the lockstep requirement alongside the LSP triplet pin so future reviewers don't re-flag the 27.0.x line as policy-violating without understanding why the TS-version match overrides the matured-major rule.
1 parent a072353 commit 4922dfa

1 file changed

Lines changed: 1 addition & 0 deletions

File tree

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ Three artifact streams, all triggered by `git tag vX.Y.Z` -> GitHub Actions. See
136136
- `client/package.json:vscode-languageserver-protocol` is pinned to the same patch level as the `vscode-languageclient` and `vscode-languageserver` majors (currently `8.1.0` / protocol `3.17.3`). Bumping the protocol patch independently breaks `client.sendRequest(ExecuteCommandRequest.type, ...)` overloads — the LSP client/server/protocol triplet must move together when the LSP majors are upgraded.
137137
- `vscode-languageclient` / `vscode-languageserver` themselves remain on `8.1.0` while the `9.x` line is `9.0.x` only; the cross-major bump waits for a `9.1` release that proves the major has matured.
138138
- `pnpm.overrides` for `mocha>diff` and `mocha>serialize-javascript` exist for security-advisory reasons; revisit only when the underlying advisories are closed.
139+
- `ts-morph` is pinned to `^27.0.2` across the server runtime and all transpiler subpackages so the bundled TypeScript matches the project's own `typescript ^5.9.3` pin. ts-morph bundles its TypeScript dependency rather than treating it as a peer, so the ts-morph version effectively chooses the TS compiler that runs against transpiler ASTs regardless of the workspace `typescript` pin. ts-morph 28 bundles TS 6.0 — TS 6 is on a 6.0.x line with no 6.1 published, fails the standard "matured target major" upgrade rule, and ts-morph 28 is therefore deferred until TS 6.1 ships. ts-morph 27.0.x is technically also on a 0-minor line, but the TS 5.9 alignment is the deciding factor. Bump in lockstep with the project's `typescript` pin: when `typescript` moves to 6.x, ts-morph moves to whichever ts-morph major bundles that TS line.
139140

140141
## Architecture
141142

0 commit comments

Comments
 (0)