Files
Kevin CodexandClaude Opus 5.5 ab0ca13aa3 feat(opengateway): live model list, Twigpine OpenGateway name, api.twigpine.com (#2488)
* feat(opengateway): live model list, Twigpine OpenGateway name, api.twigpine.com

The gateway now lists only active models at GET /v1/models and is
about to retire old ones, so the picker follows the live list instead
of a hand-kept catalog.

- Rename the route to "Twigpine OpenGateway"; keys move to
  https://twigpine.com/console/gateway/keys.
- Default address https://api.twigpine.com/v1 and default model
  mimo-v2.6-pro. opengateway.gitlawb.com and opengateway.fly.dev still
  route to the gateway (base URL matching and /v1/xiaomi-mimo path
  normalization accept all three hosts).
- Replace the stale curated catalog (MiMo V2.5, Gemini, Qwen 3.7, GLM,
  Nemotron, Ling, Macaron, HY3) with an offline floor: auto, MiMo V2.6
  Pro and MiMo V2.6 Flash. Every other live model is appended from
  discovery.
- mapOpenGatewayModel skips entries with status "retired".
- Map the live z-ai/glm-5.2 id onto the shared glm-5.2 descriptor
  (providerModelMap) so GLM 5.2 through the gateway stays text-only
  for the vision gate after its curated entry is gone. GLM requests
  keep the name-inferred Z.AI shim on top of the gateway contract.
- Provider id gitlawb-opengateway and the credential env vars are
  unchanged, so saved profiles keep working.
- Update fresh-install, --provider and auto-detect fallbacks, the
  generated manifest, README, advanced-setup and web provider data.

* docs(opengateway): describe the cached model list and drop stale model notes

Address CodeRabbit review on #2488:

- advanced-setup and README no longer promise that retired models drop out
  of /model on their own. The picker reads a one-day cache that is refreshed
  at startup once it expires or on demand with `r`; a failed refresh keeps
  the last cached list, and the auto / mimo-v2.6-pro / mimo-v2.6-flash floor
  is always listed.
- The web provider notes drop the stale free-model list (Nemotron 3 Ultra,
  Ling 3.0 Flash, Tencent HY3) and point at the live /v1/models catalog for
  current models and pricing.
- Add docstrings to the gateway URL normalizers, detectBestProvider and
  buildStartupEnvFromProfile, which this PR touches.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* test(opengateway): pin failed-refresh model list behaviour; fix web naming

Address CodeRabbit re-review on #2488:

- web env var descriptions use "Twigpine OpenGateway" consistently, and
  OPENGATEWAY_BASE_URL names its https://api.twigpine.com/v1 default.
- The cache wording in advanced-setup and README now matches the code: a
  failed startup refresh keeps the last cached list, while a manual `r`
  refresh clears the cache first, so a failed one leaves only the offline
  floor.
- discoveryService: a failed OpenGateway refresh keeps the floor when
  nothing was fetched and keeps the last cached live list after an
  earlier success.
- /model: after a failed refresh the picker shows the cached list plus
  the floor, the "Showing cached ... Last refresh failed" warning, and the
  refresh action. mockDescriptorDiscovery gains an optional cachedError.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* docs(opengateway): describe the offline models as the catalog floor

Address CodeRabbit review of 67350553 on #2488: auto, mimo-v2.6-pro and
mimo-v2.6-flash are the route's catalog floor, not guaranteed picker
entries. A saved profile's own model list or an `availableModels`
allowlist can still narrow what /model shows.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* docs(readme): point OpenGateway refresh details at advanced-setup

Address CodeRabbit review of 2818de02 on #2488. The README summary kept
dropping one refresh case (startup vs manual `r`, the floor, profile and
allowlist narrowing), so it no longer restates the cache behaviour.
It names the cached live list and the catalog floor and links to the
advanced-setup section, which documents each case.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-11-09 13:31:46 +08:00
..