Skip to main content
Glama

InReview

InReview es una extensión de VS Code para revisar cambios locales de Jujutsu (jj) sin abrir una solicitud de extracción.

Selecciona un rango contiguo de cambios de jj, inspecciona sus diferencias combinadas o por cambio en VS Code y deja comentarios en el lado nuevo de la diferencia. Un puente MCP local nativo permite que GitHub Copilot CLI lea esos comentarios, responda a ellos y los resuelva después de actualizar el código.

InReview es una compilación local experimental. No está publicada en VS Code Marketplace.

Características

  • Revisar un rango histórico contiguo de cambios, un revset o los últimos X cambios que terminan en @.

  • Cambiar entre una diferencia combinada de la pila y diferencias por cambio.

  • Usar el editor de diferencias nativo de VS Code, el resaltado de sintaxis, los temas y la Comments API.

  • Añadir comentarios a líneas añadidas, líneas de contexto sin cambios y archivos completos.

  • Revisar entradas añadidas, modificadas, eliminadas, renombradas, copiadas, binarias y de enlaces simbólicos.

  • Actualizar una revisión después de que jj reescriba los cambios, conservando el historial exacto de comentarios.

  • Mantener los comentarios no coincidentes como hilos obsoletos vinculados a su instantánea original.

  • Archivar y restaurar revisiones locales.

  • Conectar GitHub Copilot CLI una vez mediante un puente MCP nativo por usuario.

Related MCP server: copilot-mcp-server

Requisitos

  • VS Code 1.96 o superior.

  • jj 0.44 o superior disponible para el host de extensiones de VS Code.

  • Un espacio de trabajo de sistema de archivos de confianza que contenga un repositorio jj.

  • GitHub Copilot CLI si quieres soporte de revisión por agente.

La extensión empaquetada incluye el ejecutable del puente nativo. Los usuarios finales no necesitan Node.js, Rust ni otro runtime de puente.

Se admiten hosts de extensión locales y remotos cuando el VSIX nativo correspondiente puede ejecutarse en ellos. Esto incluye WSL, SSH, Dev Containers y VS Code Tunnels. Ejecuta GitHub Copilot CLI en el mismo entorno de host de extensiones que InReview. El puente no reenvía IPC entre hosts.

Si VS Code no encuentra jj, reinicia todas las ventanas de VS Code después de cambiar PATH, o establece InReview: Jj Path en la ruta absoluta del ejecutable.

Instalar el VSIX local

Compila e instala:

npm ci
npm run package:vsix
code --install-extension .\inreview-<target>-0.0.1.vsix --force

Compilar un VSIX requiere Rust 1.88 o superior. <target> es la plataforma nativa actual, como linux-x64, darwin-arm64 o win32-x64.

Cada confirmación en main ejecuta el flujo de trabajo de GitHub Actions Build VSIX packages. La ejecución sube artefactos separados para las variantes x64 y arm64 de Linux, macOS y Windows.

Recarga VS Code después de la instalación.

Problema conocido: advertencia de deprecación de URL de Node

VS Code 1.135 puede imprimir una advertencia de Node DEP0169 sobre url.parse() después de instalar correctamente cualquier VSIX local. Un rastro de deprecación apunta a la solicitud de metadatos de la galería en cliProcessMain.js de VS Code; el mismo rastro ocurre con una extensión mínima en directorios de datos de usuario y de extensiones aislados. El inicio de las pruebas también puede informar de la advertencia como [AgentHost:stderr] inmediatamente después de que se inicie el Agent Host integrado de VS Code. El código fuente y el paquete de producción de InReview no llaman a la API obsoleta. Microsoft es responsable de la corrección upstream en microsoft/vscode#301941; el informe VSIX correspondiente se cerró como duplicado.

Revisar cambios

  1. Abre un repositorio jj de confianza en VS Code.

  2. Abre la vista InReview de la barra de actividades.

  3. Ejecuta InReview: Start Review.

  4. Elige Choose Range, Current Stack (Last X) o Advanced: Enter jj Revset.

  5. Para un rango, selecciona el cambio incluido más reciente y luego el cambio incluido más antiguo. Usa Load older changes para ampliar la ventana de historial.

  6. Confirma la vista previa de la selección ordenada.

  7. Selecciona un archivo en Active Review para abrir su diferencia nativa.

  8. Usa el margen de comentarios en una línea añadida o sin cambios del lado nuevo, o usa Add File Comment.

  9. Después de que un cambio seleccionado sea reescrito, ejecuta InReview: Refresh Review.

