BYOK: populate the /model picker from the provider's /models endpoint
- Lenguaje dominante
- Shell
- Estrellas
- 11.2k
- Forks
- 1.9k
- Merge medio
- 14 h 16 min
- PR fusionados (30 d)
- 6
Descripción
## Problem
When the CLI runs against a custom provider (`COPILOT_PROVIDER_BASE_URL`), exactly one model can be configured (`COPILOT_MODEL` / `COPILOT_PROVIDER_MODEL_ID`). In-session, `/models` shows only that single configured model — there is no way to browse or switch models without quitting and relaunching with `--model` (which must be guessed, since nothing lists what the provider serves).
## Request
For `COPILOT_PROVIDER_TYPE=openai` (and `azure`), populate the model picker from the provider's standard OpenAI-compatible catalog endpoint:
```
GET {COPILOT_PROVIDER_BASE_URL}/models
```
- Fall back silently to today's single-model behavior when the endpoint 404s or errors.
- `data[].id` is enough for a useful picker; if present, `capabilities.limits` / `supported_endpoints` style metadata could fill the Context column the way the native picker does.
A lighter-weight alternative (or complement): a `COPILOT_PROVIDER_MODELS` env var accepting a comma-separated id list, for providers whose catalog endpoint can't be reached at startup.
## Why it matters
Practically every OpenAI-compatible backend already serves `/models` — Ollama, vLLM, LiteLLM, Azure, and enterprise LLM gateways. We operate such a gateway: it fronts the Copilot API itself (billing stays on the user's Copilot seat) and serves `GET /models` with exactly the models the seat's plan/org policy allows — but the CLI never asks, so enrolled users see a one-entry picker and file "the CLI is broken" reports, while the native CLI right next to it shows the full list.
Observed on v1.0.77 and v1.0.78 (linux-x64 and darwin-arm64).
Guía de contribución
Línea de trabajo
Rastrea el selector /models de la CLI y la configuración de proveedores personalizados para encontrar dónde se ensambla la lista actual de un solo modelo. Empieza comprobando las rutas de los proveedores OpenAI y Azure y su gestión de errores existente. Se considera terminado cuando una respuesta exitosa de /models proporciona IDs de modelos, mientras que los 404 u otros errores conservan el comportamiento actual de un solo modelo; los metadatos opcionales y la alternativa mediante variables de entorno siguen siendo decisiones de diseño.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- shell
- Área
- api, cli
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 52/100