# 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 ```bash 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). ```bash 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.