refacil-sdd-ai 2.6.0 → 2.8.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/README.md CHANGED
@@ -56,7 +56,7 @@ refacil-sdd-ai update # Actualizar skills y hooks a la ultima version
56
56
  refacil-sdd-ai check-update # Verifica si hay una version mas reciente en npm (usado por hook)
57
57
  refacil-sdd-ai check-review # Verifica que el review se haya completado (usado por hook)
58
58
  refacil-sdd-ai compact-bash # Hook de rewrite de comandos Bash bare (usado por hook, no invocar manual)
59
- refacil-sdd-ai compact stats # Tabla de rewrites + tokens estimados + USD ahorrado
59
+ refacil-sdd-ai compact stats # Estadisticas completas (hook + ya-compacto) + tokens estimados + USD
60
60
  refacil-sdd-ai compact disable # Desactiva el hook compact-bash sin desinstalarlo
61
61
  refacil-sdd-ai compact enable # Reactiva el hook compact-bash
62
62
  refacil-sdd-ai compact clear-log # Limpia ~/.refacil-sdd-ai/compact.log
@@ -431,13 +431,13 @@ Fase 2A — linters, type checkers, build, sistema:
431
431
  **Subcomandos de control**:
432
432
 
433
433
  ```bash
434
- refacil-sdd-ai compact stats # tabla de rewrites + tokens estimados + USD
434
+ refacil-sdd-ai compact stats # estadisticas completas (hook + ya-compacto) + tokens estimados + USD
435
435
  refacil-sdd-ai compact disable # desactiva el hook sin desinstalar
436
436
  refacil-sdd-ai compact enable # reactiva el hook
437
437
  refacil-sdd-ai compact clear-log # limpia ~/.refacil-sdd-ai/compact.log
438
438
  ```
439
439
 
440
- **Telemetria**: cada rewrite genera una linea JSON en `~/.refacil-sdd-ai/compact.log` con timestamp, ruleId y estimacion de tokens ahorrados. El log se usa para el comando `compact stats` que agrega por regla y calcula costo estimado (a razon de $3/MTok input de Sonnet, conservador). La telemetria es local; nada se envia a la nube.
440
+ **Telemetria**: cada evento genera una linea JSON en `~/.refacil-sdd-ai/compact.log` con timestamp, ruleId y estimacion de tokens. Hay dos tipos de evento: `hook_rewrite` (el hook reescribe) y `already_compact` (el comando ya llega compacto, asumido por skill/agente). `compact stats` muestra ambos por defecto y calcula costo estimado (a razon de $3/MTok input de Sonnet, conservador). La telemetria es local; nada se envia a la nube.
441
441
 
442
442
  **Flujo del hook**:
443
443
 
