Skip to content

Conversation

@leifermendez
Copy link
Member

Que tipo de Pull Request es?

  • Mejoras
  • Bug
  • Docs / tests

Descripción

Se agrega un nuevo proveedor de Gmail (@builderbot/provider-gmail) que permite integrar BuilderBot con Gmail usando autenticación OAuth2.

Características principales

  • Autenticación OAuth2: Integración segura con Gmail sin necesidad de contraseñas de aplicación
  • Recepción de emails en tiempo real: Polling con seguimiento de historial
  • Envío de emails: A través de la API de Gmail
  • Soporte nativo de threads: Mantiene conversaciones en hilos de Gmail
  • Manejo de adjuntos: Soporte para enviar y recibir archivos
  • Detección automática de eventos: Identifica automáticamente imágenes, videos, audios y documentos
  • Marcar como leído: Opción para marcar emails como leídos después de procesarlos

Cambios realizados

  1. Actualización de configuración del monorepo:

    • Agregado packages/provider-gmail a lerna.json
    • Agregado packages/provider-gmail a package.json
  2. Actualización de CLI:

    • Agregada opción "Gmail" con hint "OAuth2" a la lista de proveedores disponibles
  3. Nuevo paquete @builderbot/provider-gmail:

    • Implementación completa del proveedor con soporte OAuth2
    • Clase GmailCoreVendor para lógica de Gmail API
    • Clase GmailProvider que extiende ProviderClass
    • Utilidades para parsing de emails y manejo de MIME types
    • Suite completa de tests (498+ líneas de tests)
    • Documentación detallada en README.md

Métodos principales disponibles

  • sendMessage(): Enviar emails
  • sendMedia(): Enviar emails con adjuntos
  • reply(): Responder en threads
  • saveFile(): Guardar adjuntos
  • getAttachments(): Obtener adjuntos
  • isReply(): Verificar si es una respuesta
  • getThreadId(): Obtener ID del thread

Configuración requerida

const gmailProvider = createProvider(GmailProvider, {
    email: '[email protected]',
    oauth2: {
        clientId: 'YOUR_CLIENT_ID',
        clientSecret: 'YOUR_CLIENT_SECRET',
        refreshToken: 'YOUR_REFRESH_TOKEN'
    }
})

Forma parte de este proyecto:

https://claude.ai/code/session_011piiJy3GawULwcVB53STnY

…pport

Implements a new Gmail-specific provider using the Gmail API with OAuth2
authentication, following the same design pattern as provider-email. Uses
polling with history tracking for real-time email reception and Gmail API
for sending, with native thread support.

- Gmail API OAuth2 auth (clientId, clientSecret, refreshToken)
- Email polling via Gmail history API with fallback to messages.list
- Send emails with attachments via raw MIME + Gmail API
- Native Gmail thread tracking (threadId)
- Attachment download via Gmail API
- 84 passing unit tests (provider, core, utils)
- CLI registration with 'gmail' option (OAuth2 hint)
- Lerna/workspace integration
- 10 starter templates (JS/TS x 5 databases)

https://claude.ai/code/session_011piiJy3GawULwcVB53STnY
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants