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