SIGN IN SIGN UP

feat(proxy): live model discovery for openai-compatible accounts

Mirrors the existing Codex model-catalog pattern for openai-compatible
accounts: fetches GET {endpoint}/v1/models with the account's API key,
caches the last-good listing, and derives fable/opus/sonnet/haiku
defaults in-memory. Unlike Codex, listings are never borrowed between
accounts since each openai-compatible endpoint is arbitrary and
operator-chosen, not a shared upstream.

Wired lazily on first proxied request (proxy-operations.ts) and
on-demand via GET /api/models?provider=openai-compatible&accountId=X
(models.ts), so the dashboard's existing-account model editor picks it
up automatically through the already-generic useProviderModels hook.

Also clears the new cache on account removal (accounts.ts), matching
the existing Codex cache cleanup.

Resolves item 2 of #434.
T
tombii committed
a84d48f45652241e25acef10723262ec07971a91
Parent: 8c03e30