// handlers.js
import { respuestaMCP } from './respuestas/respuestaMCP.js'; // <- NUEVA IMPORTACIÓN
import fs from 'fs/promises';
import { log } from './logger.js';
// Ya no se necesitan: sendText, fetchChatMessages, setTypingStatus, askGemini aquí
import { processMessage } from './utils/processMessage.js';
import { saveMedia }      from './utils/saveMedia.js';
import { respuestaNormal } from './respuestas/respuestaNormal.js'; // <- NUEVA IMPORTACIÓN
import { respuestaBrave } from './respuestas/respuestaBrave.js'; // <- NUEVA IMPORTACIÓN
import { sendText } from './whatsapp.js'; // <- NUEVA IMPORTACIÓN

/* carpeta raíz donde saveMedia deja todo */
const MEDIA_DIR = '/media';
await fs.mkdir(MEDIA_DIR, { recursive: true });

// La función cleanForGemini se movió a respuestaNormal.js

export async function processIncoming(raw) {
  // Guarda media si no es un mensaje de texto plano
  if (raw.type !== 'chat') {
    try {
      // Nota: saveMedia podría necesitar acceso a MEDIA_DIR si no está codificado internamente
      await saveMedia(raw /*, MEDIA_DIR */); // Podrías necesitar pasar MEDIA_DIR si saveMedia lo requiere
    } catch (error) {
      log('error', 'Error guardando media:', error);
    }
  }

  const msg  = processMessage(raw);
  const text = msg.text || '';

  /* ----- comando @nucleo ----- */
  if (/^@nucleo(\s|$)/i.test(text)) {
    // Llama a la función importada
    // await respuestaNormal(msg); // <- LLAMADA A LA FUNCIÓN EXTERNA
    await respuestaMCP(msg); // <- LLAMADA A LA FUNCIÓN EXTERNA
  } else {
    // Lógica para otros mensajes (si aplica)
    // log('debug', 'Mensaje recibido no es comando @nucleo:', text);
  }

  if (/^@nucleo.(\s|$)/i.test(text)) {
    log('info', '🧠  Generando respuesta para @nucleo...');
    const respuestaObjMCP = await respuestaBrave(msg); // <- LLAMADA A LA FUNCIÓN EXTERNA
    log('info', 'Respuesta de MCP:', respuestaObjMCP);
    sendText(msg.chatId, respuestaObjMCP);
  } else {
    // Lógica para otros mensajes (si aplica)
    // log('debug', 'Mensaje recibido no es comando @nucleo:', text);
  }
}