UNPKG

n8n

Version:

n8n Workflow Automation Tool

68 lines 2.88 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSearchWorkflowNodesTool = void 0; const zod_1 = __importDefault(require("zod")); const mcp_constants_1 = require("../../mcp.constants"); const constants_1 = require("./constants"); const inputSchema = { queries: zod_1.default .array(zod_1.default.string()) .min(1) .describe('Search queries for n8n nodes — service names (e.g. "gmail", "slack"), trigger types (e.g. "schedule trigger", "webhook"), or utility nodes (e.g. "set", "if", "merge", "code")'), }; const outputSchema = { results: zod_1.default .string() .describe('Search results with matching node IDs, discriminators, and related nodes'), }; const createSearchWorkflowNodesTool = (user, nodeCatalogService, telemetry) => ({ name: constants_1.CODE_BUILDER_SEARCH_NODES_TOOL.toolName, config: { description: 'Search for n8n nodes by service name, trigger type, or utility function. Returns node IDs, discriminators (resource/operation/mode), and related nodes needed for get_workflow_node_types.', inputSchema, outputSchema, annotations: { title: constants_1.CODE_BUILDER_SEARCH_NODES_TOOL.displayTitle, readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false, }, }, handler: async ({ queries }) => { const telemetryPayload = { user_id: user.id, tool_name: constants_1.CODE_BUILDER_SEARCH_NODES_TOOL.toolName, parameters: { queries }, }; try { const { results, queriesWithNoResults } = await nodeCatalogService.searchNodes(queries); telemetryPayload.results = { success: true, data: { queryCount: queries.length, noResultQueryCount: queriesWithNoResults.length, queriesWithNoResults, }, }; telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload); return { content: [{ type: 'text', text: results }], structuredContent: { results }, }; } catch (error) { telemetryPayload.results = { success: false, error: error instanceof Error ? error.message : String(error), }; telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload); throw error; } }, }); exports.createSearchWorkflowNodesTool = createSearchWorkflowNodesTool; //# sourceMappingURL=search-workflow-nodes.tool.js.map