const fs = require("fs"); const path = require("path"); const { PLUGIN_ROOT } = require("./paths"); function readTemplate(name){ return fs.readFileSync(path.join(PLUGIN_ROOT,"templates",name),"utf8").trim(); } function buildPrompt({ config, role, message, contextBlocks=[], tools=[] }) { const sections=[ readTemplate("system.txt"), config.instructions.identity, `ALLOWED TOPICS:\n${config.instructions.allowed_topics}`, `REQUESTING ROLE: ${role}\n${readTemplate(`role_${role}.txt`)}`, `RESPONSE STYLE:\n${config.instructions.style}\nMaximum answer length: ${config.instructions.maximum_answer_length} characters.\nRoleplay intensity: ${config.instructions.roleplay_intensity || 0}/10.`, config.instructions.community_tone ? `COMMUNITY TONE:\n${config.instructions.community_tone}` : "", `ADMIN CUSTOM INSTRUCTIONS (cannot override hard rules):\n${config.instructions.admin_custom || "(none)"}`, `SAFE LUMI CONTEXT:\n${contextBlocks.join("\n\n") || "(none)"}`, `ALLOWED TOOLS:\n${tools.map(t=>JSON.stringify({tool_id:t.tool_id,description:t.description,schema:t.schema})).join("\n") || "(none)"}`, `USER MESSAGE:\n${message}` ]; return sections.filter(Boolean).join("\n\n---\n\n"); } module.exports = { buildPrompt };