fix: declare the tested minimum Pi version in peer dependencies - #15
Open
dajiaohuang wants to merge 1 commit into
Open
fix: declare the tested minimum Pi version in peer dependencies#15dajiaohuang wants to merge 1 commit into
dajiaohuang wants to merge 1 commit into
Conversation
The four Pi packages were declared as "*", so npm treated Pi 0.79.10 as a compatible install even though SoL-Pi cannot load against it: that release predates the `@earendil-works/pi-ai/compat` export and the `agent_settled` and `sessionEntryToContextMessages` APIs SoL-Pi imports. Set the declared floor to 0.81.1, the lowest release `docs/compatibility.md` already records as exercised, and mirror it in the lockfile root. Add metadata assertions so the range cannot drift below the documented floor and so the lockfile stays in step with the manifest.
gaoanze888
approved these changes
Sep 11, 2026
gaoanze888
left a comment
There was a problem hiding this comment.
Reviewed against the reproduction in #11. The metadata change is focused: the four shared-release Pi peers now use the documented, exercised 0.81.1 floor, with the lockfile and compatibility docs kept in sync. I ran npm run check locally: typecheck, 17 test files / 137 tests, and package dry-run all passed.
The added package-contract tests explain most of the diff and cover the important drift modes (wildcard ranges, package/lockfile mismatch, and the known-incompatible 0.79.10 boundary). I did not find a blocking correctness issue. Thanks for turning the issue into a well-scoped compatibility fix.
This was referenced Sep 12, 2026
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.
Summary
Fixes #11.
The four Pi packages were declared as
"*", so npm accepted Pi 0.79.10 even though SoL-Pi cannot load against it. That release predates the@earendil-works/pi-ai/compatexport and theagent_settledandsessionEntryToContextMessagesAPIs SoL-Pi imports.The declared floor is now 0.81.1, the lowest release
docs/compatibility.mdrecords as exercised, and the lockfile root mirrors it.typeboxis unchanged, and no Pi package, dependency, or runtime behavior changes.Regression coverage
Three assertions in
tests/package.test.tskeep the declared contract aligned:"*", and its floor equals the floor declared indocs/compatibility.md;Each was checked against a deliberate regression. Reverting the manifest ranges to
"*"fails all three; reverting only the lockfile entry fails the lockfile assertion, which is the drift this change also fixes.Validation
node scripts/check-pi-compat.mjsandimport('./src/sol-pi/index.ts')both fail withERR_PACKAGE_PATH_NOT_EXPORTEDfor@earendil-works/pi-ai/compat. Pi 0.81.1 passes both.*accepts 0.79.10;>=0.81.1rejects it and still accepts 0.81.1 and 0.84.2.npm run typecheck: passed.npx vitest run tests/package.test.ts -t "declared Pi compatibility": passed, 3 tests.npm packcases that need a POSIXnpmshim, two symlink cases, and one reducer case — so none are regressions.npm run checktherefore does not complete on this Windows host; the pack cases are expected to pass in CI.node scripts/check-pi-compat.mjs: passed.npm ci --ignore-scripts --dry-run: passed.npm audit --audit-level=high: passed; the two moderate Vitest advisories are unchanged.Tested with Node 24.14.1 and Pi 0.84.2.