IOT-SBR-LOGICA + SCRIPT-2.2.0

Agentic Typed Logic Flow

📝 → 🔌 → 📦 → 🎭

Desde escribir una regla Prolog hasta que un títere la invoca en escena

Rama: flavour/monada
Sprint: FC1 2026
L0 Infraestructura

Todo empieza con el código que YA existe

🧠
PrologServer
✅ Funcional
📚
FIA Catalog
✅ 10 paradigmas
🌐
MCP Mesh
✅ 5 servers
"Si el server Prolog funciona, solo habría que meterlo en la mesh" — Product Owner
L0 🔧 Código

Archivos Clave

PrologServer — Estructura SBR
sensor(sensorMotor, 'Ciclo', ...)
regla(1, condicionMotor, accionMotor, ...)
accionMotor(_, IdSensor, _) :- 
    transicionMotor(IdSensor).
SWI-Prolog SBR Aferencia/Eferencia IoT
L0 🎮 Demo

Inteligencias Situadas en Acción

Escenario: Arrakis (gestión de agua)
AFERENCIA
sensor(nivelAgua, 'Tanque', ...) Sensores detectan nivel
→
BRAIN
regla(1, condicionCritica, ...) Evalúa si es crítico
→
EFERENCIA
accionProteger(pozos) Dispara actuadores
L1 Servidores MCP

El código se convierte en servicio

📦 Código local
⟹ CONFIGS_BASE
🔌 Servidor MCP
prolog-mcp-server
:3006
✅ FC1 Activo
aaia-mcp-server
:3007
🔧 Pendiente
💡 "MCP Presets son ciudadanos de primera categoría"
L1 🔧 Código

Configuración del Servidor

DEFAULT_PROLOG_MCP_SERVER_CONFIG.ts ✅
export const DEFAULT_PROLOG_MCP_SERVER_CONFIG = {
  id: "prolog-mcp-server",
  port: 3006,
  tools: [
    "prolog_create_session",
    "prolog_query",
    "prolog_assert_fact",
    "prolog_consult_file",
    "prolog_destroy_session",
    "prolog_list_sessions",
    "prolog_get_templates"
  ],
  resources: ["session-state", "templates-catalog"]
};
✅ MCPGallery/.../configs/DEFAULT_PROLOG_MCP_SERVER_CONFIG.ts
✅ MCPGallery/.../services/PrologEngine.ts
✅ MCPGallery/.../services/PrologSessionManager.ts
✅ MCPGallery/.../MCPPrologServer.ts
⏳ MCPGallery/.../configs/aaia.config.ts
Effort: 23 pts ✅ (FC1) + 4 pts ⏳ (FC2)
L1 🤖 Agentes

Red Agéntica del Layer

@plugin_ox_prologeditor
Productor
exponer →
@plugin_ox_mcppresets
Integrador
@prologeditor "Registrar como MCP" @mcppresets
@argboard "Exponer AAIA" @mcppresets
L1 🧠 Prolog MCP Flow FC1 ✅

Ciclo de Inferencia Lógica

🤖 Copilot Agent
──────► create_session
🔌 MCPPrologServer :3006
│
📦 PrologSessionManager
│
⚙️ PrologEngine swipl-stdio
│
🦉 SWI-Prolog v10.0.0
prolog_create_session Crea sesión aislada
prolog_assert_fact Añade a la KB
prolog_query Ejecuta consulta
prolog_consult_file Carga archivo .pl
prolog_destroy_session Libera recursos
prolog_list_sessions Lista activas
Ejemplo de consulta:
// 1. Crear sesión
prolog_create_session({sessionId: "teatro-01", obraId: "demo"})

// 2. Añadir hechos
prolog_assert_fact({sessionId: "teatro-01", fact: "agente(ox, meta, oraculo)"})

// 3. Consultar
prolog_query({sessionId: "teatro-01", query: "agente(X, meta, Y)."})
// → { results: [{X: "ox", Y: "oraculo"}] }
L2 Packs Tipados

El Pack es el contrato

🤖
Lo que el agente PUEDE
📦
Pack
📋
Lo que el agente PIDE
AgentPrologBrain
Razonamiento lógico SBR
AgentFIACreator
Creación de agentes FIA
"Los packs son el contrato entre lo que el agente puede y lo que pide" — @aleph
L2 🔧 Código

Estructura del Pack