InReview almacena instantáneas inmutables. Un hilo permanece en línea solo cuando su destino y contexto completos se corresponden exacta y únicamente con la diferencia actualizada. De lo contrario, pasa a ser Outdated y permanece disponible desde la vista Comments.

Last X significa @ más hasta X - 1 ancestros directos. La selección es una pila contigua de un solo padre. Se detiene antes del cambio raíz de jj, por lo que una solicitud puede contener menos de X cambios. InReview rechaza fusiones, cambios divergentes y conflictos sin resolver en la pila seleccionada. La actualización sigue los IDs de cambio estables originales después de las reescrituras; no añade un nuevo hijo que luego se convierta en @.

Choose Range explora hasta 200 ancestros de @ en páginas de 50. Tanto el cambio seleccionado más reciente como el más antiguo se incluyen. InReview rechaza un rango que cruza una fusión, contiene un cambio divergente o un conflicto sin resolver, o no forma una cadena de padres contigua.

Advanced jj Revset acepta cualquier revset que se resuelva en 1–200 cambios en una cadena contigua de un solo padre. InReview muestra una vista previa de los cambios resueltos y almacena sus IDs de cambio estables completos. No guarda ni reevalúa el revset original durante la actualización.

Los comentarios de línea están disponibles solo en líneas añadidas o sin cambios en el lado nuevo. Las líneas eliminadas permanecen visibles pero no se pueden comentar. Los archivos eliminados pueden recibir comentarios de archivo. Una actualización mantiene un hilo actual solo cuando su destino y contexto completos tienen una coincidencia exacta. Todos los demás hilos pasan a ser Outdated y permanecen vinculados a su instantánea original inmutable. Los comentarios de usuario se pueden editar o eliminar. Las respuestas del agente son inmutables. Los hilos resueltos se pueden reabrir.

Conectar GitHub Copilot CLI

La extensión instala su puente nativo empaquetado en el almacenamiento estable de extensiones. Un demonio de puente por usuario atiende a todas las ventanas de InReview elegibles en el mismo entorno de host de extensiones. Cada ventana de confianza registra su espacio de trabajo canónico a través de un socket de dominio Unix restringido al usuario o una tubería con nombre de Windows. InReview no abre ningún puerto TCP.

El puente se inicia automáticamente cuando una ventana de confianza contiene un repositorio jj compatible y inreview.mcp.enabled está activado. No es necesario abrir una vista de InReview ni ejecutar un comando.

  1. Ejecuta InReview: Copy InReview MCP Setup.

  2. Selecciona el comando copilot mcp add o el fragmento mcp-config.json.

  3. Pega el resultado en GitHub Copilot CLI una vez en el mismo entorno de host de extensiones.

  4. Usa /mcp show para confirmar la conexión del servidor.

El comando copiado tiene esta forma:

copilot mcp add --tools "list_workspaces,connect_workspace,read_review_metadata,read_comments,reply_comment,close_comments" inreview -- "<native-launcher>"

La entrada inreview descubre todos los espacios de trabajo registrados en ese entorno. No necesitas una entrada MCP por repositorio. Pide al agente que liste los espacios de trabajo abiertos, que se conecte a una raíz absoluta devuelta y que revise sus comentarios abiertos.

Herramientas MCP

Herramienta

Propósito

list_workspaces

Lista las raíces canónicas y las plataformas de host registradas con el puente.

connect_workspace

Vincula la sesión MCP a la raíz exacta del espacio de trabajo y a la revisión activa.

read_review_metadata

Lee cambios seleccionados, instantáneas, metadatos de archivos y recuentos de comentarios.

read_comments

Lee hilos actuales, obsoletos, abiertos o resueltos filtrados.

reply_comment

Responde a un hilo abierto como Agent sin resolverlo.

close_comments

Resuelve atómicamente uno o más hilos abiertos con notas de resolución opcionales.

El puente no usa token de portador. Restringe su socket o tubería con nombre al usuario actual, valida mensajes acotados, aísla las sesiones MCP y expone solo las seis herramientas anteriores. El puente enruta las operaciones al proceso de extensión registrado; no puede leer archivos arbitrarios, ejecutar comandos de shell ni ejecutar jj. No lo uses en un entorno de usuario compartido no confiable.

Comandos

Usa la paleta de comandos o las acciones correspondientes de vista y comentarios.

