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 +21 -0
- package/README.md +219 -0
- package/dist/server.js +5563 -0
- package/dist/web/assets/highlight-B0RyEt-U.js +5 -0
- package/dist/web/assets/index-HOJufhVy.css +32 -0
- package/dist/web/assets/index-pspQSiEP.js +286 -0
- package/dist/web/favicon.svg +32 -0
- package/dist/web/index.html +19 -0
- package/package.json +41 -0
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
|
+

|
|
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
|
+

|
|
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.
|