Repository navigation
fix: pin the DSH dependency line to 0.1.0-rc.8 so global installs resolve - #100
Merged
Merged
Conversation
Author
|
Thanks for verifying — that closes exactly the ubuntu/full-suite gap listed under "not run locally" in the Validation section (871/871 at 2dd5cae on dev @ 2af7c3f, Node 22.22.1, npm 10, Hitch 0.2.17). Between that and the Windows-side install verification, the remaining untested surface is just the CI matrix itself, which runs on this PR once the workflow is approved. |
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.
Fixes #96
Problem
npm install --global rsi-gearfails withERESOLVEon both npm 10 (reported) and npm 11 (reproduced):The published manifest mixes DSH lines: seven dependencies declare
^0.1.0-rc.8 || ^0.1.1-rc.2(which resolves to 0.1.1-rc.2), while@deepseek-ai/dsh-token-meteris exactly pinned at0.1.0-rc.8and its non-optional peer chain (dsh-compaction->dsh-commands->dsh-agent, all^0.1.0-rc.8) needs the 0.1.0-rc.8 line. Semver prerelease rules make the two lines mutually exclusive, so a single global install cannot place onedsh-agent.Both existing package gates (
check-project-package,check-public-api-package) install the tarball locally, where npm only warns: the exact published 0.2.1 tarball passes a local install with 42ERESOLVEoverride warnings and hard-fails a global install.Change
0.1.0-rc.8, matching thedsh-token-meterpin, the repo lockfile, the devDependencies and the paper line.peerDependenciesstay wide, so the documented host compatibility (0.1.0-rc.8 or 0.1.1-rc.2) is unchanged and no docs need updating.scripts/check-global-install.mjsplus a quality-job CI step that packs the tarball and installs it--globalinto a temp prefix, closing the local/global blind spot (as suggested in the issue).The widening alternative (relaxing
dsh-token-meterto^0.1.0-rc.8 || ^0.1.1-rc.2) also resolves the conflict, but it abandons the intentional paper pin and would ship a DSH line that the repo's own lockfile and CI never test, so this PR pins instead.Compatibility
peerDependenciesand their documented ranges are untouched.npm install --package-lock-onlymoves no resolved version across all 291 packages, andnpm ci --dry-runconfirms the lockfile is in sync on both npm 11 and npm 10 (CI's line).publish-npm.ymlskips already-published versions).Validation
Run on Windows 11 (Node 24.12.0, npm 11) against
dev:npm pack --ignore-scripts+npm install --global --prefix <tmp> --ignore-scripts <tarball>: fails before the dependency pin with the ERESOLVE above; passes after (55 packages, DSH graph resolves uniformly to 0.1.0-rc.8).npm install --global <tarball> agent-hitch@latest @deepseek-ai/dsh@latestresolves cleanly (672 packages, 0 ERESOLVE warnings).node scripts/check-global-install.mjs: fails pre-fix, passes post-fix — this is what CI now runs.npm run typecheck: pass../node_modules/.bin/eslint "src/{domain,ports,runtime,application,adapters,cli}/**/*.ts"(direct invocation; thenpm run lintscript's single-quoted glob is Windows-broken, unchanged here): 0 findings.npm install --package-lock-only --ignore-scriptsdiff verified: spec strings only, no resolved-version movement.Run with Windows-only pre-existing failures (identical on a clean
devcheckout, unrelated to this change, both green on ubuntu CI):check:boundaries(path-separator artifact in the checker itself) andcheck:contracts(CRLF artifact). Not run locally (Windows environment): the full vitest suite (its globalSetup spawnsnpmwithout a shell — Windows-incompatible, pre-existing and out of scope here) and the ubuntu/macOS matrix. CI runs the full regression suite on this PR.Credit: @yuesu0202's report and diagnosis (including the tested widening variant) made this fix quick to land.