Problem
The Pi community provider pins @earendil-works/pi-ai and @earendil-works/pi-coding-agent at ^0.79.1 in packages/providers/package.json, which caret-locks to <0.80.0.
Pi 0.80.0 moved its global API (stream/complete/getModel/…) off the package root to the @earendil-works/pi-ai/compat subpath. Current Pi extensions (e.g. pi-web-access, pi-mcp-adapter) import from @earendil-works/pi-ai/compat, which does not exist in 0.79.1 — so they fail to load under Archon:
Failed to load extension: Cannot find module '.../@earendil-works/pi-ai/dist/index.js/compat'
- Who: anyone self-hosting Archon with the Pi provider who wants the current Pi extension ecosystem (web search, MCP bridge, code intelligence, …).
- How often: every current-gen extension that targets pi ≥ 0.80 — i.e. most of the actively-maintained ecosystem.
A package.json exports shim on the 0.79.1 install does not help: Pi's extension loader aliases @earendil-works/pi-ai to the resolved main file and appends the subpath, bypassing the exports map.
This looks like version lag rather than a deliberate hold: the ^0.79.1 pin was set on 2026-06-11 (commit b896bcc43, PR #1958) during a multi-SDK refresh — before pi 0.80.0 existed (2026-06-23) — and Release 0.5.0 (2026-06-26) didn't re-bump. I couldn't find any issue/PR/comment indicating an intentional hold at 0.79.
Proposed Solution
Bump the bundled Pi to 0.80.x (currently 0.80.3) for both @earendil-works/pi-ai and @earendil-works/pi-coding-agent in packages/providers/package.json.
User Flow
Before (current)
pi install npm:pi-web-access
→ extension fails to load [!]
→ "Cannot find module '@earendil-works/pi-ai/dist/index.js/compat'"
After (proposed)
pi install npm:pi-web-access
→ loads [+]
→ web_search returns real, sourced results
Alternatives Considered
| Alternative |
Pros |
Cons |
Why not chosen |
Pin extensions to pre-/compat versions |
no Archon change |
fragile, per-extension, misses current features/fixes |
doesn't scale |
exports shim on 0.79.1 pi-ai |
no version bump |
loader aliases pi-ai to the main file and appends the subpath, bypassing exports |
technically ineffective |
| Bump bundled Pi to 0.80.x |
unblocks the whole extension ecosystem |
small maintenance bump |
chosen |
Scope
- Package(s) likely affected:
adapters (packages/providers)
- Breaking change? No — verified below.
- Database changes needed? No
- New external dependencies? No (version bump of existing deps)
Security Considerations
- New permissions/capabilities? No
- New external network calls? No
- Secrets/tokens handling? No
Verification (I tested a forced bump to 0.80.3 + rebuild)
- Every runtime symbol the Pi provider imports still exists unchanged in 0.80.x:
createAgentSession, DefaultResourceLoader, getAgentDir, ModelRegistry, SessionManager, AuthStorage, SettingsManager, defineTool (from @earendil-works/pi-coding-agent root) and the OAuth helpers from @earendil-works/pi-ai/oauth.
- The image build does not run
scripts/generate-pi-vendor-map.ts (it uses the committed pi-vendor-map.generated.ts), so the internals-scraper doesn't break the build.
- Custom providers via
models.json still load (a custom OpenRouter provider kept working).
- After the bump,
/compat-importing extensions (pi-web-access, pi-mcp-adapter) load and run — web_search returns real results and the MCP proxy exposes remote MCP tools.
Happy to open a PR for the pin bump if that's useful.
Environment: Archon dev @ 59bbd00b (Release 0.5.0), docker compose --profile cloud --profile with-db; Pi provider with enableExtensions default on.
Problem
The Pi community provider pins
@earendil-works/pi-aiand@earendil-works/pi-coding-agentat^0.79.1inpackages/providers/package.json, which caret-locks to<0.80.0.Pi 0.80.0 moved its global API (
stream/complete/getModel/…) off the package root to the@earendil-works/pi-ai/compatsubpath. Current Pi extensions (e.g.pi-web-access,pi-mcp-adapter) import from@earendil-works/pi-ai/compat, which does not exist in 0.79.1 — so they fail to load under Archon:A
package.jsonexportsshim on the 0.79.1 install does not help: Pi's extension loader aliases@earendil-works/pi-aito the resolved main file and appends the subpath, bypassing theexportsmap.This looks like version lag rather than a deliberate hold: the
^0.79.1pin was set on 2026-06-11 (commitb896bcc43, PR #1958) during a multi-SDK refresh — before pi 0.80.0 existed (2026-06-23) — and Release 0.5.0 (2026-06-26) didn't re-bump. I couldn't find any issue/PR/comment indicating an intentional hold at 0.79.Proposed Solution
Bump the bundled Pi to 0.80.x (currently
0.80.3) for both@earendil-works/pi-aiand@earendil-works/pi-coding-agentinpackages/providers/package.json.User Flow
Before (current)
After (proposed)
Alternatives Considered
/compatversionsexportsshim on 0.79.1 pi-aiexportsScope
adapters(packages/providers)Security Considerations
Verification (I tested a forced bump to 0.80.3 + rebuild)
createAgentSession,DefaultResourceLoader,getAgentDir,ModelRegistry,SessionManager,AuthStorage,SettingsManager,defineTool(from@earendil-works/pi-coding-agentroot) and the OAuth helpers from@earendil-works/pi-ai/oauth.scripts/generate-pi-vendor-map.ts(it uses the committedpi-vendor-map.generated.ts), so the internals-scraper doesn't break the build.models.jsonstill load (a custom OpenRouter provider kept working)./compat-importing extensions (pi-web-access,pi-mcp-adapter) load and run —web_searchreturns real results and the MCP proxy exposes remote MCP tools.Happy to open a PR for the pin bump if that's useful.
Environment: Archon
dev@59bbd00b(Release 0.5.0),docker compose --profile cloud --profile with-db; Pi provider withenableExtensionsdefault on.