You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
const AgentPlugins = require("./aibitat/plugins");const { SystemSettings } = require("../../models/systemSettings");const { safeJsonParse } = require("../http");const Provider = require("./aibitat/providers/ai-provider");const ImportedPlugin = require("./imported");const { AgentFlows } = require("../agentFlows");
// This is a list of skills that are built-in and default enabled.
const DEFAULT_SKILLS = [ AgentPlugins.memory.name, AgentPlugins.docSummarizer.name, AgentPlugins.webScraping.name,];
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) => { return { role: Provider.systemPrompt(provider), functions: [ ...(await agentSkillsFromSystemSettings()), ...ImportedPlugin.activeImportedPlugins(), ...AgentFlows.activeFlowPlugins(), ], }; },};
/** * Fetches and preloads the names/identifiers for plugins that will be dynamically * loaded later * @returns {Promise<string[]>} */async function agentSkillsFromSystemSettings() { const systemFunctions = [];
// Load non-imported built-in skills that are configurable, but are default enabled.
const _disabledDefaultSkills = safeJsonParse( await SystemSettings.getValueOrFallback( { label: "disabled_agent_skills" }, "[]" ), [] ); DEFAULT_SKILLS.forEach((skill) => { if (!_disabledDefaultSkills.includes(skill)) systemFunctions.push(AgentPlugins[skill].name); });
// Load non-imported built-in skills that are configurable.
const _setting = safeJsonParse( await SystemSettings.getValueOrFallback( { label: "default_agent_skills" }, "[]" ), [] ); _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) { systemFunctions.push( `${AgentPlugins[skillName].name}#${subPlugin.name}` ); } return; }
// This is normal single-stage plugin
systemFunctions.push(AgentPlugins[skillName].name); }); return systemFunctions;}
module.exports = { USER_AGENT, WORKSPACE_AGENT, agentSkillsFromSystemSettings,};
|