feat: add governed BYOK model routing
From the PR description
Resumen
Implementa la primera vertical de BYOK gobernado:
- cifra credenciales personales con AES-256-GCM y expone sólo referencias versionadas;
- agrega catálogo de rutas autorizado para OpenAI, Anthropic, Gemini, OpenRouter, DeepSeek y OpenCode Zen/Go;
- fija proveedor, modelo y referencia de credencial al crear cada conversación;
- impide sustituir la ruta en turnos posteriores de chats generales y de proyecto;
- falla antes de escribir mensajes o iniciar SSE cuando la credencial exacta no está disponible;
- reemplaza el selector libre por selección explícita al crear y ruta bloqueada después;
- agrega los siete proveedores a la pantalla de credenciales.
Verificación local
- Backend: 514 pruebas pasaron, 15 omitidas; build PASS.
- Frontend: 245 pruebas pasaron; TypeScript PASS; lint 0 errores (38 advertencias históricas); build de producción PASS.
- Smoke:
/health,/assistanty/account/api-keysrespondieron HTTP 200 en servicios locales reales; puertos dedicados cerrados después. - Revisión independiente: PASS sobre árbol exacto
a385244f96bc13f28a864c2a7c50acb321ba3f66.
Regresiones cerradas durante review
- La X/overlay del modal ya no finge cancelar después de iniciar
createChat, evitando chats fantasma por respuesta tardía. - El catálogo Gemini reconoce la respuesta
models[]y normaliza prefijosmodels/.
Alcance deliberadamente posterior
No incluye recibos firmados, fallback enlazado, credenciales institucionales ni comité adversarial. Esta PR entrega sólo la base gobernada e inmutable.
Estado operativo
No modifica producción ni credenciales reales.
Our analysis
Add governed BYOK foundations — read the full analysis →
Think the analysis missed something the PR description covers?
Capture this PR into my fork
Download a Markdown prompt that tells Claude how to port every
commit in this PR into your working tree. Run it via
claude -p < capture-pull-1.md from
inside the repo you want the changes in.