inreview
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
Xcambios 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.
jj0.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 --forceCompilar 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
Abre un repositorio jj de confianza en VS Code.
Abre la vista InReview de la barra de actividades.
Ejecuta InReview: Start Review.
Elige Choose Range, Current Stack (Last X) o Advanced: Enter jj Revset.
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.
Confirma la vista previa de la selección ordenada.
Selecciona un archivo en Active Review para abrir su diferencia nativa.
Usa el margen de comentarios en una línea añadida o sin cambios del lado nuevo, o usa Add File Comment.
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.
Ejecuta InReview: Copy InReview MCP Setup.
Selecciona el comando
copilot mcp addo el fragmentomcp-config.json.Pega el resultado en GitHub Copilot CLI una vez en el mismo entorno de host de extensiones.
Usa
/mcp showpara 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 |
| Lista las raíces canónicas y las plataformas de host registradas con el puente. |
| Vincula la sesión MCP a la raíz exacta del espacio de trabajo y a la revisión activa. |
| Lee cambios seleccionados, instantáneas, metadatos de archivos y recuentos de comentarios. |
| Lee hilos actuales, obsoletos, abiertos o resueltos filtrados. |
| Responde a un hilo abierto como |
| 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 |
|
| Nombre del comando o ruta absoluta del ejecutable de jj. |
|
| Valor inicial para el prompt Current Stack (Last X). |
|
| Número de líneas modificadas que requiere confirmación. |
|
| Registra un espacio de trabajo de confianza elegible con el puente MCP nativo. |
|
| 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:vsixnpm 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 setupThis server cannot be deployed
Maintenance
Related MCP Connectors
AI code review for GitHub PRs with an MCP autofix loop for Claude Code and Cursor
Adaptive plan/build/review cycles for AI coding assistants, persisted across sessions.
Read and write your Fresh Jots notes from Claude, Cursor, and any MCP client.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables management of GitHub pull request review threads through natural language, allowing users to list, reply to, and resolve PR review comments using GitHub's GraphQL API.4MIT
- AlicenseCqualityDmaintenanceConnects MCP-enabled editors to GitHub Copilot CLI for non-interactive code analysis, batch processing, and code review.106 npm5MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to fetch GitHub pull request diffs and metadata, and post review comments directly through the MCP protocol.1MIT
- FlicenseNot gradedqualityDmaintenanceFetches GitHub PR comments and intelligently applies fixes directly in workspace files, supporting automatic issue resolution with smart pattern recognition.-