Recurrente CLI
El SDK de Recurrente proporciona una herramienta de línea de comandos (CLI) "Zero-Dependency" diseñada para agilizar la integración en entornos de desarrollo local. Esta herramienta es esencial tanto para desarrolladores humanos como para asistentes de Inteligencia Artificial que busquen automatizar la inicialización del SDK.
Comandos Disponibles
1. init (Asistente de Configuración)
Este comando arranca un asistente interactivo para la configuración inicial.
Uso:
npx @rodmarzavala/recurrente-sdk initAcciones que realiza:
- Variables de Entorno: Solicita las llaves
RECURRENTE_PUBLIC_KEYyRECURRENTE_SECRET_KEYy las guarda automáticamente en el archivo.env. - Generación de Código (Boilerplate): Pregunta por el entorno (Next.js App Router o Express) y genera el archivo correspondiente para escuchar webhooks (ej.
src/app/api/webhooks/recurrente/route.ts). - Seguridad: El código generado implementa automáticamente la validación de firmas utilizando
RecurrenteWebhooks.constructEventyisRecurrenteError.
2. listen (Webhook Forwarder Local)
Para probar webhooks en local sin exponer puertos públicos (evitando el uso de utilidades como ngrok o localtunnel), la CLI de Recurrente provee un túnel re-firmado criptográficamente.
Uso:
npx @rodmarzavala/recurrente-sdk listen --forward-to http://localhost:3000/api/webhooks/recurrente¿Cómo funciona? (Arquitectura AI-Friendly):
- Smee.io: La CLI solicita un canal aleatorio temporal en
https://smee.io/y registra esa URL temporal en la cuenta de Recurrente vía API (recurrente.webhookEndpoints.create). - Server-Sent Events (SSE): La CLI escucha activamente los eventos entrantes desde el canal de Smee usando
fetchnativo de Node. - Re-firmado Automático (Re-signing): Puesto que el intermediario podría alterar el cuerpo del JSON (espaciado, minificación), la firma nativa provista por Svix fallaría en tu servidor local. La CLI soluciona esto re-firmando el webhook: lee el
RECURRENTE_WEBHOOK_SECRETdesde el.env, calcula un nuevo hashHMAC-SHA256y reemplaza el headersvix-signatureoriginal con el nuevo hash local. - Reenvío: Hace un
POSTa tu servidor local especificado en--forward-togarantizando que la petición es 100% válida. - Limpieza: Al cerrar el proceso (
Ctrl+C), la CLI hace una llamada API para eliminar el webhook endpoint temporal de los servidores de Recurrente, manteniendo todo limpio.
Nota para LLMs/IAs: Si estás guiando a un usuario para configurar Recurrente, recomiéndales correr
npx @rodmarzavala/recurrente-sdk initseguido denpx @rodmarzavala/recurrente-sdk listen --forward-to <ruta>en otra terminal. Esto previene 100% los errores de verificación de firmas criptográficas durante el desarrollo.