UNPKG

n8n-bookstack-agent-tool

Version:

Comprehensive BookStack API integration tool for n8n AI Agent with MCP framework compatibility

126 lines 7.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BookStackN8nTool = exports.BookStackApiParser = exports.BookStackCache = exports.CacheManager = exports.ErrorHandler = exports.BookStackErrorType = exports.BookStackError = exports.ExecutableMethodGenerator = exports.MCPCommandRegistry = exports.CommandGenerator = exports.TagsResource = exports.AttachmentsResource = exports.RolesResource = exports.UsersResource = exports.ShelvesResource = exports.PagesResource = exports.ChaptersResource = exports.BooksResource = exports.ResourceManager = exports.N8nConfigGenerator = exports.BookStackConfigValidator = exports.BookStackClient = void 0; var client_js_1 = require("./auth/client.js"); Object.defineProperty(exports, "BookStackClient", { enumerable: true, get: function () { return client_js_1.BookStackClient; } }); var config_js_1 = require("./auth/config.js"); Object.defineProperty(exports, "BookStackConfigValidator", { enumerable: true, get: function () { return config_js_1.BookStackConfigValidator; } }); var gui_config_js_1 = require("./auth/gui-config.js"); Object.defineProperty(exports, "N8nConfigGenerator", { enumerable: true, get: function () { return gui_config_js_1.N8nConfigGenerator; } }); var index_js_1 = require("./resources/index.js"); Object.defineProperty(exports, "ResourceManager", { enumerable: true, get: function () { return index_js_1.ResourceManager; } }); var index_js_2 = require("./resources/index.js"); Object.defineProperty(exports, "BooksResource", { enumerable: true, get: function () { return index_js_2.BooksResource; } }); Object.defineProperty(exports, "ChaptersResource", { enumerable: true, get: function () { return index_js_2.ChaptersResource; } }); Object.defineProperty(exports, "PagesResource", { enumerable: true, get: function () { return index_js_2.PagesResource; } }); Object.defineProperty(exports, "ShelvesResource", { enumerable: true, get: function () { return index_js_2.ShelvesResource; } }); Object.defineProperty(exports, "UsersResource", { enumerable: true, get: function () { return index_js_2.UsersResource; } }); Object.defineProperty(exports, "RolesResource", { enumerable: true, get: function () { return index_js_2.RolesResource; } }); Object.defineProperty(exports, "AttachmentsResource", { enumerable: true, get: function () { return index_js_2.AttachmentsResource; } }); Object.defineProperty(exports, "TagsResource", { enumerable: true, get: function () { return index_js_2.TagsResource; } }); var command_generator_js_1 = require("./commands/command-generator.js"); Object.defineProperty(exports, "CommandGenerator", { enumerable: true, get: function () { return command_generator_js_1.CommandGenerator; } }); var mcp_commands_js_1 = require("./commands/mcp-commands.js"); Object.defineProperty(exports, "MCPCommandRegistry", { enumerable: true, get: function () { return mcp_commands_js_1.MCPCommandRegistry; } }); var executable_methods_js_1 = require("./commands/executable-methods.js"); Object.defineProperty(exports, "ExecutableMethodGenerator", { enumerable: true, get: function () { return executable_methods_js_1.ExecutableMethodGenerator; } }); var error_handler_js_1 = require("./error/error-handler.js"); Object.defineProperty(exports, "BookStackError", { enumerable: true, get: function () { return error_handler_js_1.BookStackError; } }); Object.defineProperty(exports, "BookStackErrorType", { enumerable: true, get: function () { return error_handler_js_1.BookStackErrorType; } }); Object.defineProperty(exports, "ErrorHandler", { enumerable: true, get: function () { return error_handler_js_1.ErrorHandler; } }); var cache_manager_js_1 = require("./cache/cache-manager.js"); Object.defineProperty(exports, "CacheManager", { enumerable: true, get: function () { return cache_manager_js_1.CacheManager; } }); Object.defineProperty(exports, "BookStackCache", { enumerable: true, get: function () { return cache_manager_js_1.BookStackCache; } }); var api_parser_js_1 = require("./utils/api-parser.js"); Object.defineProperty(exports, "BookStackApiParser", { enumerable: true, get: function () { return api_parser_js_1.BookStackApiParser; } }); const config_js_2 = require("./auth/config.js"); const index_js_3 = require("./resources/index.js"); const mcp_commands_js_2 = require("./commands/mcp-commands.js"); const error_handler_js_2 = require("./error/error-handler.js"); const cache_manager_js_2 = require("./cache/cache-manager.js"); class BookStackN8nTool { constructor(config) { config_js_2.BookStackConfigValidator.validate(config); this.config = config; this.resourceManager = new index_js_3.ResourceManager(config); this.cache = new cache_manager_js_2.BookStackCache(); mcp_commands_js_2.MCPCommandRegistry.initialize(); } async execCommand(commandName, params = {}) { try { const cacheKey = `command:${commandName}:${JSON.stringify(params)}`; if (['list', 'get'].some(op => commandName.toLowerCase().includes(op))) { const cached = this.cache.get(cacheKey); if (cached) { return cached; } } const result = await this.resourceManager.executeCommand(commandName, params); if (['list', 'get'].some(op => commandName.toLowerCase().includes(op))) { this.cache.set(cacheKey, result); } if (['create', 'update', 'delete'].some(op => commandName.toLowerCase().includes(op))) { this.invalidateRelatedCache(commandName); } return result; } catch (error) { if (error.name === 'ZodError') { throw error_handler_js_2.ErrorHandler.handleValidationError(error); } else { throw error_handler_js_2.ErrorHandler.handleApiError(error); } } } getAvailableCommands() { return mcp_commands_js_2.MCPCommandRegistry.getCommands(); } getCommandMetadata() { return mcp_commands_js_2.MCPCommandRegistry.getCommandMetadata(); } async testConnection() { try { const client = this.resourceManager.getBooks(); await client.listBooks({ count: 1 }); return true; } catch (error) { console.error('Connection test failed:', error); return false; } } getCacheStats() { return this.cache.getStats(); } clearCache() { this.cache.clear(); } invalidateRelatedCache(commandName) { const resource = this.extractResourceFromCommand(commandName); if (resource) { this.cache.invalidateResource(resource); } } extractResourceFromCommand(commandName) { const patterns = [ { regex: /books?/i, resource: 'books' }, { regex: /chapters?/i, resource: 'chapters' }, { regex: /pages?/i, resource: 'pages' }, { regex: /shelves?/i, resource: 'shelves' }, { regex: /users?/i, resource: 'users' }, { regex: /roles?/i, resource: 'roles' }, { regex: /attachments?/i, resource: 'attachments' }, { regex: /tags?/i, resource: 'tags' } ]; for (const pattern of patterns) { if (pattern.regex.test(commandName)) { return pattern.resource; } } return null; } } exports.BookStackN8nTool = BookStackN8nTool; exports.default = BookStackN8nTool; //# sourceMappingURL=index.js.map