Skip to content

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:

bash
npx @rodmarzavala/recurrente-sdk init

Acciones que realiza:

  • Variables de Entorno: Solicita las llaves RECURRENTE_PUBLIC_KEY y RECURRENTE_SECRET_KEY y 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.constructEvent y isRecurrenteError.

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:

bash
npx @rodmarzavala/recurrente-sdk listen --forward-to http://localhost:3000/api/webhooks/recurrente

¿Cómo funciona? (Arquitectura AI-Friendly):

  1. 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).
  2. Server-Sent Events (SSE): La CLI escucha activamente los eventos entrantes desde el canal de Smee usando fetch nativo de Node.
  3. 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_SECRET desde el .env, calcula un nuevo hash HMAC-SHA256 y reemplaza el header svix-signature original con el nuevo hash local.
  4. Reenvío: Hace un POST a tu servidor local especificado en --forward-to garantizando que la petición es 100% válida.
  5. 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 init seguido de npx @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.

Publicado bajo la Licencia MIT.