@bestdefense/bd-agent
Version:
An AI-powered coding assistant CLI that connects to AWS Bedrock
63 lines • 2.1 kB
JavaScript
;
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