Comando

Propósito

InReview: Start Review

Selecciona y captura un rango, revset o la pila de cambios más reciente.

InReview: Refresh Review

Captura versiones reescritas de los mismos IDs de cambio estables.

InReview: Archive Review

Hace que la revisión activa sea de solo lectura y la mueve al historial.

InReview: Restore Archived Review

Restaura una revisión archivada como revisión activa.

InReview: Rename Review

Cambia el título de la revisión activa.

InReview: Delete Archived Review

Elimina permanentemente una revisión archivada.

InReview: Show Combined Diff

Compara el padre del cambio más antiguo con la cabeza de la pila.

InReview: Show Per-Change Diffs

Muestra cada cambio seleccionado contra su padre directo.

InReview: Add File Comment

Añade un comentario que se aplica a todo el archivo.

InReview: Resolve Comment / Reopen Comment

Cambia el estado de resolución de un hilo.

InReview: Submit/Edit/Save/Cancel/Delete Comment

Gestiona los comentarios de usuario a través de la interfaz de comentarios de VS Code.

InReview: Copy InReview MCP Setup

Copia el comando stdio nativo de una sola vez o la configuración JSON de MCP.

InReview: Show MCP Bridge Status

Muestra la instalación del puente nativo y el estado de registro del espacio de trabajo.

Vistas

  • Active Review muestra los cambios seleccionados, la instantánea actual, el modo de visualización y los archivos modificados.

  • Comments agrupa hilos abiertos actuales, abiertos obsoletos y resueltos.

  • History muestra las últimas 20 revisiones archivadas.

Los datos de revisión se almacenan en el almacenamiento global de extensiones de VS Code. Incluyen instantáneas de archivos inmutables, metadatos de revisión y comentarios. Nunca se escriben en el repositorio. InReview usa blobs comprimidos direccionados por contenido, serializa las escrituras por repositorio, conserva las últimas 20 revisiones archivadas y recolecta los blobs no referenciados. No envía telemetría ni realiza solicitudes de red. El tráfico MCP permanece en un socket local por usuario o tubería con nombre.

Configuración

Configuración

Predeterminado

Descripción

inreview.jj.path

jj

Nombre del comando o ruta absoluta del ejecutable de jj.

inreview.review.defaultChangeCount

1

Valor inicial para el prompt Current Stack (Last X).

inreview.review.largeDiffWarningLines

10000

Número de líneas modificadas que requiere confirmación.

inreview.mcp.enabled

true

Registra un espacio de trabajo de confianza elegible con el puente MCP nativo.

inreview.logging.level

info

Umbral de registro del canal de salida.

Limitaciones actuales

  • Un repositorio jj por ventana de VS Code.

  • Las revisiones deben contener una pila de cambios contigua de un solo padre.

  • Los cambios de fusión y los conflictos sin resolver se rechazan.

  • Sin comentarios en líneas eliminadas.

  • Diffs nativos por archivo en lugar de la API propuesta de diff multiarchivo de VS Code.

  • Sin reenvío de puente entre hosts de extensión locales y remotos.

  • Sin sincronización en la nube ni servidor de revisión compartido.

  • El puente no tiene token de aplicación. Su endpoint IPC local depende de los controles de acceso del sistema operativo del usuario actual.

  • Linux, macOS, WSL, SSH, Dev Container y Tunnel son destinos de extensión compatibles, pero no todos se probaron manualmente para la versión 0.0.1.

Desarrollo

npm ci
npm run typecheck
npm run lint
npm run test:unit
npm run test:integration
npm run build:production
npm run validate:package
npm run package:vsix

npm run check ejecuta la comprobación de tipos, el linting, las pruebas unitarias y de integración con jj, el paquete de producción y la validación del paquete.

La extensión utiliza APIs públicas estables de VS Code. No habilita APIs propuestas. La validación del paquete aplica una lista de permitidos VSIX exacta: el manifiesto, README, changelog, paquete de producción e icono.

Las principales áreas de código son:

src/domain/   Persisted review and comment models
src/storage/  Atomic manifests, locks, and content-addressed blobs
src/jj/       Safe jj process adapter and snapshot capture
src/diff/     Git patch parsing and file classification
src/review/   Review lifecycle and comment services
src/vscode/   Views, native virtual diffs, and Comments API integration
src/mcp/      Streamable HTTP transport, tools, and Copilot setup

Related MCP Connectors

Related MCP Servers