Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

opencode-done-notify

Plugin global de opencode (solo Linux) que te avisa con sonido + notificación de escritorio cuando el agente termina, necesita tu respuesta o falla. No más mirar la terminal esperando.

Qué hace

Evento Sonido Mensaje Subagentes (hijos)
Sesión inactiva (session.idle / session.status → idle) done.mp3 «OpenCode listo» — revisa el resultado Ignorado si es hijo; solo suena el hilo principal
Permiso o pregunta pendiente (permission.asked, question.asked, tool.execute.before → question) request.mp3 «OpenCode te necesita» — hay algo que responder Suena siempre, indicando si es subagente («— subagente de {proyecto}» en el cartel)
Error de sesión (session.error) request.mp3 «OpenCode falló» (urgencia crítica) Suena SIEMPRE (principal, hijo y desconocido)

Decisión: las preguntas/permisos siempre suenan porque un subagente bloqueado esperando tu respuesta es lo que más urge atender; el cartel marca el origen subagente para distinguirlo del hilo principal. Solo el fin de un subagente (session.idle de hijo) sigue ignorado para evitar spam sonoro; el error sí avisa siempre.

Nota técnica: tool.execute.before es un hook bloqueante (input { tool, sessionID, callID }, output), NO un evento del bus. Por eso el plugin lo escucha como hook al mismo nivel que event: (las preguntas siempre suenan, marcando origen subagente). Se mantiene además la rama de event: para tool.execute.before como fallback defensivo.

El filtro es solo en memoria (childToParent, tope 500, sin persistencia; sesión desconocida/sin ID → suena por fail-open).

Los avisos repetidos se agrupan (2 s) para no spamear. El sonido nunca rompe la sesión: si algo falla, se ignora en silencio.

Requisitos

  • Solo Linux (probado en Ubuntu/GNOME).
  • opencode ≥ 1.18.29, node, notify-send + gdbus, y un reproductor (ffplay de ffmpeg o pw-play).
  • zenity es opcional.

Instalación

git clone <URL-del-repo> opencode-done-notify
cd opencode-done-notify
./install.sh

El instalador es idempotente: si los archivos ya están instalados e idénticos, los salta sin crear backups duplicados. Antes de sobrescribir algo distinto, hace backup con timestamp (.bak-AAAA-MM-DD-HHMMSS). También neutraliza el viejo @mohak34/opencode-notifier de tu opencode.jsonc (con backup) si lo encuentra.

Flags:

./install.sh --yes        # no preguntar si falta algo crítico
./install.sh --check      # solo diagnostica, no copia ni cambia nada
./install.sh --uninstall  # equivale a ./uninstall.sh
./install.sh --help       # ayuda

Prueba de punta a punta

  1. Deja una sesión opencode inactiva → suena done.mp3 y aparece «OpenCode listo».
  2. Provoca un permiso o pregunta → suena request.mp3 y aparece «OpenCode te necesita».
  3. Re-diagnostica cuando quieras: ./install.sh --check.

Desinstalación

./uninstall.sh

Borra solo plugins/opencode-done-notify.js y sounds/{done,request}.mp3, restaura el backup más reciente si existe, y jamás toca herdr-agent-state.js ni borra carpetas.

Troubleshooting

  • Sin sonido: instala un reproductor (sudo apt install ffmpeg) y comprueba la salida de audio; en SSH sin audio es normal que falle.
  • Sin aviso visual: necesitas sesión gráfica con daemon de notificaciones (GNOME). En SSH sin DISPLAY/Wayland solo funcionará el sonido.
  • SSH sin DISPLAY: notify-send/gdbus no llegan al escritorio remoto; es esperado.
  • opencode viejo (< 1.18.29): actualiza opencode; el instalador te avisa con ⚠.

Créditos

Sonidos done.mp3/request.mp3 extraídos de herdr — Apache-2.0, © sus autores.

Licencia

Apache-2.0. Ver LICENSE.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages