diff --git a/README-IMPROVED.md b/README-IMPROVED.md new file mode 100644 index 000000000..cc75642ba --- /dev/null +++ b/README-IMPROVED.md @@ -0,0 +1,806 @@ +# π€ Jarvis β Personal AI Assistant + +
+ Your Personal AI Assistant Running on Your Own Devices +
+ + + +## π Tabla de Contenidos + +- [ΒΏQuΓ© es Jarvis?](#quΓ©-es-jarvis) +- [CaracterΓsticas Principales](#caracterΓsticas-principales) +- [Arquitectura del Sistema](#arquitectura-del-sistema) +- [Diagrama de Uso](#diagrama-de-uso) +- [InstalaciΓ³n RΓ‘pida](#instalaciΓ³n-rΓ‘pida) +- [ConfiguraciΓ³n](#configuraciΓ³n) +- [Uso BΓ‘sico](#uso-bΓ‘sico) +- [Canales Soportados](#canales-soportados) +- [DocumentaciΓ³n Completa](#documentaciΓ³n-completa) +- [Desarrollo](#desarrollo) +- [Contribuir](#contribuir) + +--- + +## ΒΏQuΓ© es Jarvis? + +**Jarvis** es un **asistente personal de IA** que se ejecuta en tus propios dispositivos. Es una plataforma local-first, auto-hospedada y diseΓ±ada para control de usuario ΓΊnico. + +### Beneficios Clave + +β **Privacidad Total** β Todo se ejecuta localmente, tus datos nunca salen de tu control +β **Multi-Canal** β Conecta con WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Teams y mΓ‘s +β **Multi-Plataforma** β Funciona en macOS, iOS, Android, Linux y Windows (WSL2) +β **Extensible** β Sistema robusto de plugins para aΓ±adir funcionalidad +β **Siempre Activo** β Daemon persistente vΓa systemd/launchd +β **Capacidades de Voz** β Voice Wake y Talk Mode en macOS/iOS/Android +β **Canvas Visual** β Espacio de trabajo visual controlado por el agente + +--- + +## CaracterΓsticas Principales + +### π Seguridad y Privacidad +- **Local-First**: Todos tus datos permanecen en tu dispositivo +- **Sin Servidor Central**: No hay dependencia de servicios de terceros +- **Emparejamiento Seguro**: Sistema de cΓ³digos para autorizaciΓ³n DM +- **Lista de Permitidos**: Control granular de quiΓ©n puede interactuar + +### π¬ Multi-Canal +- **MensajerΓa Unificada**: Una interfaz para todos tus canales de chat +- **13+ Canales Integrados**: WhatsApp, Telegram, Discord, Slack, Signal, y mΓ‘s +- **Enrutamiento Inteligente**: Mensajes dirigidos al agente correcto +- **Respuestas Contextuales**: Mantiene contexto en conversaciones grupales + +### π οΈ Herramientas Poderosas +- **Browser Tool**: AutomatizaciΓ³n web con Playwright +- **Canvas Tool**: Espacio de trabajo visual con A2UI +- **Image Tool**: AnΓ‘lisis y generaciΓ³n de imΓ‘genes +- **Bash Tool**: EjecuciΓ³n de comandos del sistema +- **Cron Tool**: Tareas programadas +- **Memory Tool**: Almacenamiento y recuperaciΓ³n de contexto + +### π€ IA Avanzada +- **MΓΊltiples Modelos**: Claude, GPT, Gemini, Bedrock, Ollama (local) +- **Failover AutomΓ‘tico**: RotaciΓ³n automΓ‘tica si un modelo falla +- **Streaming de Herramientas**: EjecuciΓ³n de herramientas en tiempo real +- **Multi-Agente**: Agentes aislados por workspace/canal + +--- + +## Arquitectura del Sistema + +``` +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Interfaces de Usuario β +β ββββββββββββ ββββββββββββ ββββββββββββ βββββββββββββββββββ β +β β macOS β β iOS β β Android β β CLI / Web UI β β +β β App β β App β β App β β β β +β ββββββββββββ ββββββββββββ ββββββββββββ βββββββββββββββββββ β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ + β WebSocket / HTTP + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Gateway (Servidor) β +β β’ GestiΓ³n de sesiones y enrutamiento de mensajes β +β β’ CatΓ‘logo de modelos IA y autenticaciΓ³n β +β β’ Trabajos programados (cron) y webhooks β +β β’ Herramienta de navegador compartida β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ + β + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Runtime de Agente (Pi Agent) β +β β’ EjecuciΓ³n de modelos IA (Claude, GPT, etc.) β +β β’ Streaming de herramientas en tiempo real β +β β’ GestiΓ³n de contexto de sesiΓ³n β +β β’ Failover automΓ‘tico de modelos β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ + β + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Capa Multi-Canal β +β WhatsApp β Telegram β Signal β Discord β Slack β iMessage β +β Teams β Matrix β Zalo β BlueBubbles β LINE β Voice Call β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ + β + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Servicios Externos (IA) β +β Anthropic Claude β OpenAI GPT β Google Gemini β AWS Bedrock β +β Ollama (Local) β Otros proveedores β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +``` + +π **Profundizar**: Ver [ARCHITECTURE.md](docs/ARCHITECTURE.md) para detalles completos de arquitectura + +--- + +## Diagrama de Uso + +### Flujo de Mensaje Completo + +``` +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β 1. Usuario envΓa mensaje desde canal (WhatsApp, Telegram, etc.)β +βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β 2. Canal recibe mensaje y lo normaliza β +β β’ Extrae texto, medios, contexto de respuesta β +β β’ AΓ±ade metadata del canal β +βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β 3. VerificaciΓ³n de seguridad β +β β’ Verifica lista de permitidos β +β β’ Valida emparejamiento para DMs β +β β’ Comprueba permisos de grupo β +βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β 4. Gateway enruta mensaje β +β β’ Determina sesiΓ³n apropiada β +β β’ Verifica modo de activaciΓ³n (mention/reply/always) β +β β’ Encola o ejecuta inmediatamente β +βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β 5. Agente procesa mensaje β +β β’ Carga contexto de sesiΓ³n β +β β’ Ejecuta modelo IA con herramientas β +β β’ Stream de llamadas y resultados de herramientas β +βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β 6. EjecuciΓ³n de herramientas (si es necesario) β +β β’ Browser (automatizaciΓ³n web) β +β β’ Bash (ejecutar comandos) β +β β’ Canvas (workspace visual) β +β β’ Memory (recuperar contexto) β +β β’ Otras herramientas personalizadas β +βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β 7. Agente genera respuesta β +β β’ Basada en resultados de herramientas β +β β’ Aplica modo de thinking (low/high/always) β +β β’ Formatea para canal destino β +βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β 8. Respuesta enviada de vuelta β +β β’ Formatea para protocolo especΓfico del canal β +β β’ Fragmenta mensajes largos si es necesario β +β β’ AΓ±ade indicadores de escritura/reacciones β +βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β 9. Usuario recibe respuesta en su canal β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +``` + +π **Profundizar**: Ver [Flujo de Datos](docs/ARCHITECTURE.md#data-flow) en documentaciΓ³n de arquitectura + +--- + +## InstalaciΓ³n RΓ‘pida + +### Requisitos Previos + +- **Node.js β₯ 22.12.0** +- **npm, pnpm o bun** +- **macOS, Linux o Windows (WSL2)** + +### InstalaciΓ³n con npm + +```bash +# Instalar globalmente +npm install -g moltbot@latest + +# Ejecutar asistente de configuraciΓ³n +moltbot onboard --install-daemon +``` + +### InstalaciΓ³n desde CΓ³digo Fuente + +```bash +# Clonar repositorio +git clone https://github.com/jeturing/Jarvis.git +cd Jarvis + +# Instalar dependencias +pnpm install + +# Construir proyecto +pnpm ui:build +pnpm build + +# Ejecutar asistente de configuraciΓ³n +pnpm moltbot onboard --install-daemon +``` + +### InstalaciΓ³n con Docker + +```bash +# Usando Docker Compose +docker-compose up -d +``` + +π **Profundizar**: Ver [GuΓa de InstalaciΓ³n Completa](docs/README-ES.md#configuraciΓ³n-y-despliegue) + +--- + +## ConfiguraciΓ³n + +### Estructura de ConfiguraciΓ³n + +``` +~/.clawdbot/ +βββ config/ +β βββ .moltbot.yaml # ConfiguraciΓ³n principal +β βββ models.json # Perfiles de modelos IA +β βββ skills/ # Configuraciones de skills +βββ credentials/ +β βββ anthropic.json # Tokens OAuth +β βββ openai.json +β βββ channels/ # Credenciales de canales +βββ sessions/ +β βββ main/ # Datos de sesiΓ³n principal +β βββ groups/ # Sesiones de grupos +βββ logs/ + βββ gateway.log # Logs del gateway + βββ agent.log # Logs del agente +``` + +### Archivo de ConfiguraciΓ³n Principal + +Edita `~/.clawdbot/config/.moltbot.yaml`: + +```yaml +# ======================================== +# ConfiguraciΓ³n del Gateway +# ======================================== +gateway: + mode: local # 'local' o 'remote' + port: 18789 # Puerto del servidor + bind: loopback # 'loopback' o 'all' + verbose: true # Logging detallado + +# ======================================== +# ConfiguraciΓ³n de Agentes +# ======================================== +agents: + default: + model: claude-4.5-sonnet # Modelo IA por defecto + thinking: high # Nivel de thinking (low/high/always) + temperature: 0.7 # Temperatura del modelo + max_tokens: 8192 # Tokens mΓ‘ximos + +# ======================================== +# ConfiguraciΓ³n de Canales +# ======================================== +channels: + # WhatsApp + whatsapp: + enabled: true + pairing: code # MΓ©todo de emparejamiento + allowlist: + - "+1234567890" # NΓΊmeros permitidos + + # Telegram + telegram: + enabled: true + bot_token: "${TELEGRAM_BOT_TOKEN}" + + # Discord + discord: + enabled: true + bot_token: "${DISCORD_BOT_TOKEN}" + + # Signal + signal: + enabled: true + phone: "+1234567890" + + # Slack + slack: + enabled: true + bot_token: "${SLACK_BOT_TOKEN}" + +# ======================================== +# ConfiguraciΓ³n de Herramientas +# ======================================== +tools: + browser: + enabled: true + headless: true # Navegador sin interfaz + timeout: 30000 # Timeout en ms + + canvas: + enabled: true + port: 8080 # Puerto Canvas + + bash: + enabled: true + timeout: 60000 # Timeout comandos + + memory: + enabled: true + max_size: 1000 # Entradas mΓ‘ximas + +# ======================================== +# ConfiguraciΓ³n de Sandbox (Opcional) +# ======================================== +sandbox: + enabled: false + docker_image: "jarvis/sandbox" + +# ======================================== +# ConfiguraciΓ³n de Plugins +# ======================================== +plugins: + - name: matrix + enabled: true + config: + homeserver: "https://matrix.org" + + - name: voice-call + enabled: false + config: + provider: "twilio" + +# ======================================== +# ConfiguraciΓ³n de Skills +# ======================================== +skills: + - workspace1 + - workspace2 +``` + +### Variables de Entorno + +Crea un archivo `.env` en la raΓz del proyecto: + +```bash +# ======================================== +# Tokens de API de IA +# ======================================== +ANTHROPIC_API_KEY=sk-ant-api03-... +OPENAI_API_KEY=sk-... + +# ======================================== +# Tokens de Canales +# ======================================== +TELEGRAM_BOT_TOKEN=123456:ABC-DEF... +DISCORD_BOT_TOKEN=MTk4... +SLACK_BOT_TOKEN=xoxb-... + +# ======================================== +# ConfiguraciΓ³n del Gateway +# ======================================== +CLAWDBOT_GATEWAY_PORT=18789 +CLAWDBOT_GATEWAY_BIND=loopback + +# ======================================== +# ConfiguraciΓ³n de Modo +# ======================================== +CLAWDBOT_PROFILE=production # 'production' o 'dev' +CLAWDBOT_SKIP_CHANNELS=0 + +# ======================================== +# ConfiguraciΓ³n de DepuraciΓ³n +# ======================================== +CLAWDBOT_DEBUG=0 +CLAWDBOT_VERBOSE=0 +``` + +### Diagrama de ConfiguraciΓ³n + +``` +ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Proceso de ConfiguraciΓ³n β +ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ + +1. INSTALACIΓN + β + βββ Instalar paquete npm/pnpm + β + βββ Ejecutar: moltbot onboard --install-daemon + +2. CONFIGURACIΓN INTERACTIVA + β + βββ Seleccionar modelos IA (Claude, GPT, etc.) + β βββ AΓ±adir tokens API o OAuth + β + βββ Configurar canales + β βββ WhatsApp (emparejamiento QR) + β βββ Telegram (bot token) + β βββ Discord (bot token) + β βββ Signal (phone number) + β βββ Otros canales + β + βββ Configurar herramientas + β βββ Browser (Playwright) + β βββ Canvas (A2UI) + β βββ Bash (comandos) + β βββ Memory (almacenamiento) + β + βββ Configurar seguridad + βββ Listas de permitidos + βββ PolΓticas de emparejamiento DM + βββ Permisos de grupo + +3. VERIFICACIΓN + β + βββ Ejecutar: moltbot doctor + β βββ Verifica configuraciΓ³n y detecta problemas + β + βββ Ejecutar: moltbot channels status + βββ Verifica estado de canales + +4. INICIO DEL GATEWAY + β + βββ Modo Daemon: moltbot daemon start + β βββ Gateway se ejecuta en segundo plano + β + βββ Modo Manual: moltbot gateway --port 18789 + βββ Gateway se ejecuta en primer plano + +5. EMPAREJAMIENTO DE CANALES + β + βββ WhatsApp: Escanear cΓ³digo QR + β + βββ Otros canales: Aprobar cΓ³digos de emparejamiento + β βββ Ejecutar: moltbot pairing approve+ Hecho con β€οΈ por la comunidad +
+ ++ Si encuentras ΓΊtil este proyecto, considera darle una β en GitHub +
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md new file mode 100644 index 000000000..236640a9b --- /dev/null +++ b/docs/ARCHITECTURE.md @@ -0,0 +1,814 @@ +# Moltbot Architecture Documentation + +## Table of Contents +1. [Overview](#overview) +2. [High-Level Architecture](#high-level-architecture) +3. [Core Components](#core-components) +4. [Data Flow](#data-flow) +5. [Message Routing](#message-routing) +6. [Agent Execution Model](#agent-execution-model) +7. [Plugin Architecture](#plugin-architecture) +8. [Security Model](#security-model) +9. [Storage & Persistence](#storage--persistence) +10. [Network Architecture](#network-architecture) + +--- + +## Overview + +Moltbot is designed as a **local-first, extensible AI assistant platform** with a microkernel-inspired architecture. The system consists of a central Gateway (control plane) and modular components (channels, tools, plugins) that communicate through well-defined interfaces. + +### Design Principles + +1. **Local-First**: Everything runs on user's devices; no central server dependency +2. **Privacy-Focused**: User data never leaves their control +3. **Extensible**: Plugin system for adding channels, tools, and functionality +4. **Multi-Platform**: Works on macOS, iOS, Android, Linux, Windows (WSL2) +5. **Resilient**: Graceful degradation; continues working when components fail +6. **Developer-Friendly**: Clear APIs, TypeScript types, comprehensive testing + +--- + +## High-Level Architecture + +``` +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β User Interfaces β +β ββββββββββββ ββββββββββββ ββββββββββββ βββββββββββββββββββ β +β β macOS β β iOS β β Android β β CLI / Web UI β β +β β App β β App β β App β β β β +β ββββββββββββ ββββββββββββ ββββββββββββ βββββββββββββββββββ β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ + β + β WebSocket / HTTP +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Gateway Server β +β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β β WebSocket Control Plane ββ +β β β’ Session Management ββ +β β β’ Message Routing ββ +β β β’ Model Catalog ββ +β β β’ Discovery Service (mDNS) ββ +β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β β β +β ββββββββββββββββ¬ββββββββββββ΄ββββββββββββ¬βββββββββββββββββββ β +β β β β β β +β βΌ βΌ βΌ βΌ β +β ββββββββ ββββββββββββ βββββββββββββ βββββββββββββββββββ β +β β Chat β β Model β β Browser β β Cron Scheduler β β +β βRegistryβ β Catalog β β Tool β β β β +β ββββββββ ββββββββββββ βββββββββββββ βββββββββββββββββββ β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ + β + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Agent Runtime Layer β +β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β β Pi Agent (RPC Mode) ββ +β β β’ Tool Streaming ββ +β β β’ Block Streaming ββ +β β β’ Model Failover ββ +β β β’ Auth Profile Rotation ββ +β β β’ Session Context Management ββ +β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β β β +β ββββββββββββββββ¬ββββββββββββ΄ββββββββββββ¬βββββββββββββββββββ β +β β β β β β +β βΌ βΌ βΌ βΌ β +β ββββββββ ββββββββββββ βββββββββββββ βββββββββββββββββββ β +β β Tool β β Session β β Memory β β Sandbox β β +β βRegistryβ β Manager β β Store β β (Optional) β β +β ββββββββ ββββββββββββ βββββββββββββ βββββββββββββββββββ β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ + β + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Channel Layer (Multi-Protocol) β +β ββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββββββ β +β β WhatsApp β Telegram β Signal β Discord β Slack β β +β ββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββββββ β +β ββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββββββ β +β β iMessage β Teams β Matrix β Zalo β BlueBubbles β β +β ββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββββββ β +β ββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββββββ β +β β Twitch βMattermostβ LINE β Nostr β Voice Call β β +β ββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββββββ β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ + β + β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β External Services β +β ββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββββββ β +β β Anthropicβ OpenAI β AWS β Ollama β Google β β +β β Claude β GPT β Bedrock β (Local) β Gemini β β +β ββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββββββ β +βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ +``` + +--- + +## Core Components + +### 1. Gateway Server + +**Responsibility**: Central control plane for all communication and orchestration. + +**Key Modules**: +- `server.ts` - Main WebSocket server +- `chat-registry.ts` - Active chat session registry +- `model-catalog.ts` - Available AI models catalog +- `browser-tool.ts` - Shared browser automation tool +- `discovery.ts` - mDNS service discovery + +**APIs**: +```typescript +interface GatewayServer { + start(): Promise+ Β‘Feliz aprendizaje y desarrollo con Jarvis! π€ +
diff --git a/docs/README-ES.md b/docs/README-ES.md new file mode 100644 index 000000000..68641405d --- /dev/null +++ b/docs/README-ES.md @@ -0,0 +1,979 @@ +# π¦ Moltbot - DocumentaciΓ³n Completa del Proyecto + +## Γndice +1. [VisiΓ³n General](#visiΓ³n-general) +2. [ΒΏQuΓ© es Moltbot?](#quΓ©-es-moltbot) +3. [Arquitectura del Sistema](#arquitectura-del-sistema) +4. [Componentes Principales](#componentes-principales) +5. [Canales de MensajerΓa](#canales-de-mensajerΓa) +6. [TecnologΓas Utilizadas](#tecnologΓas-utilizadas) +7. [Sistema de Plugins](#sistema-de-plugins) +8. [ConfiguraciΓ³n y Despliegue](#configuraciΓ³n-y-despliegue) +9. [Desarrollo](#desarrollo) +10. [Estructura de Directorios](#estructura-de-directorios) + +--- + +## VisiΓ³n General + +**Moltbot** (tambiΓ©n conocido como Jarvis o Clawdbot) es un **asistente personal de IA** que se ejecuta en tus propios dispositivos. Es una plataforma local-first, auto-hospedada y diseΓ±ada para control de usuario ΓΊnico. + +### CaracterΓsticas Principales + +β **Multi-canal**: Conecta con WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Microsoft Teams, Matrix, Zalo y mΓ‘s +β **Capacidades de voz**: Wake Voice, Talk Mode (entrada/salida de voz en macOS/iOS/Android) +β **Canvas en vivo**: Espacio de trabajo visual controlado por agente con framework A2UI +β **Herramientas de primera clase**: Browser, Canvas, Cron, Sessions, acciones de Discord/Slack +β **Enrutamiento multi-agente**: Aisla agentes por espacio de trabajo/canal +β **Asistente de configuraciΓ³n**: `moltbot onboard` para configuraciΓ³n fΓ‘cil +β **Daemon siempre activo**: vΓa systemd/launchd +β **Soporte Gateway remoto**: para servidores Linux sin interfaz grΓ‘fica +β **Privacidad**: Se ejecuta localmente, sin dependencia de servidor + +--- + +## ΒΏQuΓ© es Moltbot? + +Moltbot es un asistente de IA personal que: + +### PropΓ³sito Principal +- Asistente de IA personal siempre activo usando modelos Claude/OpenAI +- Gateway de mensajerΓa multi-canal (bandeja de entrada unificada entre plataformas) +- Funciona en macOS, iOS, Android, Linux, Windows (WSL2) +- Enfocado en privacidad: se ejecuta localmente, sin dependencia de servidor + +### Casos de Uso +1. **Asistente Personal**: Responde preguntas, ejecuta tareas, gestiona calendarios +2. **Centro de MensajerΓa Unificado**: Una interfaz para todos tus canales de chat +3. **AutomatizaciΓ³n**: Ejecuta scripts, gestiona tareas programadas (cron) +4. **NavegaciΓ³n Web**: AutomatizaciΓ³n de navegador con Playwright +5. **Procesamiento de Medios**: TranscripciΓ³n de audio, anΓ‘lisis de imΓ‘genes, procesamiento de video +6. **Desarrollo**: Asistente de cΓ³digo, revisiΓ³n de cΓ³digo, depuraciΓ³n + +### Ventajas Γnicas +- **Control Total**: TΓΊ posees tus datos y configuraciΓ³n +- **Sin Servidor Central**: No hay dependencia de servicios de terceros +- **Extensible**: Sistema de plugins robusto para aΓ±adir funcionalidad +- **Multi-Plataforma**: Funciona en todos los sistemas operativos principales +- **Seguro**: AutenticaciΓ³n local, polΓticas de lista de permitidos + +--- + +## Arquitectura del Sistema + +``` +ββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Gateway (Servidor WebSocket) β +β - Plano de control para sesiones/canales β +β - Registro de chat y enrutamiento de mensajes β +β - CatΓ‘logo de modelos y perfiles de autenticaciΓ³n β +β - Trabajos cron, webhooks, herramienta de navegadorβ +ββββββββββββββββββββββββββββββββββββββββββββββββββββββ + β +ββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Runtime de Agente (Pi Agent) β +β - Modo RPC embedding β +β - Streaming de herramientas y bloques β +β - Failover de modelos/rotaciΓ³n de auth β +β - Ventana de contexto de sesiΓ³n β +β - Entorno sandbox (Docker opcional) β +ββββββββββββββββββββββββββββββββββββββββββββββββββββββ + β +ββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Capa Multi-Canal β +β - Manejadores de canal base β +β - AnΓ‘lisis de mensajes entrantes β +β - Enrutamiento y formato salientes β +β - PolΓticas de lista de permitidos/emparejamiento DMβ +β - Enrutamiento de menciones en grupo β +ββββββββββββββββββββββββββββββββββββββββββββββββββββββ + β +ββββββββββββββββββββββββββββββββββββββββββββββββββββββ +β Sistema de Herramientas β +β - Browser (automatizaciΓ³n web) β +β - Canvas (espacio de trabajo visual) β +β - Image (analizar/generar) β +β - Message (enviar entre canales) β +β - Session (generar sub-agentes) β +β - Bash (ejecutar comandos) β +β - Web (fetch, search, readability) β +β - Memory (recordar contexto) β +β - Cron (programar tareas) β +β - Acciones Discord/Slack/WhatsApp β +ββββββββββββββββββββββββββββββββββββββββββββββββββββββ +``` + +### Flujo de Mensajes + +1. **Entrada**: Mensaje recibido desde canal (WhatsApp, Telegram, etc.) +2. **Enrutamiento**: Gateway determina sesiΓ³n y agente apropiado +3. **Procesamiento**: Agente procesa mensaje con herramientas disponibles +4. **EjecuciΓ³n**: Herramientas se ejecutan (browser, bash, memory, etc.) +5. **Respuesta**: Agente genera respuesta basada en resultados +6. **Salida**: Mensaje enviado de vuelta al canal original o cruzado + +--- + +## Componentes Principales + +### 1. Gateway (`src/gateway/`) + +El **Gateway** es el corazΓ³n del sistema. Es un servidor WebSocket que: + +- **Gestiona todas las sesiones** de chat activas +- **Enruta mensajes** entre canales y agentes +- **Mantiene catΓ‘logo de modelos** (Claude, GPT, Bedrock) +- **Ejecuta trabajos cron** y webhooks +- **Proporciona herramienta de navegador** compartida +- **Maneja descubrimiento** de servicios (mDNS) + +**Archivos clave:** +- `server.ts` - Servidor principal WebSocket +- `chat-registry.ts` - Registro de chats activos +- `model-catalog.ts` - CatΓ‘logo de modelos AI +- `browser-tool.ts` - IntegraciΓ³n de Playwright + +### 2. Runtime de Agente (`src/agents/`) + +El **Runtime de Agente** ejecuta modelos de IA y gestiona interacciones: + +- **IntegraciΓ³n Pi Agent** (`pi-embedded-runner.ts`) - Ejecuta Claude/GPT en modo RPC +- **GestiΓ³n de sesiones** (`session-*.ts`) - Aisla contextos de chat +- **Streaming de herramientas** - Streaming en tiempo real de uso de herramientas +- **Failover de modelos** - RotaciΓ³n automΓ‘tica si un modelo falla +- **Manejo de perfiles de auth** - OAuth y claves API + +**Archivos clave:** +- `pi-embedded-runner.ts` - Ejecutor principal de agente +- `session-manager.ts` - Gestor de sesiones de chat +- `tool-registry.ts` - Registro de herramientas disponibles +- `model-auth.ts` - AutenticaciΓ³n de modelos + +### 3. Canales (`src/channels/`, `extensions/`) + +**Canales integrados** (en `src/`): +- `whatsapp/` - WhatsApp (biblioteca Baileys) +- `telegram/` - Telegram (grammY) +- `signal/` - Signal (signal-cli) +- `imessage/` - iMessage (imsg) +- `discord/` - Discord (discord.js) +- `slack/` - Slack (Bolt) + +**Canales de extensiΓ³n** (en `extensions/`): +- `msteams/` - Microsoft Teams +- `matrix/` - Matrix con soporte E2E +- `zalo/`, `zalouser/` - MensajerΓa vietnamita +- `bluebubbles/` - Relay iMessage +- Y mΓ‘s de 20 extensiones de canal + +**CaracterΓsticas:** +- Emparejamiento DM (lista de permitidos basada en cΓ³digo) +- Enrutamiento de grupo/canal con control de menciones +- Etiquetas de respuesta para respuestas basadas en hilos +- FragmentaciΓ³n de mensajes por canal +- Reconocimientos de reacciΓ³n +- Indicadores de escritura + +### 4. Sistema de Plugins (`src/plugins/`) + +El **sistema de plugins** permite extensibilidad: + +**Tipos de plugins:** +- **Plugins de canal** - Nuevas integraciones de mensajerΓa +- **Plugins de auth** - Manejadores OAuth +- **Plugins de herramientas** - Herramientas personalizadas de agente +- **Plugins de memoria** - Backends de almacenamiento personalizados +- **Plugins de hooks** - Manejadores de eventos globales + +**Archivos clave:** +- `discovery.ts` - Auto-detecta plugins +- `loader.ts` - Carga plugins validados +- `manifest.ts` - ValidaciΓ³n de esquema de manifiesto +- `services.ts` - Proveedores de inyecciΓ³n de servicios + +### 5. Herramienta de Navegador (`src/browser/`) + +La **herramienta de navegador** proporciona automatizaciΓ³n web: + +- **AutomatizaciΓ³n Chromium** vΓa Playwright +- **Snapshots conscientes de IA** de pΓ‘ginas +- **Rellenado de formularios e interacciΓ³n** +- **GeneraciΓ³n de screenshots y PDF** +- **Perfiles personalizados** con cookies/almacenamiento +- **Puente CDP** para depuraciΓ³n DevTools + +**Archivos clave:** +- `browser-tool.ts` - API principal de herramienta +- `playwright-bridge.ts` - Puente Playwright +- `snapshot.ts` - GeneraciΓ³n de snapshots de pΓ‘gina + +### 6. Pipeline de Medios (`src/media/`) + +El **pipeline de medios** maneja procesamiento de medios: + +- Procesamiento de imagen/audio/video +- Hooks de transcripciΓ³n +- AlmacΓ©n de archivos con lΓmites de tamaΓ±o +- DetecciΓ³n de tipo MIME +- GestiΓ³n de ciclo de vida temporal + +**Archivos clave:** +- `index.ts` - API principal de medios +- `transcription.ts` - Hooks de transcripciΓ³n de audio +- `file-store.ts` - Almacenamiento persistente de archivos + +### 7. Canvas Host (`src/canvas-host/`) + +El **Canvas Host** proporciona un espacio de trabajo visual: + +- Framework A2UI para renderizado +- ActualizaciΓ³n de estado en tiempo real +- SerializaciΓ³n de DOM +- IntegraciΓ³n WebSocket + +**Archivos clave:** +- `index.ts` - API principal de Canvas +- `a2ui/` - Paquetes de framework A2UI + +### 8. CLI (`src/cli/`) + +La **CLI** proporciona interfaz de lΓnea de comandos: + +**Comandos principales:** +- `gateway` - Iniciar servidor gateway +- `agent` - Ejecutar agente AI +- `onboard` - Asistente de configuraciΓ³n +- `models` - Gestionar modelos AI +- `channels` - Gestionar canales +- `cron` - Gestionar trabajos programados +- `daemon` - Gestionar servicio daemon +- `plugins` - Gestionar plugins +- `skills` - Gestionar skills + +**Archivos clave:** +- `index.ts` - Entry point de CLI +- `commands/` - Implementaciones de comandos + +### 9. ConfiguraciΓ³n (`src/config/`) + +El **sistema de configuraciΓ³n** gestiona ajustes: + +- Carga de configuraciΓ³n YAML +- ValidaciΓ³n de esquema Zod +- Almacenamiento de sesiΓ³n +- GestiΓ³n de rutas +- Migraciones de configuraciΓ³n + +**Archivos clave:** +- `index.ts` - Cargador principal de configuraciΓ³n +- `schema.ts` - Esquema de validaciΓ³n Zod +- `paths.ts` - ResoluciΓ³n de rutas de sistema + +--- + +## Canales de MensajerΓa + +### Canales Integrados + +| Canal | Biblioteca | Estado | +|-------|-----------|--------| +| **WhatsApp** | @whiskeysockets/baileys | β Estable | +| **Telegram** | grammy | β Estable | +| **Signal** | signal-cli | β Estable | +| **iMessage** | imsg | β Estable | +| **Discord** | discord.js | β Estable | +| **Slack** | @slack/bolt | β Estable | +| **Google Chat** | Chat API | β Estable | + +### Canales de ExtensiΓ³n + +| Canal | UbicaciΓ³n | Estado | +|-------|-----------|--------| +| **BlueBubbles** | extensions/bluebubbles | β Estable | +| **Microsoft Teams** | extensions/msteams | β Estable | +| **Matrix** | extensions/matrix | β Estable | +| **Zalo** | extensions/zalo | β Estable | +| **Zalo Personal** | extensions/zalouser | β Estable | +| **Twitch** | extensions/twitch | β Estable | +| **Mattermost** | extensions/mattermost | β Estable | +| **Nextcloud Talk** | extensions/nextcloud-talk | β Estable | +| **Tlon** | extensions/tlon | β Estable | +| **Nostr** | extensions/nostr | β Estable | +| **LINE** | extensions/line | β Estable | +| **Voice Call** | extensions/voice-call | β Beta | + +### CaracterΓsticas de Canal + +- **Emparejamiento DM**: Lista de permitidos basada en cΓ³digo +- **Enrutamiento de grupo**: Control de menciones +- **Etiquetas de respuesta**: Respuestas basadas en hilos +- **FragmentaciΓ³n de mensajes**: LΓmites especΓficos por canal +- **Reacciones**: Reconocimientos +- **Indicadores de escritura**: Estado en tiempo real +- **RedacciΓ³n de medios**: Capacidades de privacidad + +--- + +## TecnologΓas Utilizadas + +### Stack Backend + +| TecnologΓa | VersiΓ³n | PropΓ³sito | +|------------|---------|-----------| +| **TypeScript** | 5.9+ | Lenguaje principal | +| **Node.js** | β₯22.12.0 | Runtime | +| **Hono** | 4.11.4 | Framework HTTP | +| **Express** | 5.2 | Servidor WebSocket (legacy) | +| **ws** | 8.19 | Biblioteca WebSocket | +| **Zod** | 4.3 | ValidaciΓ³n de esquema | + +### IntegraciΓ³n AI/Modelo + +| TecnologΓa | PropΓ³sito | +|------------|-----------| +| **@mariozechner/pi-agent-core** | Agente Pi de Anthropic | +| **@mariozechner/pi-tui** | UI de terminal para agente | +| **Anthropic SDK** | API Claude | +| **OpenAI SDK** | API ChatGPT | +| **AWS Bedrock SDK** | Modelos AWS | +| **Ollama SDK** | Soporte LLM local | + +### MensajerΓa & ComunicaciΓ³n + +| Biblioteca | Canal | +|-----------|-------| +| **@whiskeysockets/baileys** | WhatsApp | +| **grammy** | Telegram | +| **@slack/bolt** | Slack | +| **discord.js** | Discord | +| **@line/bot-sdk** | LINE | +| **signal-cli** | Signal | +| **imsg** | iMessage | + +### AutomatizaciΓ³n de Navegador + +| TecnologΓa | PropΓ³sito | +|------------|-----------| +| **Playwright Core** | 1.58 - AutomatizaciΓ³n web | +| **chromium-bidi** | 13.0 - Protocolo DevTools Chrome | +| **Sharp** | 0.34 - Procesamiento de imΓ‘genes | +| **pdfjs-dist** | ManipulaciΓ³n de PDF | + +### Base de Datos & Almacenamiento + +| TecnologΓa | PropΓ³sito | +|------------|-----------| +| **SQLite-vec** | Almacenamiento vectorial para memoria | +| **LanceDB** | BΓΊsqueda vectorial (extensiΓ³n) | +| **Sistema de archivos** | Persistencia de sesiΓ³n/configuraciΓ³n | +| **proper-lockfile** | Control de acceso concurrente | + +### CLI & DevOps + +| TecnologΓa | PropΓ³sito | +|------------|-----------| +| **Commander.js** | AnΓ‘lisis de argumentos CLI | +| **@clack/prompts** | Prompts CLI interactivos | +| **Chalk** | Colores de terminal | +| **dotenv** | ConfiguraciΓ³n de entorno | +| **YAML** | Soporte de formato de configuraciΓ³n | + +### Herramientas de Desarrollo + +| TecnologΓa | PropΓ³sito | +|------------|-----------| +| **TypeScript** | VerificaciΓ³n de tipos estricta | +| **Vitest** | Ejecutor de tests | +| **oxlint** | Linting (OxC) | +| **oxfmt** | Formateo | +| **tsx** | EjecuciΓ³n TS | +| **Playwright Core** | Testing E2E | +| **Wireit** | OrquestaciΓ³n de tareas de build | + +--- + +## Sistema de Plugins + +### Arquitectura de Plugins + +``` +βββββββββββββββββββββββββββββββββββββββββββββββ +β Descubrimiento de Plugins β +β - Auto-detecta desde extensions/ β +β - Auto-detecta desde node_modules/@moltbot/β +β - ValidaciΓ³n de manifiesto β +βββββββββββββββββββββββββββββββββββββββββββββββ + β +βββββββββββββββββββββββββββββββββββββββββββββββ +β Cargador de Plugins β +β - ValidaciΓ³n de esquema de configuraciΓ³n β +β - InicializaciΓ³n de runtime β +β - Registro de hooks β +βββββββββββββββββββββββββββββββββββββββββββββββ + β +βββββββββββββββββββββββββββββββββββββββββββββββ +β Proveedores de Servicios β +β - Acceso a cliente Gateway β +β - Proveedor de configuraciΓ³n β +β - InyecciΓ³n de logger β +β - Utilidades de cliente HTTP β +βββββββββββββββββββββββββββββββββββββββββββββββ +``` + +### Tipos de Plugins + +#### 1. Plugins de Canal +AΓ±aden nuevos canales de mensajerΓa: +```typescript +export function createChannelPlugin(): ChannelPlugin { + return { + name: 'my-channel', + type: 'channel', + init: async (config) => { + // Inicializar canal + }, + send: async (message) => { + // Enviar mensaje + }, + receive: async (handler) => { + // Recibir mensajes + } + } +} +``` + +#### 2. Plugins de Herramientas +AΓ±aden herramientas personalizadas para agentes: +```typescript +export function createToolPlugin(): ToolPlugin { + return { + name: 'my-tool', + type: 'tool', + schema: z.object({ + input: z.string() + }), + execute: async (params) => { + // Ejecutar herramienta + return { result: 'done' } + } + } +} +``` + +#### 3. Plugins de Auth +AΓ±aden manejadores OAuth personalizados: +```typescript +export function createAuthPlugin(): AuthPlugin { + return { + name: 'my-auth', + type: 'auth', + authorize: async (credentials) => { + // Manejar OAuth + return { token: 'access_token' } + } + } +} +``` + +#### 4. Plugins de Memoria +AΓ±aden backends de almacenamiento personalizados: +```typescript +export function createMemoryPlugin(): MemoryPlugin { + return { + name: 'my-memory', + type: 'memory', + store: async (key, value) => { + // Almacenar valor + }, + retrieve: async (key) => { + // Recuperar valor + } + } +} +``` + +#### 5. Plugins de Hooks +AΓ±aden manejadores de eventos globales: +```typescript +export function createHookPlugin(): HookPlugin { + return { + name: 'my-hook', + type: 'hook', + hooks: { + 'message:received': async (message) => { + // Manejar mensaje recibido + }, + 'message:sent': async (message) => { + // Manejar mensaje enviado + } + } + } +} +``` + +### Esquema de Manifiesto de Plugin + +```json +{ + "name": "plugin-name", + "version": "1.0.0", + "description": "Plugin description", + "exports": { + ".": "./dist/index.js", + "./config-schema": "./dist/config-schema.js" + }, + "hooks": ["channel", "tool"], + "permissions": ["network", "fs"], + "dependencies": { + "some-lib": "^1.0.0" + } +} +``` + +### Ciclo de Vida de Plugin + +1. **Descubrimiento** - Auto-detecta plugins desde directorios conocidos +2. **ValidaciΓ³n** - Valida manifiesto y esquema de configuraciΓ³n +3. **Carga** - Carga mΓ³dulo de plugin +4. **InicializaciΓ³n** - Ejecuta funciΓ³n init de plugin +5. **Registro** - Registra hooks y herramientas +6. **EjecuciΓ³n** - Plugin maneja eventos y llamadas +7. **Apagado** - Limpieza durante apagado de gateway + +--- + +## ConfiguraciΓ³n y Despliegue + +### Archivo de ConfiguraciΓ³n Principal + +El archivo `.moltbot.yaml` (o `.clawdbot.yaml`) controla toda la configuraciΓ³n: + +```yaml +# ConfiguraciΓ³n de Gateway +gateway: + mode: local # o 'remote' + port: 18789 + bind: loopback # o 'all' + verbose: true + +# ConfiguraciΓ³n de Agentes +agents: + default: + model: claude-4.5-sonnet + thinking: high + temperature: 0.7 + max_tokens: 8192 + +# ConfiguraciΓ³n de Canales +channels: + whatsapp: + enabled: true + pairing: code + allowlist: + - "+1234567890" + + telegram: + enabled: true + bot_token: "${TELEGRAM_BOT_TOKEN}" + + discord: + enabled: true + bot_token: "${DISCORD_BOT_TOKEN}" + +# ConfiguraciΓ³n de Herramientas +tools: + browser: + enabled: true + headless: true + timeout: 30000 + + canvas: + enabled: true + port: 8080 + +# ConfiguraciΓ³n de Sandbox +sandbox: + enabled: false + docker_image: "moltbot/sandbox" + +# ConfiguraciΓ³n de Plugins +plugins: + - name: matrix + enabled: true + config: + homeserver: "https://matrix.org" + +# ConfiguraciΓ³n de Skills +skills: + - workspace1 + - workspace2 +``` + +### Variables de Entorno + +Archivo `.env`: +```bash +# Tokens de API +ANTHROPIC_API_KEY=sk-ant-... +OPENAI_API_KEY=sk-... +TELEGRAM_BOT_TOKEN=123456:ABC-DEF... +DISCORD_BOT_TOKEN=MTk4... + +# ConfiguraciΓ³n de Gateway +CLAWDBOT_GATEWAY_PORT=18789 +CLAWDBOT_GATEWAY_BIND=loopback + +# ConfiguraciΓ³n de Modo +CLAWDBOT_PROFILE=production # o 'dev' +CLAWDBOT_SKIP_CHANNELS=0 + +# ConfiguraciΓ³n de DepuraciΓ³n +CLAWDBOT_DEBUG=0 +CLAWDBOT_VERBOSE=0 +``` + +### InstalaciΓ³n + +#### InstalaciΓ³n rΓ‘pida (npm) +```bash +npm install -g moltbot@latest +moltbot onboard --install-daemon +``` + +#### Desde fuente (desarrollo) +```bash +git clone https://github.com/moltbot/moltbot.git +cd moltbot +pnpm install +pnpm ui:build +pnpm build +pnpm moltbot onboard --install-daemon +``` + +#### Docker +```bash +docker-compose up -d +``` + +### Despliegue como Daemon + +#### macOS (launchd) +```bash +moltbot daemon install +moltbot daemon start +moltbot daemon status +``` + +#### Linux (systemd) +```bash +moltbot daemon install +systemctl --user start moltbot-gateway +systemctl --user status moltbot-gateway +``` + +#### Windows (WSL2) +```bash +# En WSL2 +moltbot daemon install +moltbot daemon start +``` + +### Gateway Remoto + +Para servidores sin interfaz grΓ‘fica: + +```yaml +# En servidor remoto +gateway: + mode: remote + bind: all + port: 18789 + +# En cliente local +agents: + gateway_url: "ws://your-server:18789" +``` + +--- + +## Desarrollo + +### ConfiguraciΓ³n de Entorno de Desarrollo + +```bash +# 1. Clonar repositorio +git clone https://github.com/moltbot/moltbot.git +cd moltbot + +# 2. Instalar dependencias +pnpm install + +# 3. Construir UI +pnpm ui:build + +# 4. Construir proyecto +pnpm build + +# 5. Ejecutar en modo desarrollo +pnpm gateway:watch # Auto-recarga en cambios +``` + +### Scripts de Desarrollo + +```bash +# Desarrollo +pnpm dev # Ejecutar CLI en modo dev +pnpm gateway:watch # Gateway con auto-recarga +pnpm gateway:dev # Gateway dev sin canales +pnpm tui:dev # UI de terminal dev + +# Build +pnpm build # Compilar TypeScript +pnpm ui:build # Construir UI web +pnpm canvas:a2ui:bundle # Empaquetar Canvas A2UI + +# Testing +pnpm test # Ejecutar todos los tests +pnpm test:watch # Tests en modo watch +pnpm test:coverage # Tests con cobertura +pnpm test:e2e # Tests end-to-end +pnpm test:live # Tests con APIs reales + +# Linting & Formatting +pnpm lint # Lint TypeScript +pnpm lint:fix # Fix problemas de lint +pnpm format # Verificar formato +pnpm format:fix # Fix formato + +# Plataformas +pnpm ios:build # Construir app iOS +pnpm ios:run # Ejecutar app iOS +pnpm android:assemble # Ensamblar app Android +pnpm android:run # Ejecutar app Android +pnpm mac:package # Empaquetar app macOS +``` + +### Estructura de Testing + +``` +test/ +βββ unit/ # Tests unitarios +βββ e2e/ # Tests end-to-end +βββ integration/ # Tests de integraciΓ³n +βββ fixtures/ # Datos de prueba +``` + +**Configuraciones de Vitest:** +- `vitest.config.ts` - ConfiguraciΓ³n principal +- `vitest.unit.config.ts` - Tests unitarios +- `vitest.e2e.config.ts` - Tests E2E +- `vitest.live.config.ts` - Tests con APIs reales +- `vitest.extensions.config.ts` - Tests de extensiones +- `vitest.gateway.config.ts` - Tests de gateway + +### Requisitos de Cobertura de Tests + +- **LΓneas**: 70% +- **Funciones**: 70% +- **Ramas**: 70% +- **Declaraciones**: 70% + +### EstΓ‘ndares de CΓ³digo + +- **TypeScript estricto**: VerificaciΓ³n de tipos completa +- **ESLint**: Linting con oxlint +- **Prettier**: Formateo con oxfmt +- **Pre-commit hooks**: Ejecuta lint + format antes de commit +- **LΓmite de LOC**: ~700 lΓneas por archivo (guΓa) + +--- + +## Estructura de Directorios + +``` +/ +βββ src/ # CΓ³digo fuente TypeScript +β βββ agents/ # Runtime de agente y gestiΓ³n de sesiones +β βββ gateway/ # Servidor gateway y registro de chat +β βββ channels/ # Infraestructura base de canales +β βββ cli/ # Comandos de interfaz de lΓnea de comandos +β βββ browser/ # Herramienta de automatizaciΓ³n de navegador +β βββ canvas-host/ # Host de Canvas y framework A2UI +β βββ media/ # Pipeline de procesamiento de medios +β βββ plugins/ # Sistema de plugins y cargador +β βββ config/ # Sistema de configuraciΓ³n +β βββ whatsapp/ # IntegraciΓ³n WhatsApp +β βββ telegram/ # IntegraciΓ³n Telegram +β βββ signal/ # IntegraciΓ³n Signal +β βββ discord/ # IntegraciΓ³n Discord +β βββ slack/ # IntegraciΓ³n Slack +β βββ imessage/ # IntegraciΓ³n iMessage +β βββ routing/ # Enrutamiento de mensajes +β βββ security/ # Auth y polΓticas de seguridad +β βββ memory/ # GestiΓ³n de memoria/contexto +β βββ tts/ # IntegraciΓ³n text-to-speech +β βββ wizard/ # Flujo de asistente de onboarding CLI +β βββ web/ # Frontend WebChat y Control UI +β βββ utils/ # Utilidades compartidas +β βββ ... +β +βββ extensions/ # Plugins de canal y extensiones +β βββ bluebubbles/ # Plugin BlueBubbles +β βββ matrix/ # Plugin Matrix +β βββ msteams/ # Plugin Microsoft Teams +β βββ zalo/ # Plugin Zalo +β βββ zalouser/ # Plugin Zalo Personal +β βββ voice-call/ # Plugin Voice Call +β βββ ... +β +βββ apps/ # Aplicaciones nativas +β βββ macos/ # App macOS (SwiftUI) +β βββ ios/ # App iOS (SwiftUI) +β βββ android/ # App Android (Kotlin) +β +βββ docs/ # DocumentaciΓ³n +β βββ start/ # GuΓas de inicio +β βββ install/ # GuΓas de instalaciΓ³n +β βββ channels/ # DocumentaciΓ³n de canales +β βββ concepts/ # DocumentaciΓ³n de conceptos +β βββ cli/ # DocumentaciΓ³n de CLI +β βββ gateway/ # DocumentaciΓ³n de gateway +β βββ platforms/ # GuΓas especΓficas de plataforma +β βββ providers/ # DocumentaciΓ³n de proveedores +β βββ reference/ # DocumentaciΓ³n de referencia +β βββ ... +β +βββ skills/ # Paquetes de skills de workspace +β βββ workspace1/ # Ejemplo de workspace +β +βββ packages/ # Paquetes monorepo +β βββ ... +β +βββ scripts/ # Scripts de utilidad +β βββ build-*.ts # Scripts de build +β βββ test-*.sh # Scripts de test +β βββ package-*.sh # Scripts de empaquetado +β βββ ... +β +βββ test/ # Fixtures de test y helpers +β βββ fixtures/ # Datos de prueba +β βββ helpers/ # Utilidades de test +β +βββ ui/ # UI web (Control UI) +β βββ ... +β +βββ vendor/ # Dependencias vendorizadas +β βββ ... +β +βββ .github/ # Workflows de GitHub Actions +β βββ workflows/ # Definiciones de workflow CI/CD +β βββ labeler.yml # ConfiguraciΓ³n de auto-etiquetado +β +βββ dist/ # Salida compilada (generada) +β βββ ... +β +βββ package.json # ConfiguraciΓ³n de paquete npm +βββ pnpm-workspace.yaml # ConfiguraciΓ³n de workspace pnpm +βββ tsconfig.json # ConfiguraciΓ³n de TypeScript +βββ vitest.config.ts # ConfiguraciΓ³n de Vitest +βββ docker-compose.yml # ConfiguraciΓ³n de Docker Compose +βββ Dockerfile # Dockerfile principal +βββ README.md # README principal (inglΓ©s) +βββ CHANGELOG.md # Registro de cambios +βββ LICENSE # Licencia MIT +βββ ... +``` + +### Directorios Clave + +#### `/src/` +CΓ³digo fuente principal de TypeScript. Organizado por dominio: +- **Agentes & Runtime**: `agents/`, `memory/`, `sessions/` +- **ComunicaciΓ³n**: `gateway/`, `channels/`, `routing/` +- **Canales Integrados**: `whatsapp/`, `telegram/`, `discord/`, etc. +- **Herramientas**: `browser/`, `canvas-host/`, `media/`, `tts/` +- **Sistema**: `cli/`, `config/`, `plugins/`, `daemon/` +- **Seguridad**: `security/`, `pairing/` +- **UI**: `web/`, `wizard/`, `tui/` + +#### `/extensions/` +Plugins de extensiΓ³n (20+ canales). Cada extensiΓ³n es un paquete npm auto-contenido: +- Tiene su propio `package.json` +- Define `plugin.manifest.json` +- Implementa hooks de plugin +- Puede tener dependencias propias + +#### `/apps/` +Aplicaciones nativas para mΓΊltiples plataformas: +- **macOS**: App SwiftUI con integraciΓ³n de menubar +- **iOS**: App SwiftUI con soporte de voz +- **Android**: App Kotlin con soporte de voz + +#### `/docs/` +DocumentaciΓ³n completa (Mintlify): +- GuΓas de inicio rΓ‘pido +- Tutoriales de instalaciΓ³n +- DocumentaciΓ³n de conceptos +- Referencia de API +- GuΓas especΓficas de plataforma +- DocumentaciΓ³n de desarrollo de plugins + +#### `/skills/` +Skills de workspace. Cada workspace puede tener: +- Prompts personalizados +- Herramientas bash personalizadas +- Integraciones personalizadas +- ConfiguraciΓ³n especΓfica de workspace + +#### `/scripts/` +Scripts de utilidad para: +- ConstrucciΓ³n y empaquetado +- Testing (unit, E2E, Docker) +- GeneraciΓ³n de cΓ³digo (protocol, Swift) +- GestiΓ³n de releases +- AutomatizaciΓ³n de desarrollo + +#### `/test/` +Fixtures de test y helpers: +- Datos de prueba +- Mocks y stubs +- Utilidades de test +- Configuraciones de test + +--- + +## Recursos Adicionales + +### DocumentaciΓ³n Oficial +- **Sitio Web**: https://molt.bot +- **DocumentaciΓ³n**: https://docs.molt.bot +- **Comenzar**: https://docs.molt.bot/start/getting-started +- **FAQ**: https://docs.molt.bot/start/faq +- **Showcase**: https://docs.molt.bot/start/showcase + +### Comunidad +- **Discord**: https://discord.gg/clawd +- **GitHub**: https://github.com/moltbot/moltbot +- **Releases**: https://github.com/moltbot/moltbot/releases + +### GuΓas de Desarrollo +- **Desarrollo de Plugins**: Ver `PLUGIN-DEVELOPMENT.md` +- **Referencia de API**: Ver `API-REFERENCE.md` +- **GuΓa de Arquitectura**: Ver `ARCHITECTURE.md` +- **GuΓa de Despliegue**: Ver `DEPLOYMENT.md` + +--- + +## Licencia + +MIT License - Ver [LICENSE](../LICENSE) para detalles. + +--- + +## Contribuir + +Β‘Las contribuciones son bienvenidas! Ver [CONTRIBUTING.md](../CONTRIBUTING.md) para guΓas. + +--- + +**Β‘Feliz hacking con Moltbot! π¦**