Skip to content

fix(meta): support pi 0.85 (peer range + 0.85.1 devDeps + legacy-shape test casts) - #18

Merged
BlockedPath merged 1 commit into
BlockedPath:mainfrom
antonioc-cl:fix/pi-0.85-peer-range
Sep 18, 2026
Merged

BlockedPath merged 1 commit into
BlockedPath:mainfrom
antonioc-cl:fix/pi-0.85-peer-range

Conversation

@antonioc-cl

@antonioc-cl antonioc-cl commented Sep 16, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #17

Scope

Compatibility-only update, rebased on current main including #13:

  • Widen both Pi peer ranges to >=0.83.0 <0.86.0.
  • Use Pi 0.85.1 development dependencies.
  • Cast the four legacy Pi 0.83 store-shape test fixtures through unknown, preserving their runtime coverage alongside stored/publish coverage.

No provider runtime or prompt-cache behavior changes are included. The encrypted-reasoning probe commits have been preserved separately on deferred/meta-encrypted-reasoning-probe for a draft follow-up addressing the review findings.

Verification

At commit 075a03e0b476778461bd3610b97f10592450c54e:

  • Pi 0.85.1: bun run typecheck passes; bun test: 31 pass, 2 live tests skipped, 0 fail.
  • Pi 0.83.0: bun run typecheck passes; bun test: 31 pass, 2 live tests skipped, 0 fail.
  • Tests ran with an empty HOME and cleared environment, so no live credentials were resolved and no billable probes ran.
  • Both catalog refresh-context shapes and feat: expose max reasoning effort on muse-spark-1.3 #13's max-effort support remain covered.

@coderabbitai

coderabbitai Bot commented Sep 16, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: c0370cb7-fb64-4b4a-9c39-65002af1153e

📥 Commits

Reviewing files that changed from the base of the PR and between 05ca208 and 5db8719.

📒 Files selected for processing (2)
  • package.json
  • tests/meta.test.ts

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The package now supports pi versions from 0.83.0 through 0.85.x. Development dependencies use 0.85.1. Four test fixtures use casts compatible with the updated RefreshModelsContext type.

Changes

Pi 0.85 compatibility

Layer / File(s) Summary
Dependency compatibility
package.json
Peer dependency ranges now allow versions below 0.86.0. Development dependencies now use version 0.85.1.
Test fixture type compatibility
tests/meta.test.ts
Four refresh model test contexts now cast through unknown to RefreshModelsContext. Runtime behavior and assertions are unchanged.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Medium

Suggested reviewers: blockedpath

Merge Risk: ⚪ Minimal · up to 5db87

The Pi 0.85 compatibility update preserves the supported runtime paths and introduces no established merge-blocking risk.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Issue #17 requires pi 0.85.x installation support, validation against pi 0.85.1, compilation of legacy fixtures, and dual-shape runtime coverage. package.json declares both peer ranges as `>=0.83.0 …
Out of Scope Changes check ✅ Passed The changed files are package.json and tests/meta.test.ts. The dependency updates directly implement issue #17. The fixture casts resolve the pi 0.85 type mismatch and preserve legacy runtime cove…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change: support for pi 0.85 through peer dependency updates, development dependency updates, and legacy-shape test casts.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@socket-security

socket-security Bot commented Sep 16, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatednpm/​@​earendil-works/​pi-coding-agent@​0.84.4 ⏵ 0.85.165100100 +197 -1100
Updatednpm/​@​earendil-works/​pi-ai@​0.84.4 ⏵ 0.85.1100 +1100100 +197 -1100

View full report

RarogCmex added a commit to RarogCmex/pi-meta that referenced this pull request Sep 17, 2026
Apply upstream BlockedPath#18:
- widen peer range to >=0.83.0 <0.86.0; bump devDeps to 0.85.1
- cast legacy 0.83-shape refresh fixtures as unknown as RefreshModelsContext
- probe reasoning.encrypted_content entitlement once per key per process
  (~16-token /v1/responses call); strip the include for unentitled keys so
  requests never 400, re-probe transient failures after a 5-minute cooldown
