UNPKG

n8n

Version:

n8n Workflow Automation Tool

64 lines 2.87 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createGetSuggestedWorkflowNodesTool = void 0; const zod_1 = __importDefault(require("zod")); const mcp_constants_1 = require("../../mcp.constants"); const constants_1 = require("./constants"); const inputSchema = { categories: zod_1.default .array(zod_1.default.string()) .min(1) .describe('Workflow technique categories. Available: chatbot, notification, scheduling, data_transformation, data_persistence, data_extraction, document_processing, form_input, content_generation, triage, scraping_and_research'), }; const outputSchema = { suggestions: zod_1.default .string() .describe('Curated node recommendations with pattern hints and configuration guidance'), }; const createGetSuggestedWorkflowNodesTool = (user, nodeCatalogService, telemetry) => ({ name: constants_1.CODE_BUILDER_GET_SUGGESTED_NODES_TOOL.toolName, config: { description: 'Required workflow-planning step. Get curated node recommendations for workflow technique categories before searching for nodes or writing code. Returns recommended nodes with pattern hints and configuration guidance.', inputSchema, outputSchema, annotations: { title: constants_1.CODE_BUILDER_GET_SUGGESTED_NODES_TOOL.displayTitle, readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false, }, }, handler: async ({ categories }) => { const telemetryPayload = { user_id: user.id, tool_name: constants_1.CODE_BUILDER_GET_SUGGESTED_NODES_TOOL.toolName, parameters: { categories }, }; try { const result = await nodeCatalogService.getSuggestedNodes(categories); telemetryPayload.results = { success: true, data: { categoryCount: categories.length }, }; telemetry.track(mcp_constants_1.USER_CALLED_MCP_TOOL_EVENT, telemetryPayload); return { content: [{ type: 'text', text: result }], structuredContent: { suggestions: result }, }; } 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.createGetSuggestedWorkflowNodesTool = createGetSuggestedWorkflowNodesTool; //# sourceMappingURL=get-suggested-workflow-nodes.tool.js.map