feat(ai): add Wafer Pass and Wafer Serverless providers
Wafer (https://wafer.ai) exposes a single OpenAI-compatible endpoint
(https://pass.wafer.ai/v1) for two SKUs whose entitlement differs
server-side, so we model them as two parallel providers — mirroring the
firepass/fireworks split so a user with both subscriptions can switch
without re-pasting:
- wafer-pass — flat-rate. /v1/models is filtered to entries whose
wafer.tier === "pass_included".
- wafer-serverless — pay-as-you-go superset of Pass.
Both issue wfr_… keys. /login wafer-pass and /login wafer-serverless
paste-and-validate via /v1/models. WAFER_PASS_API_KEY and
WAFER_SERVERLESS_API_KEY are wired through getEnvApiKey.
Bundled catalog:
- wafer-pass: GLM-5.1, Qwen3.5-397B-A17B.
- wafer-serverless: GLM-5.1, Qwen3.5-397B-A17B, Kimi-K2.6, Qwen3.6-35B-A3B.
Dynamic discovery via /v1/models overlays additional models at runtime
and folds the wafer envelope (tier, capabilities, cents/M pricing) into
the canonical Model<"openai-completions"> shape. GLM-family entries
carry the zai-style thinking compat (thinkingFormat: "zai",
reasoningContentField: "reasoning_content") so reasoning tokens land in
the right field. Cents-per-million → dollars-per-million via /100.
Tests (packages/ai/test/wafer.test.ts, 5 cases): bundled catalog
contract for both providers and wire-id pass-through (case-sensitive,
no rewrite — GLM-5.1 must round-trip verbatim or upstream 404s).
Optional packages/ai/test/wafer.live.ts exercises a real round-trip
against pass.wafer.ai when WAFER_PASS_API_KEY is set.