Desarrollar extensiones¶
Una extensión es una fuente de tareas: un programa pequeño que le dice a Curupira qué trabajo existe. Los conectores (GitHub hoy, Monday.com y Azure DevOps en desarrollo) son extensiones, y puedes escribir las tuyas para Jira, Linear, una cola en una base de datos o cualquier otra cosa que pueda producir un elemento a la vez.
Las extensiones se ejecutan como procesos separados. Curupira las inicia con uvx o
npx y se comunica con ellas por stdin y stdout mediante un pequeño
protocolo JSON-RPC. Nunca se ejecutan dentro del proceso de
Curupira, y no hay FFI de por medio.
-
SDK de Python
curupira-sdk: decora una función y devuelve un objeto. Solo usa la stdlib; Pydantic es opcional. -
SDK de JavaScript y TypeScript
@caipora-labs/curupira-sdk:defineTriggersy unbinde npm, iniciado connpx. -
Manifiesto y protocolo
Framing, métodos, resultados, códigos de error y el manifiesto
curupira-extension.toml.
Qué hace una extensión¶
| Una extensión... | Curupira (el host)... |
|---|---|
| Declara sus triggers y los ajustes que acepta cada uno | Lee el TOML y pasa los ajustes de cada automatización |
| Valida esos ajustes | Informa los errores de validación desde curupira validate |
| Devuelve el siguiente elemento como una lista plana de pares clave/valor, o nada | Deduplica, planifica y limita la concurrencia |
| Recibe avisos cuando una tarea empieza y cuando termina | Clona, crea worktrees, ejecuta setup_script |
| Escribe los logs en stderr | Renderiza el prompt e inicia el agente de código |
Las extensiones no deben elegir un agente de código, construir líneas de comando de agentes, clonar repositorios ni gestionar worktrees. Los agentes de código están integrados en el host; dar soporte a un agente nuevo es un cambio en el propio Curupira.
Registrar una extensión¶
Cada extensión se registra en settings.toml con un alias que eliges, junto con el
lanzador y sus argumentos. Luego las automatizaciones se refieren a un trigger como
<alias>/<trigger>.
args se pasan como argumentos separados, nunca a través de un shell. Fija una versión
para que todas las máquinas ejecuten el mismo código. tools conserva solo los triggers
que coinciden (github-*) o los descarta (!github-project-*).
Inspeccionar plugins¶
curupira plugins lista los triggers que puedes usar y los ajustes que acepta cada uno:
plugins list también muestra el cron integrado y los proveedores de agentes de código
integrados (etiquetados como agent:<name> con origen built-in). Listar lee los
manifiestos curupira-extension.toml y nunca ejecuta código de las extensiones.
Requisitos de ejecución¶
| Origen | Necesita en el PATH |
|---|---|
Plugins type = "uvx" |
uvx (de uv) |
Plugins type = "npx" |
npx (Node.js 20+) |
| Cron y agentes de código integrados | las CLI de agentes que configures, más git |
Si falta un lanzador, curupira validate dice cuál.
Seguridad¶
Las extensiones de terceros se ejecutan con los privilegios de tu usuario. Un subproceso no es un sandbox. Instala solo paquetes en los que confíes y fija sus versiones. Curupira nunca instala paquetes al listar plugins.
El texto que devuelve una extensión suele venir de personas fuera de tu equipo (títulos de issues, comentarios). Termina en un prompt; lee el texto de las tareas no es confiable antes de automatizar fuentes públicas.