Add the free minimax/minimax-m3-free and minimax/minimax-m2.7-free
promotional variants (free through September 5, 2026) and
tencent/hy4-preview, drop the retired stealth/ox-alpha, and refresh the
model-id and pricing snapshots to the current 62-model catalog verified
on 2026-08-28.
Qwen/Qwen3.8-Flash lists $0.16 input, $0.47 output, and $0.016 cache read
per million tokens, and z-ai/glm-5.3-flash lists $0.15, $0.50, and $0.03;
the official pricing page documents no cache-write rate for either model.
Synchronize the static model catalog with command-code@1.36.0, which adds
Qwen/Qwen3.8-Flash (reasoning efforts low, medium, xhigh) and
z-ai/glm-5.3-flash (low, high, max), the free minimax/minimax-m3-free
model, and the glm-5.3-flash output limit, and drops the retired
stealth/ox-alpha.
Align the developer-message fix with the Provider API transport router.
The fix stays scoped to the legacy /alpha/generate converter, and the
OMP advisory compat test now forces the upgrade_required fallback so the
advisory is asserted on the generate request body.
deepseek/deepseek-v4-flash-vision-exp is served by the Provider API but was
missing from the hardcoded MODEL_INPUT_MODALITIES allowlist, so pi rejected
any conversation containing an image block. Notably this also rejected images
returned by the read tool via toolResult:
Error: Selected Command Code model does not support image content in tool results
Adding the allowlist entry lets modelSupportsImageInput() return true and the
converters forward images using the current Command Code wire format.
Coverage:
- regression test for modelSupportsImageInput("deepseek/deepseek-v4-flash-vision-exp")
- end-to-end stream test for a tool-result image forwarded as a following user
image (the concrete read reproduction), not only a user-attached image
- end-to-end stream test asserting a text-only model still rejects tool-result
images before any network access
Refs: https://github.com/patlux/pi-commandcode-provider/issues/54
Fetches live account quota from Command Code alpha usage endpoints
(whoami, billing/credits, billing/subscriptions, usage/summary) and
renders a plain-text dashboard via ui.notify.
- Graceful degradation: optional endpoint transport/timeout/parse
failures degrade to null sections instead of aborting; only 401/403
are hard failures. 429 is transient, not fatal.
- Overall deadline bounds the whole command to QUOTA_TIMEOUT_MS
(per-request controllers are chained; post-deadline phases fail fast).
- OMP auth: filter unresolved $COMMANDCODE_API_KEY placeholder and fall
back to the host resolver via pickCommandCodeApiKey.
- ZDR privacy header respected on quota requests.
- Redaction reuses redactCommandCodeErrorText plus JSON-quoted
credential fields; outer-catch errors are redacted too.
- resetAt parsed from seconds, ms, numeric string, or ISO string.
- 21 hermetic unit tests wired into npm test (test:quota).
omp 17.4.0's host registry rejects registerCustomApi calls under
built-in api names ("Cannot register custom API '<name>': built-in
API names are reserved"). The provider and its models registered
under "openai-completions", so the extension failed to load.
Register under "commandcode-custom" instead (matches the published
npm build) and restore the real wire api via apiForModelId before
dispatching to the native compat stream inside the transport router.
The host's model registry also stores provider-supplied compat under
model.compatConfig internally, only copying it back to model.compat
inside its own dispatch-time patches. Since the transport router calls
the native compat stream directly, it must read compatConfig itself or
requests crash with 'baseCompat is undefined' before any network call.
Verified against a local mock Provider API server with the extension
linked into omp 17.4.0: model discovery lists all Command Code models,
and a streamed chat completion sends the resolved x-cmd-zdr header and
Authorization header end to end.