Update to Skynet v7 - Complete documentation restructure

- Nueva estructura de carpetas según Skynet v7
- Añadidos schemas SQL completos
- Documentación de entidades, componentes e integraciones
- Modelo de seguridad actualizado
- Infraestructura y operaciones reorganizadas
This commit is contained in:
ARCHITECT
2025-12-29 18:23:41 +00:00
parent ac481fe266
commit 6ea70bd34f
76 changed files with 13029 additions and 4340 deletions

View File

@@ -0,0 +1,106 @@
# Administración
**Nombre:** Mason
**Estado:** Implementado
---
## Descripción
Tabla de trabajo temporal donde se enriquece, procesa y consolida la información antes de su registro definitivo.
---
## Características
| Característica | Valor |
|----------------|-------|
| Mutabilidad | Editable |
| Persistencia | **Temporal** |
| Eliminación | Siempre se elimina tras consolidar |
---
## Función
```
Secretaría (entrada)
┌─────────────────┐
│ Administración │
│ Mason │
├─────────────────┤
│ • Enriquecer │
│ • Validar │
│ • Completar │
│ • Corregir │
└────────┬────────┘
Contable (Feldman)
```
---
## Ventana Flotante
| Parámetro | Valor |
|-----------|-------|
| Duración | 24 horas |
| Durante | Modificable |
| Después | Pasa a Feldman automáticamente |
---
## Operaciones Permitidas
| Operación | Permitido |
|-----------|-----------|
| Editar campos | ✓ |
| Añadir datos | ✓ |
| Corregir errores | ✓ |
| Eliminar registro | ✗ (solo consolidar) |
| Modificar h_entrada | ✗ |
---
## Referencia a Origen
Mason siempre mantiene referencia al registro original en Secretaría:
```json
{
"id": 123,
"h_entrada_origen": "abc123...",
"datos_enriquecidos": { ... },
"estado": "en_edicion"
}
```
---
## Estados
| Estado | Descripción |
|--------|-------------|
| **en_edicion** | Usuario trabajando |
| **listo** | Preparado para consolidar |
| **consolidado** | Ya pasó a Feldman |
---
## Schema
```sql
CREATE TABLE mason_temporal (
id BIGSERIAL PRIMARY KEY,
h_entrada_origen VARCHAR(64) NOT NULL,
datos JSONB NOT NULL,
estado VARCHAR(20) DEFAULT 'en_edicion',
created_at TIMESTAMPTZ DEFAULT NOW(),
expires_at TIMESTAMPTZ,
modified_at TIMESTAMPTZ,
modified_by VARCHAR(64)
);
```

View File

