Plan de refactorización del SDK de plugins + runtime

Objetivo: cada conector de mensajería es un plugin (incluido o externo) usando una API estable única. Ningún plugin importa directamente de src/**. Todas las dependencias pasan por el SDK o el runtime.

Por qué ahora

  • Los conectores actuales mezclan patrones: imports directos del core, bridges solo-dist, y helpers personalizados.
  • Esto hace las actualizaciones frágiles y bloquea una superficie limpia de plugins externos.

Arquitectura objetivo (dos capas)

1) SDK de plugins (tiempo de compilación, estable, publicable)

Alcance: tipos, helpers y utilidades de configuración. Sin estado de runtime, sin efectos secundarios.

2) Runtime de plugins (superficie de ejecución, inyectada)

Alcance: todo lo que toca el comportamiento del runtime del core. Accedido vía OpenClawPluginApi.runtime para que los plugins nunca importen src/**.

Plan de migración (por fases, seguro)

  • Fase 0: Scaffolding
  • Fase 1: Limpieza de bridges (bajo riesgo)
  • Fase 2: Plugins con imports directos ligeros
  • Fase 3: Plugins con imports directos pesados
  • Fase 4: Conversión de iMessage a plugin
  • Fase 5: Aplicación de reglas

Criterios de éxito

  • Todos los conectores de canal son plugins usando SDK + runtime.
  • Sin imports de extensions/** desde src/**.
  • Los nuevos templates de conectores dependen solo del SDK + runtime.
  • Los plugins externos pueden desarrollarse y actualizarse sin acceso al código fuente del core.

Documentación relacionada: Plugins, Canales, Configuración.