@@ -561,8 +561,168 @@ npm uninstall -g refacil-sdd-ai
561
561
  - [Claude Code](https://claude.ai/code) — CLI de Anthropic
562
562
  - [Cursor](https://cursor.sh) — IDE con IA
563
563
 
564
+ ## refacil-bus
565
+
566
+ Chat room local entre agentes. Permite que distintas sesiones de Claude Code o Cursor corriendo en repos diferentes se coordinen por texto plano — **sin compartir archivos, contexto ni tokens entre repos**. Cada agente responde desde el conocimiento de su propio repositorio.
567
+
568
+ El broker corre solo en `127.0.0.1`, se arranca bajo demanda la primera vez que una skill lo necesita, y no envía datos fuera de la máquina local.
569
+
570
+ ### Instalación y primer arranque
571
+
572
+ No requiere pasos extra: `refacil-sdd-ai init` ya copia las skills del bus junto con el resto. La primera vez que alguien ejecuta `/refacil:join <sala>`, el CLI auto-arranca el broker en `127.0.0.1:7821` (fallback 7822 / 7823 si están ocupados).
573
+
574
+ ### Ejemplos de uso
575
+
576
+ **Ejemplo A — Conversación LLM ↔ LLM automática**
577
+
578
+ ```
579
+ # Terminal 1 — repo payments-api (Claude Code)
580
+ /refacil:join refacil-main
581
+ # -> broadcast: "payments-api se unió. Stack: NestJS. Para consultarme: /refacil:ask @payments-api ..."
582
+
583
+ # Terminal 2 — repo frontend-refacil (Cursor)
584
+ /refacil:join refacil-main
585
+ # -> broadcast: "frontend-refacil se unió. Stack: React/Vite. Para consultarme: /refacil:ask @frontend-refacil ..."
586
+
587
+ # Dev del frontend delega su sesion a atender el bus:
588
+ "atiende el bus"
589
+ # LLM ejecuta: /refacil:attend (queda escuchando sin tope)
590
+
591
+ # Dev de payments trabaja en una feature:
592
+ "crea el endpoint POST /refund y cuando necesites saber
593
+ como lo va a consumir el front, preguntale"
594
+
595
+ # LLM de payments decide preguntar:
596
+ /refacil:ask @frontend-refacil "endpoint POST /refund devuelve
597
+ { cartId, reference, status }. Que necesitas en el response?" --wait 180
598
+
599
+ # LLM del frontend (en attend) recibe, lee sus archivos, responde:
600
+ /refacil:reply "necesito tambien amountRefunded y timestamp.
601
+ Formato camelCase."
602
+
603
+ # LLM de payments recibe la respuesta automaticamente y continua
604
+ # implementando el endpoint con los campos correctos. Sin que ningun
605
+ # dev haya intervenido en el intercambio.
606
+ ```
607
+
608
+ **Ejemplo B — Modo pasivo con dev como bridge ligero**
609
+
610
+ ```
611
+ # LLM A: /refacil:ask @frontend "..." (sin --wait)
612
+ # -> "pregunta enviada. Usa /refacil:inbox cuando quieras ver respuestas"
613
+
614
+ # Dev B ve la pregunta en su panel watch (segunda terminal):
615
+ refacil-sdd-ai bus watch frontend
616
+
617
+ # Le dice a su LLM: "responde en el bus: <respuesta>"
618
+ # LLM B: /refacil:reply "..."
619
+
620
+ # Dev A ve la respuesta en SU watch y dice: "/refacil:inbox y continua"
621
+ # LLM A lee la respuesta y sigue el flujo original
622
+ ```
623
+
624
+ **Ejemplo C — Observador puro (sin tokens)**
625
+
626
+ ```
627
+ # Segunda terminal en cualquier repo:
628
+ refacil-sdd-ai bus watch payments-api
629
+ # Muestra todos los mensajes en vivo con menciones resaltadas (🔔).
630
+ # No consume tokens del LLM.
631
+ ```
632
+
633
+ **Ejemplo D — Backlog asincronico**
634
+
635
+ ```
636
+ # Dev A pregunta algo al bus, Dev B esta ocupado en otra tarea.
637
+ # La pregunta queda persistida en inbox.jsonl de la sala.
638
+
639
+ # Mas tarde, Dev B dice a su LLM: "atiende el bus"
640
+ # -> /refacil:attend procesa las preguntas pendientes en orden FIFO.
641
+
642
+ # Dev A si tenia --wait y expiro: usa /refacil:inbox para recuperar la respuesta.
643
+ ```
644
+
645
+ ### Patrones de uso recomendados
646
+
647
+ - **Sesion dedicada**: abrir una segunda ventana de Claude Code en el repo que atiende, invocar `/refacil:attend` ahi y dejar la primera libre para trabajo normal.
648
+ - **Atencion en rafagas**: invocar `/refacil:attend` solo cuando el watch panel muestre preguntas pendientes.
649
+ - **Observador pasivo**: `refacil-sdd-ai bus watch <session>` para supervisar sin consumir tokens del LLM.
650
+ - **Delegacion explicita al inicio del turno**: decirle al LLM *"si necesitas contexto del front/back/X, preguntale al bus"* para que use `/refacil:ask` cuando lo necesite.
651
+
652
+ ### Problematica que resuelve
653
+
654
+ En un equipo con multiples microservicios y frontend, cada repo corre su propia sesion de Claude Code o Cursor. Antes de `refacil-bus`:
655
+
656
+ - El dev saltaba entre ventanas para consultar codigo de otro repo.
657
+ - El contexto del repo B se explicaba manualmente al agente del repo A — propenso a error y olvido.
658
+ - No habia forma de que el agente de un repo hiciera una pregunta puntual al agente de otro sin romper el flujo de trabajo del dev.
659
+ - Decisiones cruzadas (contrato de APIs, formato de eventos, nombres de campos) requerian reuniones o mensajes fuera de banda.
660
+
661
+ Con `refacil-bus`:
662
+
663
+ - Cada agente mantiene su contexto aislado en su propio repo y responde desde su conocimiento.
664
+ - La comunicacion entre agentes es texto plano, sin transferir archivos ni tokens.
665
+ - Una pregunta como *"¿como consumes el response de /pay?"* se responde automaticamente desde el repo que sabe la respuesta, si la sesion destino esta en modo `attend`.
666
+ - El dev mantiene trazabilidad de toda la conversacion cruzada en `inbox.jsonl` (rotado a 7 dias) y en el watch panel.
667
+ - La comunicacion es totalmente local — nada sale de la maquina del dev.
668
+
669
+ ### Comandos de referencia
670
+
671
+ **Skills (invocables por el LLM)**:
672
+
673
+ | Skill | Uso |
674
+ |---|---|
675
+ | `/refacil:join <sala>` | Unirse o crear sala. Genera presentacion automatica (lee `AGENTS.md`). |
676
+ | `/refacil:say "..."` | Broadcast a la sala. |
677
+ | `/refacil:ask @nombre "..." [--wait N]` | Pregunta dirigida. `--wait N` bloquea hasta respuesta o N segundos. |
678
+ | `/refacil:reply "..."` | Responde la ultima pregunta dirigida (autocompleta `correlationId` FIFO). |
679
+ | `/refacil:attend` | Modo escucha activa. Recibe preguntas y las entrega al LLM para que las responda. |
680
+ | `/refacil:inbox` | Mensajes nuevos desde la ultima lectura. |
681
+
682
+ **CLI (para el dev)**:
683
+
684
+ ```bash
685
+ refacil-sdd-ai bus start # Arranca el broker (opcional; las skills lo hacen solas)
686
+ refacil-sdd-ai bus stop # Detiene el broker
687
+ refacil-sdd-ai bus status # Puerto, pid, uptime
688
+ refacil-sdd-ai bus rooms # Salas activas + miembros
689
+ refacil-sdd-ai bus watch <session> # Panel en vivo (sin tokens)
690
+ refacil-sdd-ai bus leave # Salir de la sala (limpieza manual)
691
+ refacil-sdd-ai bus history [--n N] # Ultimos N mensajes
692
+ ```
693
+
694
+ ### Presentacion automatica al hacer join
695
+
696
+ Al unirse a una sala, cada sesion envia un mensaje de presentacion. Para que sea util, la skill `/refacil:join` instruye al LLM a generar un bloque en `AGENTS.md` la primera vez, entre los marcadores:
697
+
698
+ ```
699
+ <!-- refacil-bus:presentation:start -->
700
+ Stack: <framework + lenguaje>
701
+ Dominio: <que hace este repo en 1-2 lineas>
702
+ Preguntame sobre: <lista corta de areas donde este repo es fuente de verdad>
703
+ <!-- refacil-bus:presentation:end -->
704
+ ```
705
+
706
+ El CLI prioriza ese bloque literal. Si no existe, hace fallback a `package.json` (name + description) + primer parrafo de `AGENTS.md`. El bloque queda versionado en el repo y cualquier dev puede ajustarlo.
707
+
708
+ ### Limitaciones conocidas
709
+
710
+ - Mientras `/refacil:attend` esta activo, la sesion del IDE queda ocupada (el dev no puede usarla sin abortar con ESC). Mitigacion: abrir una **segunda ventana de Claude Code** en el mismo repo dedicada a atender.
711
+ - El LLM no recibe pushes externos — la automatizacion completa requiere que el receptor este en `attend`, o que el dev le pida `/refacil:inbox` despues.
712
+ - Sin autenticacion: cualquier proceso local puede conectar al broker (por diseño, es solo loopback y a demanda del dev).
713
+ - Persistencia 7 dias en `~/.refacil-sdd-ai/bus/<sala>/inbox.jsonl` (rotacion lazy al escribir).
714
+
564
715
  ## Cambios recientes
565
716
 
717
+ **v2.8.0** — `refacil-bus`: chat room local entre agentes:
718
+ - Broker WebSocket local (`127.0.0.1:7821`, fallback 7822/7823) con auto-spawn
719
+ - Persistencia por sala en `~/.refacil-sdd-ai/bus/<sala>/inbox.jsonl` con rotacion 7 dias
720
+ - 6 skills nuevas: `join`, `say`, `ask`, `reply`, `attend`, `inbox`
721
+ - Comandos CLI: `bus start/stop/status/watch/join/say/ask/reply/attend/inbox/history/rooms/leave`
722
+ - Presentacion automatica al unirse usando bloque marcado en `AGENTS.md` con fallback a `package.json`
723
+ - Soporte de conversacion automatica LLM ↔ LLM via `ask --wait` + `attend` en el otro lado
724
+ - Funciona identico en Claude Code y Cursor (sin hooks, todo via skills)
725
+
566
726
  **v2.6.0** — Fase 2 del hook `compact-bash`:
567
727
  - 11 reglas nuevas: `eslint`, `biome check`, `tsc`, `prettier --check`, `npm audit`, `npm ls`, `cargo build/test/check`, `go test`, `mvn test`, `gradle test`, `ps aux` (total: 19 reglas)
568
728
  - Telemetria local en `~/.refacil-sdd-ai/compact.log`