- before_provider_request hook is now async and resolves the active key
  through ctx.modelRegistry.getProviderAuth

@BlockedPath BlockedPath left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Pi 0.85 peer-range and legacy fixture changes look sound. At this head, typechecking and hermetic tests passed (35 passed, 2 live tests skipped). However, the added encrypted-reasoning probe changes runtime behavior beyond the compatibility update and need the fixes below. Prefer splitting the probe work into a separate PR so the compatibility update can land independently, or fix it here with hook-level and multi-turn regression coverage. Please also rebase on main and preserve the max-effort support now merged in #13. Findings below were reproduced with mocked requests; no live or billable Meta requests were made.

Comment thread extensions/meta.ts Outdated
// probeEncryptedReasoningEntitlement). Other include entries survive.
if (!keepEncryptedReasoning && Array.isArray(body.include)) {
const include = body.include.filter(
(item) => item !== "reasoning.encrypted_content",

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Handle encrypted reasoning replay, not just the output include. When keepEncryptedReasoning is false, this only removes include; Pi still serializes historical thinkingSignature items into input with their encrypted_content intact. A mocked multi-turn wire reproduction confirms that ciphertext from the previous caller remains in the outgoing request after this helper runs. Resuming a session under a caller that cannot replay that ciphertext is therefore not protected by this mitigation. Add safe handling for incompatible historical reasoning items and a regression test that includes assistant history, while preserving ordinary messages and tool calls.

Comment thread extensions/meta.ts Outdated
) {
return;
}
if (Date.now() - entitlementCache.lastAttemptAt < PROBE_RETRY_MS) return;

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Scope the retry cooldown to the key being probed. lastAttemptAt is global: after a successful probe for key A, switching to key B within five minutes returns here without ever probing B. keepEncryptedReasoningFor(B) then returns false and strips the include throughout that window, even if B is entitled. This was reproduced with the registered hook and a mocked successful probe: switching to B left the probe count at one. Keep attempt timestamps and results per key (or reset the cooldown on a key change), and test immediate key rotation as well as transient retries.

….85.1

RefreshModelsContext dropped the 0.83 store read/write pair in pi 0.84 in
favor of immutable stored snapshots plus generation-checked publish, and
pi 0.85 keeps that shape. The extension's runtime probing already handles
both, but the peer range (<0.85.0) rejected pi 0.85 installs and the test
suite couldn't verify them.

- Widen peerDependencies to <0.86.0
- Bump devDependencies to 0.85.1 so CI typechecks+test against current pi
- Cast the four legacy store-shape fixtures (as already done for the
  0.84 shape) so dual-shape runtime coverage is preserved
@BlockedPath
BlockedPath force-pushed the fix/pi-0.85-peer-range branch from af5a9c3 to 075a03e Compare September 18, 2026 17:46

@BlockedPath BlockedPath left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed the compatibility-only revision at 075a03e. The probe changes and associated findings have been moved out of this PR; only package.json and four legacy fixture casts remain. Rebased on current main with #13 preserved. Typecheck and 31 hermetic tests pass on both Pi 0.83.0 and 0.85.1 (2 live tests skipped in each run). GitHub Typecheck and test CI also passes. Approving this narrowed scope; the deferred probe work is not approved.

@BlockedPath
BlockedPath merged commit fd9d4ea into BlockedPath:main Sep 18, 2026
7 of 9 checks passed
@BlockedPath

Copy link
Copy Markdown
Owner

Merged the compatibility-only revision after rebasing onto main, successful local validation on Pi 0.83.0 and 0.85.1, and green GitHub CI. The three removed encrypted-reasoning commits are preserved with original authorship in draft #19; its review findings remain open there. Thanks for the compatibility fix!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

peerDependencies reject pi 0.85.x, which this extension already supports

2 participants