@@ -0,0 +1,204 @@
# Auditoría
**Nombre:** Sentinel
**Estado:** Planificado
---
## Descripción
Sistema de auditoría automatizada con estrategia dual: LIGHT (rápido, exhaustivo) y DEEP (selectivo, profundo).
```
┌─────────────────────────────────────────────────────────────────┐
│ PRINCIPIO SENTINEL │
│ │
│ "Confía, pero verifica. Verifica todo, siempre, sin excepción" │
└─────────────────────────────────────────────────────────────────┘
```
---
## Filosofía Dual
| Aspecto | SENTINEL-LIGHT | SENTINEL-DEEP |
|---------|----------------|---------------|
| Analogía | Guardia de seguridad | Detective investigador |
| Enfoque | Exhaustivo, superficial | Selectivo, profundo |
| Motor | Reglas + ML ligero | LLM pesado |
| Frecuencia | Cada 5 min | Cada hora |
| Costo | Mínimo | Variable |
---
## SENTINEL-LIGHT
### Arquitectura
```
┌─────────────────────────────────────────────────────────────────┐
│ SENTINEL-LIGHT │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ RULES │ │ STATS │ │ ALERTS │ │
│ │ ENGINE │───▶│ COLLECTOR │───▶│ DISPATCHER │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────────────┤
│ │ SYS_LOG (Source) │
│ └─────────────────────────────────────────────────────────────┤
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┤
│ │ AUDIT_RESULTS (Sink) │
│ └─────────────────────────────────────────────────────────────┤
│ │
└─────────────────────────────────────────────────────────────────┘
```
### Ciclo de Ejecución (cada 5 min)
```
1. QUERY
SELECT * FROM SYS_LOG
WHERE audit_status = 'PENDING'
AND timestamp_created > NOW() - INTERVAL '10 minutes'
LIMIT 1000
2. APPLY RULES
Para cada registro:
- Ejecutar reglas de integridad
- Ejecutar reglas de conformidad
- Ejecutar reglas de rendimiento
3. CLASSIFY
- PASS: Todas las reglas OK
- WARN: Reglas MEDIUM fallaron
- FAIL: Reglas HIGH/CRITICAL fallaron
4. UPDATE & ESCALATE
- UPDATE SYS_LOG SET audit_status
- INSERT AUDIT_RESULTS
- Si FAIL → marcar para DEEP
- Si CRITICAL → alerta inmediata
```
---
## Reglas de Integridad (I-*)
| Regla | Nombre | Severidad | Condición |
|-------|--------|-----------|-----------|
| I-001 | Hash entrada coincide | CRITICAL | input_hash == SHA256(archivo) |
| I-002 | Hash salida coincide | CRITICAL | output_hash == SHA256(archivo) |
| I-003 | Cadena trazas válida | HIGH | parent_trace_id existe o es null |
| I-004 | Referencias no huérfanas | HIGH | input_ref y output_ref existen |
| I-005 | Idempotency key única | MEDIUM | No duplicados con distinto resultado |
---
## Reglas de Conformidad (C-*)
| Regla | Nombre | Severidad | Condición |
|-------|--------|-----------|-----------|
| C-001 | Campos obligatorios | HIGH | Todos los campos requeridos presentes |
| C-002 | Status code válido | HIGH | status_code en lista permitida |
| C-003 | Step type válido | HIGH | step_type en lista permitida |
| C-004 | Confidence en rango | MEDIUM | 0 <= confidence <= 1 |
| C-005 | Timestamps coherentes | MEDIUM | completed >= started >= created |
---
## Reglas de Rendimiento (P-*)
| Regla | Nombre | Severidad | Condición |
|-------|--------|-----------|-----------|
| P-001 | Latencia aceptable | MEDIUM | duration_ms <= expected * 2 |
| P-002 | Costo razonable | MEDIUM | cost_units <= max_expected |
| P-003 | Sin reintentos excesivos | LOW | retries <= 3 |
---
## SENTINEL-DEEP
### Cuándo se Activa
- Regla CRITICAL falló en LIGHT
- Muestreo aleatorio (5% de registros PASS)
- Petición manual de auditoría
### Qué Hace
```
┌─────────────────────────────────────────────────────────────────┐
│ SENTINEL-DEEP │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. Obtener contexto completo del registro │
│ 2. Recuperar archivos de input_ref y output_ref │
│ 3. Analizar con LLM: │
│ - ¿El output es coherente con el input? │
│ - ¿Hay anomalías semánticas? │
│ - ¿La confianza reportada es realista? │
│ 4. Generar informe detallado │
│ 5. Si anomalía → alerta + bloqueo │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## Niveles de Severidad
| Nivel | Acción | Alerta |
|-------|--------|--------|
| **CRITICAL** | Escalado inmediato + DEEP | Inmediata |
| **HIGH** | Log error + revisar | Batch (cada hora) |
| **MEDIUM** | Log warning | Batch (diario) |
| **LOW** | Log info | Ninguna |
---
## Schema SQL
```sql
CREATE TABLE audit_results (
id BIGSERIAL PRIMARY KEY,
batch_id UUID NOT NULL,
audit_type VARCHAR(10) NOT NULL, -- 'LIGHT' o 'DEEP'
records_checked INTEGER NOT NULL,
records_pass INTEGER NOT NULL,
records_warn INTEGER NOT NULL,
records_fail INTEGER NOT NULL,
rules_triggered JSONB,
started_at TIMESTAMPTZ NOT NULL,
completed_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Índice para búsqueda por fecha
CREATE INDEX idx_audit_results_created ON audit_results(created_at);
```
---
## Métricas
| Métrica | Descripción | Umbral |
|---------|-------------|--------|
| pass_rate | % registros que pasan | > 99% |
| avg_latency_ms | Latencia promedio | < 100ms |
| escalation_rate | % escalados a DEEP | < 1% |
| alert_rate | Alertas por hora | < 5 |
---
## Pendiente
- [ ] Implementación scheduler LIGHT (cada 5 min)
- [ ] Implementación scheduler DEEP (cada hora)
- [ ] Dashboard de estado
- [ ] Sistema de alertas (ntfy)
- [ ] Integración con Feldman para verificar cadena de bloques

View File

@@ -0,0 +1,122 @@
# Contable
**Nombre:** Feldman
**Estado:** Implementado
---
## Descripción
Registro final definitivo e inmutable. Representa el estado válido y oficial de cada operación. Aplica principios contables de inmutabilidad.
---
## Características
| Característica | Valor |
|----------------|-------|
| Mutabilidad | **Inmutable** |
| Persistencia | Permanente |
| Eliminación | Prohibida bajo ningún concepto |
---
## Estructura Interna
Feldman es una **unidad conceptual** que contiene dos tablas:
```
┌─────────────────────────────────────────────────────────────────┐
│ FELDMAN │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ Cola de Validación │ → │ Registro Final │ │
│ │ (espera bloques) │ │ (inmutable) │ │
│ └─────────────────────┘ └─────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
**Aclaración:** La división es **técnica** (tiempo entre validaciones), no conceptual.
---
## Validación por Bloques
| Aspecto | Valor |
|---------|-------|
| Frecuencia | Periódica |
| Tipo | Por bloques, no transacción a transacción |
| Reglas | M-001, M-002, M-003 |
### Reglas de Validación
| Regla | Nombre | Descripción |
|-------|--------|-------------|
| M-001 | Hash único | h_bloque/h_milestone no existe previamente |
| M-002 | Encadenamiento | hash_previo apunta a bloque existente |
| M-003 | Integridad | hash_contenido = SHA-256(contenido) |
---
## Encadenamiento
```
Bloque N-1 Bloque N
┌──────────────────┐ ┌──────────────────┐
│ h_bloque: abc123 │ ──────► │ hash_previo: │
│ hash_contenido: │ │ abc123 │
│ def456 │ │ h_bloque: ghi789 │
│ secuencia: 1 │ │ secuencia: 2 │
└──────────────────┘ └──────────────────┘
```
---
## Schema Cola
```sql
CREATE TABLE feldman_cola (
id BIGSERIAL PRIMARY KEY,
tipo VARCHAR(50) NOT NULL,
h_entrada VARCHAR(64) NOT NULL,
contenido JSONB NOT NULL,
prioridad INTEGER DEFAULT 0,
estado VARCHAR(20) DEFAULT 'pendiente',
created_at TIMESTAMPTZ DEFAULT NOW(),
processed_at TIMESTAMPTZ
);
```
---
## Schema Registro Final
```sql
CREATE TABLE bloques (
id BIGSERIAL PRIMARY KEY,
h_bloque VARCHAR(64) UNIQUE NOT NULL,
h_instancia VARCHAR(64) NOT NULL,
secuencia BIGINT NOT NULL,
hash_previo VARCHAR(64),
hash_contenido VARCHAR(64) NOT NULL,
tipo_bloque VARCHAR(50) NOT NULL,
contenido JSONB NOT NULL,
metadata JSONB,
estado VARCHAR(20) DEFAULT 'consolidado',
created_at TIMESTAMPTZ DEFAULT NOW(),
validated_at TIMESTAMPTZ,
UNIQUE (h_instancia, secuencia)
);
```
---
## Trazabilidad
Cualquier registro en Feldman puede rastrearse hasta Secretaría:
```
Bloque (Feldman) → h_entrada → Secretaría (Clara/Margaret)
```

View File

@@ -0,0 +1,150 @@
# Context System
**Versión:** 0.1
**Estado:** Especificación inicial
---
## Descripción
Herramienta local para gestionar el contexto de trabajo con modelos de IA. Funciona de forma idéntica en cualquier servidor. No depende de servicios externos.
---
## Principios
1. **Local first** - Todo funciona sin conexión a servicios externos
2. **Inmutabilidad del log** - El historial nunca se modifica
3. **Control del usuario** - El usuario decide qué contexto envía
4. **Independencia** - Cada componente funciona por separado
5. **Portabilidad** - La misma herramienta en cualquier servidor
---
## Componentes
### 1. Log Inmutable
Registro de TODOS los mensajes de conversaciones con IA.
| Característica | Valor |
|----------------|-------|
| Editable | NO |
| Borrable | NO |
| Ubicación | Local (PostgreSQL) |
**Contenido:**
- Cada mensaje enviado a la IA
- Cada respuesta recibida
- Timestamp
- Identificador de sesión
### 2. Gestor de Contexto
| Característica | Valor |
|----------------|-------|
| Editable | Sí |
| Borrable | Sí |
| Ubicación | Local |
**Contenido:**
- Bloques de contexto reutilizables
- Configuración de qué se incluye en cada sesión
- Prioridades y orden
### 3. Dataset del Usuario
| Característica | Valor |
|----------------|-------|
| Editable | Sí |
| Borrable | Sí |
| Ubicación | Local |
**Contenido:**
- Referencias a archivos, documentos, datos
- Metadatos para búsqueda y acceso
- Estructura del espacio de trabajo
### 4. Buzón de Entrada
| Característica | Valor |
|----------------|-------|
| Editable | Según implementación |
| Ubicación | Local |
**Contenido:**
- Resultados que el usuario quiere persistir
- Datos que entran al sistema
- Conexión con almacenamiento externo
---
## Arquitectura
```
┌─────────────────────────────────────────────────────────────────┐
│ SERVIDOR (local) │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 1. LOG │ │ 2. GESTOR │ │
│ │ INMUTABLE │ │ DE CONTEXTO │ │
│ │ [NO editable] │ │ [Editable] │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 3. DATASET │ │ 4. BUZÓN │ │
│ │ DEL USUARIO │ │ DE ENTRADA │ │
│ │ [Editable] │ │ [E/S datos] │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────┐
│ IA EXTERNA │
│ (no en local) │
└─────────────────┘
```
---
## Módulo Grafo (Kuzu)
Capa de selección dinámica de contexto. El grafo no almacena datos primarios — es una proyección reconstruible del log.
```
LOG (inmutable) → GRAFO (derivado) → Contexto seleccionado
fuente de verdad caché relaciones input para LLM
```
### Tecnología: Kuzu
| Criterio | Kuzu |
|----------|------|
| Instalación | `pip install kuzu` |
| Dependencias | Ninguna |
| Servidor | No requiere |
| Persistencia | Carpeta local |
| Licencia | MIT |
### Uso Básico
```python
import kuzu
db = kuzu.Database("./grafo_contexto")
conn = kuzu.Connection(db)
# Crear esquema
conn.execute("CREATE NODE TABLE Mensaje(id INT64, hash STRING, PRIMARY KEY(id))")
conn.execute("CREATE NODE TABLE Concepto(nombre STRING, PRIMARY KEY(nombre))")
conn.execute("CREATE REL TABLE Menciona(FROM Mensaje TO Concepto)")
```
### Mantenimiento
| Tarea | Comando |
|-------|---------|
| Backup | `cp -r ./grafo_contexto ./backup` |
| Borrar | `rm -rf ./grafo_contexto` |
| Regenerar | Script desde log |

View File

@@ -0,0 +1,106 @@
# Producción
**Nombres:** Alfred (personal), Jared (corporativo)
**Estado:** Implementado
---
## Descripción
Almacena flujos y secuencias de procesos predefinidos. Pueden ser complejos (árboles de procesos de producción) o simples (rutinas de entrenamiento).
---
## Características
| Característica | Valor |
|----------------|-------|
| Mutabilidad | Editable |
| Persistencia | Permanente |
| Eliminación | Permitida |
---
## Función
- Tiene su propia tabla para definiciones de flujos
- La información ya está disponible y ordenada
- Permite ejecución directa sin intervención manual
- Implementación: Windmill (orquestador de procesos)
---
## Alfred vs Jared
| Aspecto | Alfred | Jared |
|---------|--------|-------|
| Contexto | Personal (DECK) | Corporativo (CORP) |
| Complejidad | Menor | Mayor (múltiples usuarios) |
| Flujos | Simples | Complejos |
---
## Flujo de Producción
Cuando la información **encaja** (viene de un proceso predefinido):
```
Alfred/Jared (producción)
Clara/Margaret (secretaría) ← Registro inmutable
Feldman (contable) ← Consolidación directa
```
**Nota:** Este flujo salta Administración porque no hay nada que enriquecer.
---
## Decisión de Flujo
```
┌─────────────────┐
│ ¿Encaja? │
└────────┬────────┘
┌────┴────┐
│ │
SÍ NO
│ │
▼ ▼
Feldman Mason
(directo) (enriquecer)
```
---
## Relación con Grace
```
Alfred/Jared (decide) ──► Grace (transforma)
```
- **Producción** decide el flujo
- **Grace** transforma los datos
---
## Mapeo de Intenciones
```javascript
// Ejemplo de decisiones de Alfred
"resumir" GRACE.SUMMARIZER
"transcribir" GRACE.ASR_ENGINE
"generar plan" PENNY
"crear imagen" FACTORY
```
---
## Pendiente
- [ ] Estructura de la tabla de flujos
- [ ] Formato de definición de flujos
- [ ] Mecanismo de hashes para "encaja/no encaja"

View File

@@ -0,0 +1,105 @@
# Secretaría
**Nombres:** Clara (personal), Margaret (corporativo)
**Estado:** Implementado
---
## Descripción
Punto de entrada inmutable del sistema. Todo dato que ingresa queda registrado exactamente como llegó.
---
## Principio
```
┌─────────────────────────────────────────────────────────────────┐
│ │
│ Todo lo que entra se registra. │
│ Nada se modifica. Nada se elimina. │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## Características
| Característica | Valor |
|----------------|-------|
| Mutabilidad | **Inmutable** |
| Persistencia | Permanente |
| Eliminación | Prohibida |
---
## Registra
- Fecha y hora
- Origen
- Usuario
- Contenido
- Hash SHA-256 de archivos
---
## Clara vs Margaret
| Aspecto | Clara | Margaret |
|---------|-------|----------|
| Contexto | Personal (DECK) | Corporativo (CORP) |
| Usuarios | Uno | Múltiples |
| Tabla recepción | Menor | Mayor |
| Funcionalidad | Equivalente | Equivalente |
---
## Flujo de Entrada
```
PACKET / API / Manual
┌─────────────────┐
│ Secretaría │
│ Clara/Margaret │
├─────────────────┤
│ • Registrar │
│ • Hashear │
│ • Almacenar │
│ • Confirmar │
└────────┬────────┘
├──► Producción (si encaja)
└──► Administración (si no encaja)
```
---
## Schema
```sql
CREATE TABLE secretaria_log (
id BIGSERIAL PRIMARY KEY,
h_entrada VARCHAR(64) UNIQUE NOT NULL,
ts TIMESTAMPTZ DEFAULT NOW(),
origen VARCHAR(100),
usuario_id INTEGER,
tipo_contenido VARCHAR(50),
contenido JSONB,
archivos_hashes JSONB,
metadata JSONB
);
```
---
## API
| Endpoint | Método | Descripción |
|----------|--------|-------------|
| /ingesta | POST | Nueva entrada |
| /ingesta/{h_entrada} | GET | Consultar entrada |
| /ingesta/verificar | POST | Verificar hash |

View File

@@ -0,0 +1,90 @@
# Utilidades
**Estado:** Operativo
---
## Descripción
Pack de servicios auxiliares disponibles en cada instancia del sistema.
---
## Servicios
| Servicio | Función | Base |
|----------|---------|------|
| **Mail** | Correo electrónico | Cowmail |
| **Alias** | Gestión de alias de correo | Addy.io |
| **Credenciales** | Gestión de credenciales | Vaultwarden |
| **Acortador** | Redirección de URLs | Shlink |
---
## Puertos por Servidor
| Servicio | DECK | CORP |
|----------|------|------|
| Mail | 8084 | 8084 |
| Alias | 8085 | 8085 |
| Credenciales | 8082 | 8081 |
| Acortador | 8083 | 8082 |
---
## Mail
Gestión de correo electrónico.
| Aspecto | Valor |
|---------|-------|
| Base | Cowmail |
| Protocolo | SMTP/IMAP |
---
## Alias
Gestión de alias de correo para privacidad y organización.
| Aspecto | Valor |
|---------|-------|
| Base | Addy.io |
| Función | Crear alias temporales o permanentes |
---
## Credenciales
Almacén seguro de credenciales y secretos.
| Aspecto | Valor |
|---------|-------|
| Base | Vaultwarden |
| Protocolo | API compatible Bitwarden |
| Referencia | `kv://` URIs |
---
## Acortador
Acortador y redirector de URLs con tracking.
| Aspecto | Valor |
|---------|-------|
| Base | Shlink |
| Función | URLs cortas, estadísticas de clics |
---
## Bases de Datos de Usuario
Extensiones de bibliotecas para contenido personalizado:
| Tabla | Descripción | Extiende |
|-------|-------------|----------|
| **hsu** | Tags de usuario | HST |
| **spu** | Especialidades de usuario | SPE |
| **pju** | Proyectos de usuario | PJT |
Estas tablas permiten que cada usuario cree sus propias etiquetas, especialidades y proyectos sin modificar las bibliotecas base del sistema.

View File

@@ -0,0 +1,224 @@
# Asistente de Voz
**Nombre:** Penny
**Versión:** 1.0
**Estado:** Especificación
---
## Descripción
PENNY es el asistente personal de voz del sistema DECK. Proporciona interfaz conversacional hablada 100% natural.
```
┌─────────────────────────────────────────────────────────────────┐
│ PENNY │
│ │
│ • ES la voz del DECK │
│ • ES la interfaz hablada con el usuario │
│ • ES quien llama a GRACE cuando necesita datos │
│ • HABLA con el usuario (GRACE no puede) │
│ • REGISTRA todo en el log (planos de información) │
│ • MANTIENE contexto durante la sesión │
│ │
│ "PENNY habla, GRACE procesa, el Log recuerda." │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## Principios
| Principio | Descripción |
|-----------|-------------|
| **Privacidad radical** | Audio procesado 100% local |
| **Conversación natural** | Turnos fluidos, latencia <2s |
| **Log como verdad** | Todo está en el log |
| **Planos separados** | Contextos cargables independientemente |
| **GRACE como backend** | PENNY pregunta, GRACE extrae |
---
## Arquitectura
```
┌─────────────────────────────────────────────────────────────────┐
│ PENNY VOICE ENGINE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐│
│ │ Silero │ │ Faster │ │ PENNY │ │ XTTS-v2 ││
│ │ VAD │─▶│ Whisper │─▶│ CORE │─▶│ /Kokoro ││
│ │ │ │ │ │ │ │ ││
│ │ Detecta │ │ Transcribe │ │ Orquesta │ │ Sintetiza ││
│ │ voz │ │ audio │ │ todo │ │ respuesta ││
│ └────────────┘ └────────────┘ └─────┬──────┘ └────────────┘│
│ │ │
│ ┌───────────────────┼───────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ PLANOS │ │ GRACE │ │
│ │ (Log) │ │ (S-CONTRACT)│ │
│ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
│ SOLO texto (nunca audio)
┌─────────────────────────────┐
│ Claude API │
└─────────────────────────────┘
```
---
## Flujo Voz → Voz
```
1. VAD DETECTA (Silero)
└── Usuario empieza a hablar
└── Usuario termina (silencio 700ms)
2. ASR TRANSCRIBE (Faster-Whisper)
└── Audio → Texto
└── ~200-400ms con GPU
3. PENNY CORE PROCESA
├── Cargar planos relevantes
├── ¿Necesita GRACE? → Llamar con S-CONTRACT
├── Construir prompt con contexto
└── Enviar a Claude API (solo texto)
4. LLM RESPONDE (Claude)
└── Streaming de tokens
└── ~1-2s primera palabra
5. TTS SINTETIZA (XTTS-v2/Kokoro)
└── Texto → Audio
└── Streaming mientras llegan tokens
6. LOG REGISTRA
└── Todo el intercambio → plano CONVERSACION
LATENCIA TOTAL OBJETIVO: <2 segundos voice-to-voice
```
---
## Planos de Información
El Log está organizado en planos que se cargan independientemente:
| Plano | Nombre | Descripción | Comportamiento |
|-------|--------|-------------|----------------|
| 0 | SISTEMA | Instrucciones base | INMUTABLE durante sesión |
| 1 | PERSONALIDAD | Tono, estilo, nombre, voz | CONFIGURABLE por usuario |
| 2 | CONTEXTO PERSONAL | Info usuario, preferencias | PERSISTENTE entre sesiones |
| 3 | CONTEXTO AMBIENTAL | Fecha, hora, estado sistema | DINÁMICO cada sesión |
| 4 | DATASET | Datos específicos de tarea | OPCIONAL bajo demanda |
| 5 | CONVERSACIÓN | Historial de sesión | TEMPORAL durante sesión |
---
## Modelos Autoalojados
| Componente | Modelo | Descripción |
|------------|--------|-------------|
| VAD | Silero VAD v5 | Detección de actividad vocal |
| ASR | Faster-Whisper Large-v3 | Transcripción |
| TTS | XTTS-v2 / Kokoro | Síntesis de voz |
| LLM | Claude API | Solo texto, streaming |
---
## Configuración
```yaml
penny:
version: "1.0"
server:
host: "0.0.0.0"
port: 8765
websocket_path: "/ws/voice"
models:
vad:
type: "silero"
path: "models/silero/vad_v5.onnx"
asr:
type: "faster-whisper"
model: "large-v3"
device: "cuda"
compute_type: "float16"
tts:
type: "xtts-v2"
speaker_wav: "voces/penny_base.wav"
language: "es"
llm:
provider: "anthropic"
model: "claude-sonnet-4-20250514"
max_tokens: 150
temperature: 0.7
streaming: true
grace:
endpoint: "http://localhost:8080/api/v1"
timeout_ms: 10000
log:
database_url: "postgresql://..."
retain_audio_days: 7
retain_text_days: 365
```
---
## Rol en el Sistema
```
┌─────────────────────────────────────────────────────────────────┐
│ DECK (Servidor Personal) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Usuario ◄────────────────────────────────────► PENNY │
│ (voz natural) │ (habla) │
│ │ │
│ ┌──────────────┼──────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ GRACE │ │ LOG │ │ DECK │ │
│ │ (datos) │ │(planos) │ │(acciones│ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## Características Conversacionales
| Característica | Descripción |
|----------------|-------------|
| **Barge-in** | Usuario puede interrumpir |
| **Turn detection** | Detecta fin de turno por silencio |
| **Contexto** | Mantiene contexto durante sesión |
| **Streaming** | Respuesta progresiva mientras genera |
---
## Pendiente
- [ ] Configurar servidor con GPU
- [ ] Instalar modelos (Whisper, XTTS-v2, Silero)
- [ ] Crear tablas de log
- [ ] Definir planos específicos
- [ ] Grabar voz base para clonación TTS
- [ ] Implementar pipeline con Pipecat
- [ ] Ajustar turn detection

View File

@@ -0,0 +1,84 @@
# Circle
**Nombre:** The Circle - Consejo de Perspectivas
**Estado:** Implementado
---
## Descripción
Sistema que convoca múltiples perspectivas (agentes con roles distintos) para analizar un problema desde diferentes ángulos.
---
## Concepto
```
┌─────────────────────────────────────────────────────────────────┐
│ THE CIRCLE │
│ (Consejo de Perspectivas) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ │
│ │ Crítico │ │Optimista│ │
│ └────┬────┘ └────┬────┘ │
│ │ │ │
│ │ ┌─────────────┐ │ │
│ └─────►│ PROBLEMA │◄─────────┘ │
│ └──────┬──────┘ │
│ ┌─────────────┼─────────────┐ │
│ │ │ │ │
│ ┌────┴────┐ ┌─────┴─────┐ ┌────┴────┐ │
│ │Pragmático│ │ Creativo │ │Analítico│ │
│ └─────────┘ └───────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## Presets
| Preset | Perspectivas | Uso |
|--------|--------------|-----|
| **decision** | Crítico, Optimista, Pragmático | Toma de decisiones |
| **creative** | Creativo, Crítico, Explorador | Brainstorming |
| **analysis** | Analítico, Escéptico, Sintético | Análisis profundo |
---
## Uso
```javascript
const circle = new Circle('decision');
const result = await circle.deliberate({
problem: "¿Deberíamos lanzar el producto ahora?",
context: "..."
});
```
---
## Output
```json
{
"perspectives": [
{ "role": "critico", "opinion": "..." },
{ "role": "optimista", "opinion": "..." },
{ "role": "pragmatico", "opinion": "..." }
],
"synthesis": "...",
"recommendation": "..."
}
```
---
## Diferencia con Orchestrator
| Aspecto | Orchestrator | Circle |
|---------|--------------|--------|
| Enfoque | Ejecución de tareas | Deliberación |
| Agentes | Colaborativos | Contrapuestos |
| Output | Resultado | Perspectivas + síntesis |

View File

@@ -0,0 +1,87 @@
# Cloudville
**Nombre:** Cloudville - Laboratorio de Zumbados
**Estado:** Implementado
---
## Descripción
Laboratorio experimental donde agentes con personalidades extremas o poco convencionales exploran ideas sin restricciones.
---
## Concepto
```
┌─────────────────────────────────────────────────────────────────┐
│ CLOUDVILLE │
│ (Laboratorio de Zumbados) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ "Donde las ideas locas tienen permiso para existir" │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │Visionario│ │ Caótico │ │Contrarian│ │ Loco │ │
│ │ │ │ │ │ │ │ Genio │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## Propósito
| Aspecto | Valor |
|---------|-------|
| Restricciones | Mínimas |
| Filtro | Ninguno |
| Output | Ideas sin censura |
| Uso | Exploración, brainstorming extremo |
---
## Diferencia con Circle
| Aspecto | Circle | Cloudville |
|---------|--------|------------|
| Tono | Profesional | Experimental |
| Filtro | Moderado | Ninguno |
| Propósito | Decisión | Exploración |
| Personalidades | Equilibradas | Extremas |
---
## Uso
```javascript
const cloudville = new Cloudville();
const ideas = await cloudville.explore({
challenge: "¿Cómo podríamos...?",
constraints: "ninguna"
});
```
---
## Output
```json
{
"ideas": [
{ "agent": "visionario", "idea": "..." },
{ "agent": "caotico", "idea": "..." },
{ "agent": "contrarian", "idea": "..." },
{ "agent": "loco_genio", "idea": "..." }
],
"wildest": "...",
"hidden_gems": ["...", "..."]
}
```
---
## Advertencia
> **Nota:** Las ideas de Cloudville no están filtradas. Requieren evaluación posterior antes de implementación.

View File

@@ -0,0 +1,96 @@
# Generación Iterativa
**Nombre:** The Factory
**Estado:** Implementado (RunPod)
---
## Descripción
Sistema de generación iterativa. Produce contenido mediante ciclos de refinamiento sucesivos.
---
## Concepto
```
Input inicial
┌─────────────────┐
│ THE FACTORY │
├─────────────────┤
│ │
│ Iteración 1 ───┼──► Resultado parcial
│ │ │
│ ▼ │
│ Iteración 2 ───┼──► Resultado mejorado
│ │ │
│ ▼ │
│ Iteración N ───┼──► Resultado final
│ │
└─────────────────┘
```
---
## Endpoint
| Parámetro | Valor |
|-----------|-------|
| Ubicación | RunPod |
| GPU | NVIDIA L4 |
| Modo | Serverless |
---
## Casos de Uso
| Caso | Descripción |
|------|-------------|
| Generación de imágenes | Refinamiento progresivo |
| Generación de texto | Mejora iterativa |
| Producción de contenido | Ciclos de calidad |
---
## Request
```json
{
"input": {
"prompt": "...",
"iterations": 3,
"quality_threshold": 0.8,
"output_format": "..."
}
}
```
---
## Response
```json
{
"status": "completed",
"iterations_used": 3,
"outputs": [
{ "iteration": 1, "result": "...", "score": 0.6 },
{ "iteration": 2, "result": "...", "score": 0.75 },
{ "iteration": 3, "result": "...", "score": 0.85 }
],
"final_result": "...",
"trace_id": "..."
}
```
---
## Diferencia con Grace
| Aspecto | Grace | The Factory |
|---------|-------|-------------|
| Modo | Single-shot | Iterativo |
| Enfoque | Transformación | Generación |
| Ciclos | 1 | N |

View File

@@ -0,0 +1,203 @@
# Gestoría
**Nombre:** Grace
**Versión:** 2.0
**Estado:** Enterprise Standard
---
## Descripción
GRACE no es un chatbot. Es un **conjunto de 18 microservicios cognitivos desacoplados**.
```
┌─────────────────────────────────────────────────────────────────┐
│ PRINCIPIO GRACE │
│ │
│ "GRACE transforma, Producción (Alfred/Jared) decide" │
└─────────────────────────────────────────────────────────────────┘
```
---
## Características
| Propiedad | Valor |
|-----------|-------|
| Stateless | No guarda estado |
| Determinista | Misma entrada → misma salida |
| Intercambiable | Modelos sustituibles |
| Trazable | Todo via trace_id |
**GRACE no:**
- Toma decisiones
- Altera estados
- Escribe en base de datos
---
## Infraestructura
| Aspecto | Valor |
|---------|-------|
| **Plataforma** | RunPod Serverless |
| **GPU** | NVIDIA L4 (24GB) |
| **Endpoint** | https://api.runpod.ai/v2/{id} |
| **Modos** | runsync, run, status |
---
## Catálogo de 18 Módulos
### FAMILIA A - VISIÓN (Procesado Documental)
| # | Módulo | Función |
|---|--------|---------|
| 1 | **IMG_PREPROCESS** | Normalización: crop, denoise, upscale, grayscale |
| 2 | **PDF_SCANNER** | Limpieza escaneados: deskew, binarización, bordes |
| 3 | **OCR_CORE** | Extracción texto: layout analysis, HOCR |
### FAMILIA B - VOZ (Reuniones)
| # | Módulo | Función |
|---|--------|---------|
| 4 | **ASR_ENGINE** | Reconocimiento habla: Whisper Large v3, diarización |
| 5 | **TTS_ENGINE** | Síntesis voz neutral para notificaciones |
### FAMILIA C - IDENTIDAD (Biometría)
| # | Módulo | Función |
|---|--------|---------|
| 6 | **FACE_VECTOR** | Vector biométrico facial (Float32 L2) |
| 7 | **ID_CONSOLIDATION** | Fusión identidades: mediana geométrica |
| 8 | **AVATAR_GEN** | Avatar neutral 512x512 desde vector |
### FAMILIA D - SEMÁNTICA (NLP)
| # | Módulo | Función |
|---|--------|---------|
| 9 | **EMBEDDINGS** | Vectorización semántica para búsquedas |
| 10 | **SUMMARIZER** | Resumen estructurado: objetivos, acuerdos, riesgos |
| 11 | **TASK_EXTRACTOR** | Minería de acciones, responsables, fechas |
| 12 | **CLASSIFIER** | Asigna tags HST basado en contenido |
| 13 | **SIMILARITY** | Comparador vectorial (Cosine Similarity) |
### FAMILIA E - UTILIDADES
| # | Módulo | Función |
|---|--------|---------|
| 14 | **FIELD_EXTRACTOR** | Lectura estructurada: CIF, fechas, importes |
| 15 | **HASHER** | Generador SHA256 y UUID v4 |
| 16 | **INPUT_NORMALIZER** | Traducción formatos y enumeraciones |
| 17 | **OUTPUT_ADAPTER** | Adaptación a formatos legacy |
| 18 | **LANG_DETECT** | Identificación idioma ISO 639-1 |
---
## Cadenas de Fallback
Cada módulo define degradación vía `fallback_chain` en S-CONTRACT:
### Ejemplo OCR
```json
"routing": {
"module": "OCR_CORE",
"fallback_chain": ["OCR_LOCAL", "OCR_GROQ", "OCR_OPENAI"]
}
```
### Ejemplo ASR
```json
"routing": {
"module": "ASR_ENGINE",
"fallback_chain": ["ASR_WHISPER_LOCAL", "ASR_FASTER_WHISPER", "ASR_GROQ"]
}
```
---
## Integración con S-CONTRACT
Todos los módulos GRACE cumplen S-CONTRACT sin excepciones. No hay contratos específicos por módulo.
### Request (LITE)
```json
{
"contract_version": "2.1",
"profile": "LITE",
"envelope": {
"trace_id": "uuid-v4",
"idempotency_key": "sha256-input"
},
"routing": {
"module": "CLASSIFIER"
},
"context": {
"lang": "es",
"mode": "strict"
},
"payload": {
"type": "text",
"encoding": "utf-8",
"content": "Texto a procesar"
}
}
```
### Response
```json
{
"contract_version": "2.1",
"profile": "LITE",
"status": {
"code": "SUCCESS",
"provider_used": "groq"
},
"result": {
"data": {
"category": "FINANZAS",
"confidence": 0.98
}
},
"quality": {
"confidence": 0.98,
"tokens_input": 150,
"tokens_output": 45
},
"metadata": {
"model_id": "llama-3.1-70b-versatile",
"processing_ms": 340
}
}
```
---
## Relación con Otros Componentes
GRACE es un servicio de transformación. Cuando termina de procesar, envía el resultado a Secretaría (Clara/Margaret) como cualquier otro origen:
```
┌─────────────────────────────────────────────────────────────────┐
│ PUNTO DE ENTRADA ÚNICO │
├─────────────────────────────────────────────────────────────────┤
│ │
│ GRACE ──────┐ │
│ Penny ──────┼──► Secretaría (Clara/Margaret) │
│ Packet ─────┤ │
│ Manual ─────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
GRACE no es un paso del flujo de datos. Es un servicio que cualquier componente puede invocar vía S-CONTRACT para obtener transformaciones cognitivas (OCR, transcripción, clasificación, etc.).
---
## Compatibilidad Universal
El sistema está diseñado para que cuando aparezcan módulos mejores, encajen sin trabajo añadido. S-CONTRACT es el marco de compatibilidad universal — cualquier módulo que lo cumpla es interoperable.

File diff suppressed because it is too large Load Diff