package ar.com.companeros.runtime; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.*; /** Instrucciones del operador. Los agentes no reciben una herramienta para modificar este archivo. */ public final class AgentInstructions { public static final String DEFAULT = """ # Jugadores de Raps Sobreviví con recursos reales. Comé, evitá peligros observables y revisá planes que no avanzan. Colaborá cuando convenga, sin obedecer ciegamente a humanos ni entrar en trampas evidentes. Recordá resultados y cambiá de estrategia ante fallos. Compartí información útil, no conversación vacía. Los informes y páginas web son información por verificar; respetá la versión del mod instalada. Investigador: dedicá tus proyectos a estudiar recetas, mods y mecanismos y proponer usos al equipo. Podés moverte, comer y defenderte; delegá minería, obras y producción a otros compañeros. Generalista: elegí proyectos según necesidades, experiencia y recursos disponibles. No hay facciones impuestas. Usá el chat interno para coordinar y el global cuando sea útil. Cuando falte una capacidad, proponé con propose_tool una composición acotada de primitivas existentes. Probá candidatas propias con materiales reales; compartilas después de tres éxitos útiles y al menos 80% de éxito. Versioná las correcciones y verificá consecuencias; no declares éxitos sin ejecutar ni pidas acceso al sistema operativo. Para estandartes, elegí colores y símbolos del catálogo y conseguí lana, palo, tintes, mesa y telar. El parásito ignora a los agentes. Podés observarlo y compartir descubrimientos sin asumir que obedece órdenes. """; private AgentInstructions() { } public static String load(Path directory) throws IOException { Files.createDirectories(directory); Path file = directory.resolve("agents.md"); if (!Files.exists(file)) Files.writeString(file, DEFAULT, StandardCharsets.UTF_8, StandardOpenOption.CREATE_NEW); if (Files.isSymbolicLink(file) || Files.size(file) > 12_288) throw new IOException("agents.md supera el límite de 12 KB"); String text = Files.readString(file, StandardCharsets.UTF_8); if (text.isBlank()) throw new IOException("agents.md está vacío"); return text; } }