toolRegistry.js•1.69 kB
const config = require('config');
const whatsappConnector = require('../services/whatsappConnector');
const telegramConnector = require('../services/telegramConnector');
const toolImplementations = new Map();
let toolManifest = [];
const connectors = {
'whatsapp': whatsappConnector,
'telegram': telegramConnector
};
async function loadTools() {
console.log('Loading tools from enabled services...');
for (const serviceName in connectors) {
if (config.has(`services.${serviceName}`) && config.get(`services.${serviceName}.enabled`)) {
const connector = connectors[serviceName];
const isInitialized = await connector.initialize();
if (isInitialized) {
connector.tools.forEach(tool => {
toolManifest.push(tool);
toolImplementations.set(tool.name, connector.implementations[tool.name]);
});
console.log(` -> Loaded ${connector.tools.length} tools from ${serviceName}`);
}
}
}
}
function listTools() {
return toolManifest;
}
async function executeTool(toolName, params) {
if (!toolImplementations.has(toolName)) {
return { error: { code: -32601, message: `Method '${toolName}' not found.` } };
}
try {
const implementation = toolImplementations.get(toolName);
const data = await implementation(params);
return { data };
} catch (e) {
console.error(`Error executing tool ${toolName}:`, e);
return { error: { code: -32600, message: `Execution error: ${e.message}` } };
}
}
module.exports = { loadTools, listTools, executeTool };