Saltar a contenido

Arquitectura SPI de plugins

Entry points

Entry point Rol
cortex.plugins Plugin de dominio o plataforma (create_pluginPluginDescriptor)
cortex.panels configure_panel opcional para namespaces dedicados (accounting, trainer, …)

Discovery: entry points instalados → escaneo plugins/ en monorepo → sideload (PLUGIN_DIRS).

Installed vs enabled

Estado Significado
Installed Paquete pip presente; aparece en catálogo
Enabled Subconjunto activo en state store PG (/control/plugins); expone API y módulos UI

El framework registra hooks (register_resources, register_mcp_tools, register_listeners, …) solo para plugins enabled.

Hooks de bootstrap

Hook Uso
register_resources Módulos CUS y CRUD declarativo
register_forms Formularios JSON Forms
register_configuration Segmentos del panel configuration
register_mcp_tools Tools para agentes (ADR 006)
register_listeners Suscripción a events de dominio (ADR 021)
register_observers Ciclo de vida de entidades locales

Paneles

  • Generativos: operations, admin — el framework materializa con ensure_panel() cuando plugins aportan módulos.
  • Dedicados: accounting, trainerconfigure_panel opcional vía cortex.panels.
  • Plataforma: control — embebido en framework.

Bundles pip vs activación

pip install "cortex-product-unosportclub[operations-core]" instala wheels; no activa plugins. La activación es decisión del superadmin en /control/plugins.

Regla de oro

Un plugin nunca importa otro cortex_plugin_*. Integración: HTTP y/o events nombrados.

Ver ADR 023 y integración.