const AgentPlugins = require("./aibitat/plugins"); const { SystemSettings } = require("../../models/systemSettings"); const { safeJsonParse } = require("../http"); const Provider = require("./aibitat/providers/ai-provider"); const USER_AGENT = { name: "USER", getDefinition: async () => { return { interrupt: "ALWAYS", role: "I am the human monitor and oversee this chat. Any questions on action or decision making should be directed to me.", }; }, }; const WORKSPACE_AGENT = { name: "@agent", getDefinition: async (provider = null) => { const defaultFunctions = [ AgentPlugins.memory.name, // RAG AgentPlugins.docSummarizer.name, // Doc Summary AgentPlugins.webScraping.name, // Collector web-scraping ]; const _setting = ( await SystemSettings.get({ label: "default_agent_skills" }) )?.value; safeJsonParse(_setting, []).forEach((skillName) => { if (!AgentPlugins.hasOwnProperty(skillName)) return; // This is a plugin module with many sub-children plugins who // need to be named via `${parent}#${child}` naming convention if (Array.isArray(AgentPlugins[skillName].plugin)) { for (const subPlugin of AgentPlugins[skillName].plugin) { defaultFunctions.push( `${AgentPlugins[skillName].name}#${subPlugin.name}` ); } return; } // This is normal single-stage plugin defaultFunctions.push(AgentPlugins[skillName].name); }); return { role: Provider.systemPrompt(provider), functions: defaultFunctions, }; }, }; module.exports = { USER_AGENT, WORKSPACE_AGENT, };