Replace the previous implementation with one that registers the Provider API
catalog through pi's own provider layer instead of shipping a custom transport,
cache file, and hand-maintained pricing table.
- models: derive the catalog from the published command-code CLI package
(context windows, reasoning efforts, image input, output limits, rates) and
keep it as the offline baseline; scripts/sync-catalog.mjs regenerates it and
supports --check
- refresh: use refreshModels plus context.publish so pi persists the live
/provider/v1/models listing in models-store.json and restores it offline
- auth: /login browser transfer through a localhost callback server with a
pasted-key fallback; $COMMAND_CODE_API_KEY, --api-key and auth.json keep
working
- streaming: pi's native openai-completions and anthropic-messages adapters;
the generate-transport fallback and Oh My Pi branches are gone
- keep the context-overflow rewrite that enables pi's compaction retry and the
/commandcode-quota command
- tests: 51 cases under tests/<module>/ covering models, catalog sync, auth,
the callback server, overflow handling, quota, and the extension factory
Verified against the live API: chat, tool round trip, image input and
--thinking max on deepseek/deepseek-v4.1-flash, quota output, and catalog
persistence in an interactive session.