agent-workbench 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Christian Velasquez
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,219 @@
1
+ # Agent Workbench
2
+
3
+ Una interfaz visual local para la CLI de Claude Code.
4
+
5
+ No habla con ninguna API. Lanza el binario `claude` que ya tenés instalado y
6
+ logueado, dentro de una pseudo-terminal, y le agrega alrededor lo que una
7
+ terminal sola no da: pestañas, historial navegable, la conversación como
8
+ tarjetas, un medidor de contexto, el estado de git y un árbol de archivos.
9
+
10
+ La terminal sigue siendo la terminal. Todo lo que escribís le llega a la CLI sin
11
+ que la aplicación lo toque.
12
+
13
+ ![La conversación al centro; alrededor, los proyectos con su historial, las pestañas y el árbol de archivos](https://raw.githubusercontent.com/cvelasquez/agent-workbench/main/docs/captura-conversacion.png)
14
+
15
+ ---
16
+
17
+ ## Qué hace
18
+
19
+ | | |
20
+ |---|---|
21
+ | **Pestañas** | Varias sesiones vivas a la vez, cada una en su directorio. Sobreviven a un `F5`: los procesos viven en el servidor, no en la pestaña del navegador. |
22
+ | **Historial** | Tus proyectos y conversaciones anteriores en la barra lateral, con filtro. Abrir una la retoma con `--resume`, en el mismo archivo. |
23
+ | **Conversación** | Los mensajes de la sesión activa, en vivo, con las herramientas plegadas y su resultado adentro. Búsqueda, salto entre resultados y copiado por mensaje. |
24
+ | **Medidor de contexto** | Tokens de la última petición contra la ventana del modelo. Tokens, nunca dinero. |
25
+ | **Cambios** | Rama, adelanto y atraso contra la rama de seguimiento, worktrees, y los archivos tocados con su diff. **Solo lectura.** |
26
+ | **Archivos** | El árbol del directorio de la pestaña, con carga perezosa y previsualización con resaltado de sintaxis. Menú contextual para copiar rutas, insertarlas como `@ruta` o abrir el archivo con la app del sistema. |
27
+ | **Tema** | Claro, oscuro, o el del sistema. |
28
+
29
+ <p>
30
+ <img src="https://raw.githubusercontent.com/cvelasquez/agent-workbench/main/docs/captura-cambios.png" width="49%" alt="El panel de cambios: rama y archivos tocados, por grupo">
31
+ <img src="https://raw.githubusercontent.com/cvelasquez/agent-workbench/main/docs/captura-diff.png" width="49%" alt="El diff de uno de esos archivos, en el mismo panel">
32
+ </p>
33
+
34
+ ---
35
+
36
+ ## Requisitos
37
+
38
+ | | |
39
+ |---|---|
40
+ | **Node.js** | 20 o superior |
41
+ | **git** | para el panel de cambios; el resto funciona sin él |
42
+ | **La CLI de Claude Code** | instalada y con sesión iniciada — [guía de instalación](https://docs.claude.com/en/docs/claude-code/setup) |
43
+
44
+ Agent Workbench **no** incluye la CLI ni la descarga: usa la que ya tenés en el
45
+ `PATH`. Si no la encuentra, te lo dice y no abre sesiones.
46
+
47
+ Probado sobre Windows 11 con PowerShell, que es la plataforma principal.
48
+ macOS y Linux funcionan igual. En Linux, la dependencia `node-pty` no trae
49
+ binario precompilado y se compila al instalar: hacen falta `python3`, `make` y
50
+ un compilador de C++ (`build-essential` en Debian y Ubuntu).
51
+
52
+ ---
53
+
54
+ ## Instalar
55
+
56
+ ```bash
57
+ npm install -g agent-workbench
58
+ ```
59
+
60
+ Después, parado en el proyecto en el que quieras trabajar:
61
+
62
+ ```bash
63
+ agent-workbench
64
+ ```
65
+
66
+ Para probarlo una vez sin instalarlo, `npx agent-workbench` — baja unos 60 MB
67
+ cada vez que la caché de npm está fría, casi todo del binario de la terminal.
68
+ Para uso diario conviene la instalación global.
69
+
70
+ El servidor imprime una URL con un token y la abre en el navegador:
71
+
72
+ ```
73
+ URL http://127.0.0.1:52341/?token=…
74
+ ```
75
+
76
+ Esa URL es la única forma de entrar. El token es distinto en cada arranque, y el
77
+ servidor escucha solo en `127.0.0.1`.
78
+
79
+ ---
80
+
81
+ ## Desde el código
82
+
83
+ Para trabajar en la aplicación, o si preferís no instalar nada global:
84
+
85
+ ```bash
86
+ corepack enable pnpm
87
+ pnpm install
88
+ pnpm dev # Vite con recarga en caliente
89
+ ```
90
+
91
+ ```bash
92
+ pnpm build # compila la interfaz una vez
93
+ pnpm start # la sirve ya compilada, sin Vite
94
+ ```
95
+
96
+ ### Arranque de un clic en Windows
97
+
98
+ ```bash
99
+ pnpm package
100
+ ```
101
+
102
+ Compila la interfaz y deja un **`Agent Workbench.cmd`** en la raíz. Doble clic y
103
+ listo: instala lo que falte, compila si hace falta y abre el navegador. Es un
104
+ archivo de texto de veinte líneas; se puede leer entero antes de ejecutarlo.
105
+
106
+ ---
107
+
108
+ ## Atajos
109
+
110
+ `Alt+T` nueva pestaña · `Alt+W` cerrar · `Alt+←/→` cambiar de pestaña ·
111
+ `Alt+1…9` ir a la pestaña N · `Alt+P` mostrar u ocultar el panel derecho.
112
+
113
+ El botón `?` de la barra superior los lista todos, junto con los de la CLI.
114
+
115
+ **Por qué `Alt` y no `Ctrl`:** el navegador se queda con `Ctrl+T`, `Ctrl+W` y
116
+ `Ctrl+Tab` para sus propias pestañas y el evento nunca llega a la página. No es
117
+ algo que se arregle con `preventDefault`: no hay evento que prevenir.
118
+
119
+ La aplicación captura exactamente esas cinco combinaciones y ninguna más. Todo
120
+ lo demás —`Esc`, `Esc Esc`, `Ctrl+C`, `Ctrl+R`, `Ctrl+O`, `Shift+Tab`, las
121
+ flechas y sobre todo `Alt+V`, que es el pegado de imágenes— le llega intacto a
122
+ la CLI.
123
+
124
+ ---
125
+
126
+ ## Qué hace la aplicación con tus datos
127
+
128
+ Nada sale de tu máquina. Sin telemetría, sin analítica, sin ninguna llamada de
129
+ red saliente.
130
+
131
+ - **Nunca toca tus credenciales.** No lee, copia ni reenvía
132
+ `~/.claude/.credentials.json` ni ningún token. No hay login en la interfaz: si
133
+ no iniciaste sesión, corrés `/login` dentro de la terminal y la aplicación ni
134
+ se entera.
135
+ - **No agrega variables de autenticación** al entorno de los procesos que lanza.
136
+ El entorno se hereda tal cual. La única excepción es que **quita**
137
+ `CLAUDE_CODE_CHILD_SESSION` —que apaga el guardado del historial— y te avisa
138
+ con un cartel cuando lo hace.
139
+ - **De `~/.claude/` solo lee `projects/`**, que es el historial de
140
+ conversaciones. Lo que la aplicación guarda (pestañas abiertas, caché del
141
+ índice) va a su propio directorio de configuración, nunca dentro de
142
+ `~/.claude/`.
143
+ - **El servidor escucha solo en `127.0.0.1`**, en un puerto efímero, con un
144
+ token aleatorio por arranque que exigen el WebSocket y todas las rutas HTTP,
145
+ y rechaza peticiones cuyo `Origin` no sea el propio.
146
+ - **El panel de git es de solo lectura.** No hay commit, stage ni push. Con un
147
+ agente editando archivos, un botón que escribe historia es exactamente lo que
148
+ después nadie sabe quién disparó.
149
+
150
+ ![Un archivo del árbol, previsualizado con resaltado de sintaxis](https://raw.githubusercontent.com/cvelasquez/agent-workbench/main/docs/captura-archivos.png)
151
+
152
+ ---
153
+
154
+ ## Si algo falla
155
+
156
+ **"No se encontró el comando `claude` en el PATH"** — la CLI no está instalada o
157
+ no está en el `PATH` del proceso que corre `pnpm dev`. Comprobalo con
158
+ `where claude` (o `which claude`).
159
+
160
+ **`node-pty` no compila al instalar.** Es un módulo nativo. Normalmente baja un
161
+ binario precompilado y no hace falta nada; si tu combinación de Node y
162
+ plataforma no tiene uno, hay que compilarlo:
163
+
164
+ - **Windows:** Visual Studio Build Tools con la carga de trabajo *Desarrollo
165
+ para el escritorio con C++*, y Python 3.
166
+ `npm install --global windows-build-tools` ya no se mantiene: instalá los
167
+ Build Tools desde el instalador de Visual Studio.
168
+ - **macOS:** `xcode-select --install`.
169
+ - **Linux:** `build-essential` y `python3`.
170
+
171
+ **La terminal se queda en blanco.** El renderer por defecto es canvas a
172
+ propósito: con el addon WebGL la pestaña se congela en Windows 11 + Chrome
173
+ aunque los datos lleguen. Si querés probarlo igual, agregá `?renderer=webgl` a
174
+ la URL.
175
+
176
+ **Un cartel dice que se quitó `CLAUDE_CODE_CHILD_SESSION`.** Pasa cuando
177
+ arrancás `pnpm dev` desde adentro de una sesión de la CLI. Esa variable apaga el
178
+ guardado del historial, y sin historial no hay conversación ni medidor. La
179
+ aplicación la quita y te avisa. En uso normal —una terminal común— ni aparece.
180
+
181
+ **El panel de cambios dice que la carpeta no es un repositorio git** y sí lo es.
182
+ Fijate que `git` esté en el `PATH`. Si el mensaje es otro, es el error que
183
+ devolvió git, tal cual.
184
+
185
+ ---
186
+
187
+ ## Cómo está hecho
188
+
189
+ Monorepo con pnpm, TypeScript en todo.
190
+
191
+ ```
192
+ packages/
193
+ server/ Node, Express, ws, node-pty, chokidar — sirve la interfaz y hospeda las pty
194
+ web/ Vite, React, xterm.js, highlight.js
195
+ shared/ los tipos del protocolo, sin `any` en los bordes
196
+ ```
197
+
198
+ Un solo proceso sirve la interfaz y el WebSocket en el mismo puerto: con un
199
+ único origen, el chequeo de `Origin` y el token funcionan igual en desarrollo y
200
+ en producción, sin excepciones que después nadie se acuerda de sacar.
201
+
202
+ La decisión de arquitectura que ordena el resto: **las pty viven en un registro
203
+ del servidor y el WebSocket es solo transporte.** Si el proceso muriera con el
204
+ socket, un `Ctrl+R` sin querer borraría la sesión de trabajo. Cada terminal
205
+ guarda un buffer de su salida reciente para repintar la pantalla cuando el
206
+ cliente vuelve.
207
+
208
+ [`CLAUDE.md`](CLAUDE.md) tiene el detalle, incluido el esquema real del JSONL de
209
+ la CLI —que difiere de lo que uno esperaría— y las trampas ya pisadas.
210
+ [`CONTRIBUTING.md`](CONTRIBUTING.md), cómo trabajar en el repositorio.
211
+
212
+ ---
213
+
214
+ ## Licencia
215
+
216
+ MIT. Ver [`LICENSE`](LICENSE).
217
+
218
+ Agent Workbench es un proyecto independiente. Funciona con la CLI de Claude Code,
219
+ pero no está afiliado a Anthropic ni respaldado por ellos.