n8n-bookstack-agent-tool
Version:
Comprehensive BookStack API integration tool for n8n AI Agent with MCP framework compatibility
126 lines • 7.61 kB
JavaScript
;
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