You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Update pi (Pi Coding Agent) integration — npm package deprecated, moved to new org #3169
The product is still alive under the new org, so this is an update, not a removal: repoint `install_url` (and any package references) to `@earendil-works/pi-coding-agent`.
The pi integration (src/specify_cli/integrations/pi/) hard-codes install_url to the mariozechner/pi-coding-agent npm package (old org). That package carries an explicit deprecation notice redirecting users to earendil-works/pi-coding-agent. The upstream source repository has also moved to the earendil-works GitHub org. The product is still actively maintained; only the org/scope changed.
Symptom
When a user runs specify init --integration pi and the pi CLI is not found on PATH, the error panel displays the stale install URL. Additionally, the devcontainer setup script (post-create.sh) installs the deprecated package, directing contributors to the old version.
Open src/specify_cli/integrations/pi/__init__.py — config["install_url"] references the old mariozechner npm scope.
Open .devcontainer/post-create.sh:59 — the npm install -g line also references the old scope.
Visit `(www.npmjs.com/redacted) to confirm the deprecation notice on the published page.
Suspected Code Paths
src/specify_cli/integrations/pi/__init__.py:12 — install_url is set to the deprecated npm URL; surfaced to users by src/specify_cli/commands/init.py:330 when the pi CLI binary is not found.
.devcontainer/post-create.sh:59 — installs the deprecated package in the devcontainer; must be updated alongside the integration class.
src/specify_cli/commands/init.py:326–330 — displays install_url in the error panel at runtime; no logic change needed here, only the data it reads.
Root Cause Hypothesis
The Pi Coding Agent npm package migrated from the mariozechner scope to earendil-works. The two stale string literals (install_url constant and devcontainer install command) were never updated to follow that migration. Confidence: high — the deprecation notice on the old package is explicit and unambiguous.
Proposed Remediation
Preferred: Update both stale references:
src/specify_cli/integrations/pi/__init__.py — change install_url from (www.npmjs.com/redacted) to (www.npmjs.com/redacted)
.devcontainer/post-create.sh:59 — change the npm install -g argument from the old scoped package name (mariozechner/pi-coding-agent) to earendil-works/pi-coding-agent@latest.
Files likely to change:
src/specify_cli/integrations/pi/__init__.py
.devcontainer/post-create.sh
Tests to add or update:
tests/test_agent_config_consistency.py:278 — currently asserts install_url is not None; adding an exact-URL assertion would prevent future silent drift of this metadata field.
Risks & Considerations
No API breakage — install_url is display-only metadata; changing it has no effect on integration logic, file generation, or the extension registrar.
Devcontainer rebuild required — contributors need to rebuild or re-run post-create.sh for the updated package to take effect. The old deprecated package still installs from the npm registry (deprecated does not mean unpublished), so existing devcontainers continue to work until rebuilt.
CLI binary name — key = "pi" with requires_cli = True depends on the installed binary being named pi. The new package should install the same binary name, but this should be confirmed against the earendil-works/pi repo before merging.
Open Questions
[NEEDS CLARIFICATION: Does earendil-works/pi-coding-agent still install a binary named pi? If the executable was renamed, key = "pi" in the integration class would also need updating to keep shutil.which(key) working correctly.]
Posted by GitHub Copilot (model: claude-sonnet-4.6, autonomous)
Activity
github-actions commentedon Jun 25, 2026
Bug assessment — pi-install-url-deprecated: Valid · severity low
Bug Assessment: Pi Coding Agent — npm package deprecated, moved to new org
pi-install-url-deprecatedpi(Pi Coding Agent) integration — npm package deprecated, moved to new org #3169Report (summarized)
The
piintegration (src/specify_cli/integrations/pi/) hard-codesinstall_urlto themariozechner/pi-coding-agentnpm package (old org). That package carries an explicit deprecation notice redirecting users toearendil-works/pi-coding-agent. The upstream source repository has also moved to theearendil-worksGitHub org. The product is still actively maintained; only the org/scope changed.Symptom
When a user runs
specify init --integration piand thepiCLI is not found on PATH, the error panel displays the stale install URL. Additionally, the devcontainer setup script (post-create.sh) installs the deprecated package, directing contributors to the old version.Expected: both surfaces point to `(www.npmjs.com/redacted)
Reproduction
src/specify_cli/integrations/pi/__init__.py—config["install_url"]references the oldmariozechnernpm scope..devcontainer/post-create.sh:59— thenpm install -gline also references the old scope.Suspected Code Paths
src/specify_cli/integrations/pi/__init__.py:12—install_urlis set to the deprecated npm URL; surfaced to users bysrc/specify_cli/commands/init.py:330when thepiCLI binary is not found..devcontainer/post-create.sh:59— installs the deprecated package in the devcontainer; must be updated alongside the integration class.src/specify_cli/commands/init.py:326–330— displaysinstall_urlin the error panel at runtime; no logic change needed here, only the data it reads.Root Cause Hypothesis
The Pi Coding Agent npm package migrated from the
mariozechnerscope toearendil-works. The two stale string literals (install_urlconstant and devcontainer install command) were never updated to follow that migration. Confidence: high — the deprecation notice on the old package is explicit and unambiguous.Proposed Remediation
Preferred: Update both stale references:
src/specify_cli/integrations/pi/__init__.py— changeinstall_urlfrom(www.npmjs.com/redacted) to(www.npmjs.com/redacted).devcontainer/post-create.sh:59— change thenpm install -gargument from the old scoped package name (mariozechner/pi-coding-agent) toearendil-works/pi-coding-agent@latest.Files likely to change:
src/specify_cli/integrations/pi/__init__.py.devcontainer/post-create.shTests to add or update:
tests/test_agent_config_consistency.py:278— currently assertsinstall_url is not None; adding an exact-URL assertion would prevent future silent drift of this metadata field.Risks & Considerations
install_urlis display-only metadata; changing it has no effect on integration logic, file generation, or the extension registrar.post-create.shfor the updated package to take effect. The old deprecated package still installs from the npm registry (deprecated does not mean unpublished), so existing devcontainers continue to work until rebuilt.key = "pi"withrequires_cli = Truedepends on the installed binary being namedpi. The new package should install the same binary name, but this should be confirmed against theearendil-works/pirepo before merging.Open Questions
earendil-works/pi-coding-agentstill install a binary namedpi? If the executable was renamed,key = "pi"in the integration class would also need updating to keepshutil.which(key)working correctly.]Posted by GitHub Copilot (model: claude-sonnet-4.6, autonomous)
fix(pi): repoint install_url to @earendil-works/pi-coding-agent (#3169)
fix(pi): repoint install_url to @earendil-works/pi-coding-agent (#3169)
fix(pi): repoint install_url to @earendil-works/pi-coding-agent (#3169)…