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).
En el App Registration del gateway (Bison-API-Gateway), Expose an API: agregar un scope delegado access_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-bison y exigir ese claim en el token; revocar acceso = quitar del grupo.
El gateway ya valida el dominio @bisionconsulting.com vía BISON_ALLOWED_DOMAIN (default) y el scope GATEWAY_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 bisionconsulting en el Marketplace, vinculada a la org de Azure DevOps.
PAT: token con scope Marketplace > Manage.
Sin secretos en el .vsix: el .vscodeignore excluye src/, 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/chat registra el preferred_username).
Revocar acceso: quitar al usuario del grupo Entra (o deshabilitar la cuenta).
Versionado: vsce publish con bump de versión en package.json.
Sin fuga de datos: la extensión no guarda historial fuera de VS Code; los secretos viven en Key Vault del gateway.