Asistente Bision dentro de VS Code. Aparece como @bison en el panel de Chat de VS Code.
Es un thin client: NO embebe el cerebro del agente ni secretos. Consume el API Gateway Bison (/v1/chat) con OAuth2 (Entra ID). El uso está restringido a personal @bisionconsulting.com.
Arquitectura
VS Code (@bison) --OAuth2 Entra ID--> API Gateway Bison (/v1/chat) --> Claude
(extension) token usuario valida dominio @bisionconsulting.com
- La extensión obtiene el token con el proveedor Microsoft de VS Code (
vscode.authentication). - El gateway valida el JWT (RS256/JWKS) y exige que el usuario sea
@bisionconsulting.com(authorize_bison_user). - El marketplace permite descargar la extensión, pero el login bloquea el USO a quien no sea Bison.
- Toda llamada queda en el audit del gateway (
chat.api_gateway_audit).
Configuración (Settings de VS Code)
| Setting | Ejemplo | Descripción |
|---|---|---|
bison.gatewayUrl |
https://api-gateway-bison.<region>.azurecontainerapps.io |
URL del API Gateway (sin barra final) |
bison.entraScope |
api://<gateway-app-id>/access_as_user |
Scope OAuth2 del gateway en Entra ID |
Prerequisitos en Entra ID (una sola vez)
- En el App Registration del gateway (
Bison-API-Gateway), Expose an API: agregar un scope delegadoaccess_as_user. - Authentication / sign-in audience: single-tenant (solo el directorio Bision) → esto ya limita a cuentas del tenant Bison.
- Autorizar el client de VS Code (o registrar un App Registration propio para la extensión y darle permiso delegado al scope del gateway).
- (Refuerzo de gobernanza) crear un grupo de seguridad
usuarios-extension-bisony exigir ese claim en el token; revocar acceso = quitar del grupo. - El gateway ya valida el dominio
@bisionconsulting.comvíaBISON_ALLOWED_DOMAIN(default) y el scopeGATEWAY_REQUIRED_SCOPE.
Desarrollo local
cd vscode-extension-bison
npm install
npm run compile
# F5 en VS Code para abrir una ventana de extension host de prueba
Falta agregar el icono media/bison.png (reusar chat-app/logo.png) antes de empaquetar.
Empaquetar y publicar (vsce)
npm install -g @vscode/vsce
# Empaquetar a .vsix (revisar que NO se incluyan secretos — ver .vscodeignore)
vsce package
# Publicar al Marketplace (requiere publisher 'bisionconsulting' + PAT de Azure DevOps)
vsce publish
- Publisher: cuenta
bisionconsultingen el Marketplace, vinculada a la org de Azure DevOps. - PAT: token con scope Marketplace > Manage.
- Sin secretos en el
.vsix: el.vscodeignoreexcluyesrc/,node_modules, mapas. La extensión NO contiene API keys ni el cerebro del agente (todo vive detrás del gateway). Cumple R36/R54.
Distribución: 2 opciones
| Opción | Descarga | Uso | Cuándo |
|---|---|---|---|
| Marketplace público + login Bison | abierta | bloqueado a no-Bison por el login/gateway | default recomendado |
| VSIX privado / Azure DevOps artifacts | solo equipo | igual, bloqueado por login | si se prefiere no listar público |
Gobernanza
- Quién la usa: auditable en el audit del gateway (cada
/v1/chatregistra elpreferred_username). - Revocar acceso: quitar al usuario del grupo Entra (o deshabilitar la cuenta).
- Versionado:
vsce publishcon bump de versión enpackage.json. - Sin fuga de datos: la extensión no guarda historial fuera de VS Code; los secretos viven en Key Vault del gateway.