asis-coder
Version:
🤖 AI Development Assistant with Intelligent Code Generation - Create projects, analyze code, and modify files using advanced AI agents with ChatGPT, Claude, Gemini, and Open Source models (gpt-oss-20b)
203 lines (162 loc) • 7.82 kB
Markdown
# 📚 Estructura Modular de Asis-coder
Esta carpeta contiene todos los módulos que componen el sistema Asis-coder, organizados de manera modular para facilitar el mantenimiento y desarrollo.
## 🏗️ Arquitectura Modular
### Beneficios de la Modularización:
- ✅ **Mantenimiento más fácil**: Cada módulo tiene una responsabilidad específica
- ✅ **Desarrollo colaborativo**: Múltiples desarrolladores pueden trabajar en diferentes módulos
- ✅ **Reutilización de código**: Los módulos pueden ser reutilizados en otros proyectos
- ✅ **Debugging simplificado**: Es más fácil encontrar y corregir errores
- ✅ **Testing individual**: Cada módulo puede ser probado por separado
## 📁 Módulos Disponibles
### 1. `config.sh` - Módulo de Configuración
**Responsabilidad**: Gestión de configuración del sistema, variables de entorno y archivos de configuración.
**Funciones principales**:
- `init_config_directories()` - Inicializar directorios necesarios
- `log()` - Sistema de logging
- `update_config_value()` - Actualizar valores de configuración
- `get_config_value()` - Obtener valores de configuración
- `get_api_config()` - Cargar configuración de APIs
- `mostrar_estado_configuracion()` - Mostrar estado completo
- `check_dependencies()` - Verificar dependencias del sistema
- `setup_environment()` - Configurar entorno
- `cleanup()` - Limpieza de archivos temporales
**Variables globales**:
```bash
USER_HOME="$HOME"
CONFIG_DIR="$USER_HOME/.config/coder-cli"
BIN_DIR="$USER_HOME/.local/bin"
LOG_FILE="$CONFIG_DIR/coder.log"
CONFIG_FILE="$CONFIG_DIR/config.json"
DEBUG=false
VERSION="1.0.1"
```
### 2. `api_validation.sh` - Módulo de Validación de APIs
**Responsabilidad**: Validación de APIs de ChatGPT, Claude y Gemini, manejo de errores y diagnósticos.
**Funciones principales**:
- `validar_chatgpt_api()` - Validar API de ChatGPT
- `validar_claude_api()` - Validar API de Claude
- `validar_gemini_api()` - Validar API de Gemini
- `mostrar_estado_validacion()` - Mostrar estado de validación
- `mostrar_error_configuracion()` - Mostrar errores de configuración
- `probar_configuracion_api()` - Probar configuración completa
**Características**:
- Detección específica de errores (créditos, API keys inválidas)
- Mensajes informativos con enlaces de solución
- Validación previa antes de hacer consultas
### 3. `llm_models.sh` - Módulo de Gestión de LLMs
**Responsabilidad**: Selección de LLMs, gestión de modelos disponibles y configuración de API keys.
**Funciones principales**:
- `update_llm_choice()` - Actualizar selección de LLM
- `update_api_token()` - Configurar API keys
- `update_model()` - Seleccionar modelo específico
- `list_chatgpt_models()` - Listar modelos de ChatGPT (14 modelos)
- `list_claude_models()` - Listar modelos de Claude (8 modelos)
- `list_gemini_models()` - Listar modelos de Gemini (8 modelos)
**Modelos soportados**:
- **ChatGPT**: gpt-3.5-turbo → gpt-4.5 (14 modelos)
- **Claude**: claude-3-haiku → claude-opus-4 (8 modelos)
- **Gemini**: gemini-1.5-flash → gemini-2.5-pro (8 modelos)
### 4. `project_manager.sh` - Módulo de Gestión de Proyectos
**Responsabilidad**: Detección de tipos de proyecto, generación de contexto y gestión de archivos.
**Funciones principales**:
- `detectar_tipo_proyecto()` - Detección automática de tipo de proyecto
- `preguntar_tipo_proyecto_manual()` - Selección manual de tipo
- `definir_directorios_y_ignorar()` - Configurar directorios según tipo
- `es_archivo_texto()` - Verificar si un archivo es de texto
- `leer_archivos()` - Lectura recursiva de archivos
- `generar_contexto()` - Generar archivo de contexto
- `encontrar_archivo_contexto()` - Buscar archivo de contexto
- `detectar_proyecto_actual()` - Detectar proyecto para UI
- `inicializar_proyecto()` - Inicializar proyecto con Asis-coder
- `crear_guia_proyecto()` - Crear archivo CODER.md
**Tipos de proyecto soportados**:
- React, Node.js, Vue.js, Angular
- Ruby on Rails, Laravel
- Python (Flask/Django), Spring Boot
- Express.js, Flutter
### 5. `ui_interface.sh` - Módulo de Interfaz de Usuario
**Responsabilidad**: Todas las interfaces de usuario, pantallas de bienvenida y presentación visual.
**Funciones principales**:
- `mostrar_ui_interactivo()` - UI del modo interactivo
- `validar_y_mostrar_ui()` - Validar y mostrar UI principal
- `mostrar_ui_principal()` - UI principal con banner ASCII
- `mostrar_ui_bienvenida()` - UI de bienvenida para setup
- `dar_formato_codigo()` - Formatear código con colores
- `configuracion_inicial_completa()` - Proceso de configuración guiado
**Características visuales**:
- Banners ASCII art profesionales
- Colores y emojis para mejor UX
- Información de estado en tiempo real
- Guías paso a paso para configuración
### 6. `llm_communication.sh` - Módulo de Comunicación con LLMs
**Responsabilidad**: Comunicación con APIs de LLMs, modo interactivo y manejo de respuestas.
**Funciones principales**:
- `json_escape()` - Escapar JSON para APIs
- `consultar_llm()` - Función principal de consulta
- `modo_interactivo()` - Modo chat interactivo
- `limpiar_historial()` - Limpiar historial de conversaciones
- `nuevo_hito()` - Crear nuevo hito de conversación
- `mostrar_historiales()` - Mostrar historiales guardados
**Características avanzadas**:
- Streaming de respuestas en tiempo real
- Formateo automático de código
- Gestión de historial por sesión
- Manejo de errores específicos por API
## 🔧 Script Principal: `coder_modular.sh`
El script principal se encarga de:
1. **Verificar estructura**: Confirma que el directorio `lib/` existe
2. **Cargar módulos**: Importa todos los módulos en orden correcto
3. **Inicializar sistema**: Configura directorios y variables
4. **Ejecutar función main**: Maneja todos los comandos disponibles
### Orden de carga de módulos:
1. `config.sh` (primero - define variables globales)
2. `api_validation.sh`
3. `llm_models.sh`
4. `project_manager.sh`
5. `ui_interface.sh`
6. `llm_communication.sh` (último - depende de todos los demás)
## 🚀 Cómo Usar la Estructura Modular
### Para Desarrolladores:
1. **Agregar nueva funcionalidad**:
- Identifica el módulo apropiado
- Agrega la función al módulo correspondiente
- No olvides documentar la función
2. **Crear nuevo módulo**:
```bash
# Crear nuevo módulo
touch lib/nuevo_modulo.sh
# Agregar al script principal
# Editar coder_modular.sh y agregar:
if [ -f "$LIB_DIR/nuevo_modulo.sh" ]; then
source "$LIB_DIR/nuevo_modulo.sh"
echo "✅ Nuevo módulo cargado"
fi
```
3. **Debugging por módulo**:
```bash
# Probar función específica
source lib/config.sh
log "Test message"
# Probar módulo completo
bash -x lib/api_validation.sh
```
### Para Usuarios:
La estructura modular es transparente para los usuarios. Todos los comandos funcionan igual:
```bash
./coder_modular.sh setup # Configuración inicial
./coder_modular.sh -i # Modo interactivo
./coder_modular.sh "pregunta" # Consulta directa
```
## 📈 Beneficios de Rendimiento
- **Carga selectiva**: Solo se cargan las funciones necesarias
- **Memoria optimizada**: Cada módulo gestiona su propia memoria
- **Ejecución más rápida**: Funciones organizadas y optimizadas
- **Debugging eficiente**: Errores localizados por módulo
## 🔮 Futuras Mejoras
- **Carga dinámica**: Cargar módulos solo cuando se necesiten
- **Módulos opcionales**: Permitir funcionalidad opcional
- **API de módulos**: Interfaz estándar para nuevos módulos
- **Testing automatizado**: Tests unitarios por módulo
- **Documentación automática**: Generar docs desde comentarios
---
**¡La estructura modular hace que Asis-coder sea más potente, mantenible y fácil de expandir!** 🚀