UNPKG

@bestdefense/bd-agent

Version:

An AI-powered coding assistant CLI that connects to AWS Bedrock

63 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ToolExecutor = void 0; const file_system_1 = require("../tools/file-system"); const git_1 = require("../tools/git"); const shell_1 = require("../tools/shell"); const advanced_edit_1 = require("../tools/advanced-edit"); const search_tools_1 = require("../tools/search-tools"); class ToolExecutor { tools = new Map(); constructor() { this.registerTools(); } registerTools() { const allTools = [ ...file_system_1.fileSystemTools, ...git_1.gitTools, ...shell_1.shellTools, ...advanced_edit_1.advancedEditTools, ...search_tools_1.searchTools ]; for (const tool of allTools) { this.tools.set(tool.name, tool); } } getAvailableTools() { return Array.from(this.tools.values()).map(({ name, description, input_schema }) => ({ name, description, input_schema })); } async executeTool(name, params) { const tool = this.tools.get(name); if (!tool) { throw new Error(`Tool '${name}' not found`); } // Validate required parameters if (tool.input_schema.required) { for (const required of tool.input_schema.required) { if (!(required in params) || params[required] === undefined || params[required] === null) { throw new Error(`Missing required parameter '${required}' for tool ${name}`); } } } try { return await tool.execute(params); } catch (error) { // Preserve the original error but enhance the message error.message = `Tool '${name}' failed: ${error.message}`; throw error; } } hasTool(name) { return this.tools.has(name); } getToolDescription(name) { return this.tools.get(name)?.description; } } exports.ToolExecutor = ToolExecutor; //# sourceMappingURL=tool-executor.js.map