Repository navigation
fix: resolve install ERESOLVE on quilt — downgrade typescript ^7.0.2 → ^6.0.3 (#33) - #34
Merged
Merged
Conversation
…→ ^6.0.3 Closes #33 (TS7 post-merge health check). Cause: @typescript-eslint/eslint-plugin@8.70.1 declares peer typescript ">=4.8.4 <6.1.0"; the typescript 7.0.2 bump (PR #31) violates it and npm refuses ci/install at the resolver stage. Every CI job dies at install, before any test or lint runs. Per the Coddy typescript-7 changelog (Sept 2026): typescript 7.0 ships no stable JavaScript API, and tools like typescript-eslint, ts-node, and the Vue/Svelte/Angular template checkers call that API. The TS team expects typescript 7.1 to ship a new, different API — until then, TS 7 + these tools require an npm alias (@typescript/typescript6) and dual tsc config. Minimal reversible fix: align with the current typescript-eslint ceiling (6.0.x). Touches only the typescript pin in 6 package.jsons (root + packages/cli,core,mcp,sdk,tui); package-lock.json regenerated. Verified locally on depth-30 clone: - npm install resolves cleanly (232 packages added, 0 ERESOLVE) - npm run lint: 0 errors, 14 warnings (pre-existing comma-dangle) - npm test: 15/15 pass, 0 fail, 0 skip across the @quilt/cli suite Re-open the 7.x lane when typescript-eslint 9.x ships with peerDeps aligned to TS 7.0; that bump will arrive in a separate PR with the @typescript/typescript6 alias for ts-node only (CI lint will be 9.x then). Note: this restores main to green from c9b5e9f (post-#32); no other shipped code changes. publish-rubygems.yml remains chronically red on its own pre-merge baseline (issue #33 documents, not caused by).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Aligns the typescript pin to the @typescript-eslint peer ceiling until typescript-eslint catches up. Closes #33.
Why
@typescript-eslint/eslint-plugin@8.70.1declares peertypescript@">=4.8.4 <6.1.0". The typescript 7.0.2 bump in #31 satisfies that range on its own — but violates it on the peer side, because the plugin's runtime importstypescriptand depends on its API.Per the Coddy typescript-7 changelog (Sept 2026): TypeScript 7.0 ships no stable JavaScript API. Tools that import the compiler as a library — typescript-eslint (type-aware lint rules), ts-node, Vue/Svelte/Angular template checkers, MDX — keep using TypeScript 6. The TS team expects TS 7.1 to ship a new, different API; until then the supported path is the
@typescript/typescript6npm alias alongside TS 7'stsc.npm install(no flags) refuses to resolve. Every CI job —test (node 20),test (node 22),lint,security audit— dies at the Install dependencies step, before any code runs.Fix
Minimal, reversible: pin typescript at
^6.0.3(the pre-#31 state). Touches only the typescript pin in 6 package.jsons (root + packages/cli, core, mcp, sdk, tui); package-lock.json regenerated.The TS 7 lane can re-open cleanly with two follow-up moves:
@typescript-eslint/eslint-pluginand@typescript-eslint/parserto^9.xwhen the typescript-eslint team ships peerDeps aligned to TS 7.@typescript/typescript6as an npm alias forts-nodeand the type-aware lint rules, while the build uses TS 7'stsc.That is a 2-PR lane (eslint pin + alias) — out of scope here.
Verification
Local clone at depth-30 (commit f3fbcbd):
npm installnpm run lintnpm testOut of scope
publish-rubygems.ymlchronic red — pre-merge baseline, not caused by TS 7. Documented in TS7 post-merge health check:cired on main since the typescript 6.0.3 → 7.0.2 merge (ERESOLVE: @typescript-eslint peer caps typescript <6.1.0) #33, separate lane.cc: keeper (R57 fallback-aware doctrine applied — restore green, then re-attempt the major when peer lands).