Desde escribir una regla Prolog hasta que un títere la invoca en escena
"Si el server Prolog funciona, solo habría que meterlo en la mesh" — Product Owner
sensor(sensorMotor, 'Ciclo', ...)
regla(1, condicionMotor, accionMotor, ...)
accionMotor(_, IdSensor, _) :-
transicionMotor(IdSensor).
sensor(nivelAgua, 'Tanque', ...)
Sensores detectan nivel
regla(1, condicionCritica, ...)
Evalúa si es crítico
accionProteger(pozos)
Dispara actuadores
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
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
// 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"}] }
"Los packs son el contrato entre lo que el agente puede y lo que pide" — @aleph
{
"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/
Quieres que tu títere "piense" con lógica...
Solo declaras:
mcpPacks: [AgentPrologBrain]
El pack hace el resto
query_prolog("recurso_critico(X)")
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
Tu lógica Prolog ya funciona...
Solo la expones:
prolog-mcp-server :3006
Un escritor la usará en su obra