MCPTypedPromptServer
:3020
Validación NL↔JSON pre-pack
7 tools · 3 prompts
AgentPrologBrain.pack.json
{
  "id": "AgentPrologBrain",
  "version": "1.0.0",
  "mcpServer": "prolog-mcp-server",
  "tools": [
    { "name": "query_prolog" },
    { "name": "assert_fact" }
  ],
  "resources": [
    { "uri": "prolog://knowledge_base" }
  ],
  "prompts": [
    { "name": "razonamiento_sbr" }
  ]
}
➕ .github/plugins/typed-prompting/packs/
JSON Schema ajv validation TypedPrompting
L2 ✍️ Para Escritores

No necesitas saber Prolog

Quieres que tu títere "piense" con lógica...

Solo declaras:

mcpPacks: [AgentPrologBrain]

El pack hace el resto

🎮
Como elegir un "power-up" para tu personaje sin programar el power-up
L3 Teatro Runtime

Los títeres cobran vida

🎭 Obra: Duna
Escena: Consejo de Agua
AgentPrologBrain AgentFIACreator
@arrakis: invoca query_prolog("recurso_critico(X)")
MCP: X = agua
@arrakis: "El agua es recurso crítico. Protejamos los pozos."
L3 🔧 Código

Configuración de Obra

MCPPrologServer
:3006
Motor de inferencia lógica
12 tools · 6 resources · 8 prompts
obra.yaml (con mcpPacks)
titulo: "Duna: Consejo de Agua"
mcpPacks:
  - AgentPrologBrain
  - AgentFIACreator

escenas:
  - nombre: "Consejo de Agua"
    agentes:
      - arrakis
      - boe
    contexto: |
      Decidir distribución usando
      reglas Prolog en runtime
✏️ .github/plugins/teatro/schemas/obra.schema.yaml
✏️ .github/plugins/arg-board/agents/Arrakis.agent.md
L3 💻 Para Programadores

No necesitas diseñar títeres

Tu lógica Prolog ya funciona...

Solo la expones:

prolog-mcp-server :3006

Un escritor la usará en su obra

🔌
Como crear una API: tú haces el backend, otros hacen el frontend

Secuencia End-to-End

👤 User
🎭 Teatro
🌐 Launcher
🧠 Prolog
"Iniciar obra" ────────────→
getAvailablePacks() ────────────────────→
←──────────────────── [AgentPrologBrain]
query_prolog("recurso_critico(X)") ──────────────────────────────────→
←────────────────────────────────── X = agua
←──────────── Respuesta ARG

📋 Backlog: Épicas y Tasks

E1
Prolog MCP Server
L0→L1
5 pts
E2
AAIA MCP Server
L0→L1
8 pts
E3
Pack AgentPrologBrain
L1→L2
5 pts
E4
Pack AgentFIACreator
L1→L2
5 pts
E5
Teatro Runtime Context
L2→L3
3 pts
E6
ARG Agents MCP Live
L2→L3
8 pts
Total: ~34 pts (1 Feature Cycle)

🤖 Red Agéntica Completa

Agente Capa Rol
@plugin_ox_prologeditor L0 Productor Prolog
@plugin_ox_argboard L0 Productor AAIA
@plugin_ox_typedprompting L0 Productor Schemas
@plugin_ox_mcppresets L1 Integrador MCP
@plugin_ox_teatro L3 Consumidor Runtime
prologeditor → mcppresets: "Registrar"
mcppresets → teatro: "Pack disponible"
teatro → ox: "Diagnóstico post"

📂 Archivos (Índice DRY)

⚠️ Riesgos y Mitigaciones

PrologServer sin HTTP
🟡 Medio
Wrapper en mcp-mesh-sdk (patrón existente)
AAIAGallery legacy
🟡 Medio
Solo exponer vía MCP, no refactorizar
Packs sin validación
🟢 Bajo
ajv en modo warn (planificado FC1)
Teatro sin runtime context
🟡 Medio
Añadir mcpPacks a obra.yaml
✅ Veredicto @aleph: "Lo veo. No es cuento de la lechera."

📚 Referencias y Documentación

¿Listo para contribuir?

🧠
Soy Programador
Crea reglas Prolog y expón tu servidor MCP
Empieza en L0 → L1
✍️
Soy Escritor
Diseña obras que usen packs de razonamiento
Empieza en L2 → L3
🔗
Soy Integrador
Conecta piezas existentes con nuevos packs
Empieza en L1 → L2