Files
claude_pipe/playground/README.md
T
agent a4d63cd768 feat(playground): chat web sobre claude_pipe --stream (SSE)
Backend Go (web/server.go) que sirve un chat single-page y, por cada mensaje,
lanza claude_pipe --stream como subprocess y reenvia sus eventos NDJSON
(text_delta + result) al navegador via Server-Sent Events. Frontend vanilla
(web/index.html), sin frameworks ni node_modules.

Prueba el stack completo end to end a traves de una surface real: captura PTY ->
vt_render -> parse_claude_tui (con fix del spinner) -> delta de streaming ->
chat en vivo. Cada mensaje es una sesion claude one-shot (sin memoria entre
turnos). Playground del padre, no indexado.
2026-06-03 23:42:03 +02:00

2.6 KiB
Raw Blame History

claude_pipe — artifact probe (playground)

Herramienta desechable para auditar la calidad del parseo de la TUI que hace claude_pipe. No se indexa, no tiene app.md, vive dentro de apps/claude_pipe/ y se mueve con su sub-repo.

Qué comprueba

Por cada prompt, lanza el binario claude_pipe en modo one-shot y en modo --stream, y busca:

  1. Artefactos que se cuelan del render en la respuesta parseada: caracteres de caja (╭│╰), reglas horizontales (────), fragmentos de la status bar (CTX:, IN:, $…, ← for agents), la línea meta ✻ Crunched, el prompt , el carácter de reemplazo , palabras pegadas (>40 chars sin espacio), o el prompt repetido literalmente.
  2. Consistencia del streaming: la concatenación de los text_delta debe reconstruir el result final. Si no, la heurística de prefijo perdió o duplicó texto bajo reflow.
  3. (Opcional, --ref) discrepancia contra claude -p real para el mismo prompt (normalizado por espacios). claude no es determinista, así que solo los prompts triviales se espera que coincidan exactamente.

Sale con código 2 si encuentra artefactos o inconsistencias (para poder usarlo como gate).

Cómo lanzarlo

cd apps/claude_pipe
CGO_ENABLED=1 go build -tags fts5 -o claude_pipe .   # asegúrate de tener el binario

cd playground

# Set de prompts por defecto, sin comparar con claude -p
go run artifact_probe.go --root /home/enmanuel/fn_registry

# Comparando además contra `claude -p` real (gasta llamadas reales)
go run artifact_probe.go --root /home/enmanuel/fn_registry --ref

# Un solo prompt custom
go run artifact_probe.go --root /home/enmanuel/fn_registry --prompt "tu prompt aqui"

--root debe ser un repo cuyos MCP de claude ya estén aprobados, para que la TUI no muestre el diálogo de arranque.

Chat en el navegador (web/)

Un chat web que prueba todo el stack end to end: backend Go con SSE que lanza claude_pipe --stream por cada mensaje y reenvía los text_delta al navegador, frontend chat vanilla (sin frameworks, sin node_modules).

cd apps/claude_pipe
CGO_ENABLED=1 go build -tags fts5 -o claude_pipe .   # binario con el fix del spinner

cd playground
go run ./web                 # http://localhost:8099
# o con flags:
go run ./web --port 8099 --root /home/enmanuel/fn_registry --warmup 4s --idle 4s --max 120s

Abre http://localhost:8099 y escribe. Cada mensaje es una sesión claude nueva (sin memoria entre turnos: claude_pipe es one-shot). Hay ~8s de warmup+idle antes de la primera respuesta. La respuesta se reconstruye desde la TUI parseada, ya sin el spinner de carga.