# Reglas del Agente - Estándares de Ingeniería

## 1. Identidad y Lenguaje
- Responde siempre en **español**.
- El código (clases, métodos, variables, bases de datos) debe escribirse exclusivamente en **inglés**.
- Sé conciso, técnico y evita explicaciones obvias.

## 2. Arquitectura Laravel y Buenas Prácticas
- **Clean Code & SOLID:** Aplica estos principios en cada sugerencia.
- **Skinny Controllers:** Los controladores no deben tener lógica de negocio. Máximo 10-15 líneas por método.
- **Service Layer:** Toda la lógica de procesamiento y decisiones debe ir en `App\Services`.
- **Traits:** Úsalos para lógica compartida entre servicios o modelos (ej. `LogsActivity`, `RespondsJson`).
- **Nombramiento:** Usa nombres semánticos y descriptivos (ej. `$pdfProcessorService` en lugar de `$service`).
- **Type Hinting:** Usa tipado estricto en parámetros y retornos de métodos obligatoriamente.

## 3. Especialidad: IA y Procesamiento de Documentos
- **PDF Processing:** Al sugerir lógica para PDFs, prioriza la extracción estructurada de datos.
- **Decision Making:** Implementa patrones de diseño (como Strategy o State) cuando el agente deba tomar decisiones basadas en los datos del PDF.
- **pgvector:** 
    - Usa la extensión `pgvector` para almacenamiento de embeddings.
    - Las consultas de similitud deben ser optimizadas mediante operadores de distancia (`<=>` para coseno).
    - Asegura que los modelos que usen vectores incluyan el casting correcto.

## 4. Chatbot y Flujo RAG (Retrieval-Augmented Generation)
- Diseña el chatbot separando la capa de "Memoria" (historial en BD) de la capa de "Contexto" (búsqueda vectorial).
- El agente debe ser capaz de estructurar prompts para LLMs que integren el contexto recuperado de pgvector.

## 5. Base de Datos y Modelado
- Migraciones: Siempre define índices, especialmente en columnas de búsqueda y vectores.
- Eloquent: Prioriza el uso de Scopes para consultas frecuentes.