This is a downstream distribution fork of earendil-works/pi.
It tracks upstream main with a minimal downstream patch stack.
Warning
This fork relies heavily on vibe coding. Logic changes are manually reviewed, and tests are also written by AI under human direction before the full test gate is run.
Almost none of the code in this fork is handwritten by xz-dev. Do not use this distribution if you are uncomfortable with AI-assisted development.
- Durable hibernation lets Pi quiesce and persist the current logical work graph, exit, and restore it with
/resume; ordinary/pauseremains process-local.- Patch branch:
patch/hibernate-resume
- Patch branch:
- earendil-works/pi#6234: make Esc abort recover from lifecycle hooks, extension hooks, provider setup, provider streams, or listener dispatch that never settle.
- Patch branch:
patch/esc-abort
- Patch branch:
- Keep TUI hardware cursor positioning and visibility inside DECSET 2026 synchronized-output frames, preventing transient cursor jumps over slow terminals or SSH connections.
- Patch branch:
patch/tui-synchronized-cursor
- Patch branch:
- Support per-package Skill visibility overrides through
skillOverrides.<name>.disableModelInvocation, retaining manual/skill:<name>invocation and project-over-global precedence.- Patch branch:
patch/skill-overrides
- Patch branch:
- Keep the fork/pre-release changelog baseline, display, and version handling correct across downstream release cycles.
- Patch branch:
patch/changelog-prerelease
- Patch branch:
- Carry current security updates in the dependency lockfiles, validated by production and full dependency audits.
- Patch branch:
patch/dependency-audit
- Patch branch:
Provider-transparent compaction keeps one portable session history across providers while allowing compatible providers to resume from private checkpoints.This feature is retired and explicitly unsupported.- Archived branch:
retired/provider-transparent-compaction - Responses API compaction does not reduce API charges: compacted or provider-held context remains billable. It also makes the client-visible state machine opaque, and that hidden state can amplify charges in some cases through unexpected context retention, replay, or repeated compaction.
- Archived branch:
These branches contain only temporary integration compatibility for the named patch combinations:
- Compose durable hibernation with the Esc-abort lifecycle fix.
- Compatibility branch:
tmp/patch/hibernate-esc-abort - Retire when hibernation and Esc abort merge upstream or no longer require downstream composition.
- Compatibility branch:
- Keep the hibernation integration fixture compatible with synchronized-cursor rendering.
- Compatibility branch:
tmp/patch/hibernate-cursor-fixture - Retire when either patch lands upstream or their combined fixture no longer differs from upstream.
- Compatibility branch:
GitHub Packages requires authentication for npm installs, including public packages. Create a GitHub classic token with read:packages, then log in:
npm login --scope=@xz-dev --auth-type=legacy --registry=https://npm.pkg.github.comInstall from GitHub Packages:
npm config set @xz-dev:registry https://npm.pkg.github.com
npm install -g @xz-dev/pi-coding-agent
pi --versionNote
npm 12 disables remote tarball dependencies by default. This distribution uses GitHub Packages tarball URLs for its workspace packages, so installation or pi update may fail with EALLOWREMOTE and Fetching packages of type "remote" have been disabled. Enable them for your user configuration, then retry:
npm config set allow-remote=all --location=user
pi update
pi update --extensionsTwice daily, Upstream Sync rebuilds main from the latest https://github.com/earendil-works/pi.git main, then integrates the maintenance overlay, feature and fix branches, and temporary compatibility branches in a fixed order:
- 01:28 Asia/Shanghai
- 13:28 Asia/Shanghai
Before a lease-protected update of main, the workflow installs dependencies, hydrates model data, builds, checks, runs focused integration regressions, audits production and development dependencies, and verifies production dependency signatures. Conflicts, empty integrations, failed gates, or a changed remote lease leave main unchanged. A successful push triggers the full CI, Esc Abort Integration, and Publish GitHub Packages workflows for the rebuilt commit.