From 3cd683abc73e1529d9c9e2d6436919517e332573 Mon Sep 17 00:00:00 2001 From: czlonkowski <56956555+czlonkowski@users.noreply.github.com> Date: Sun, 6 Jul 2025 11:51:22 +0200 Subject: [PATCH] fix: webhook and 4 other nodes incorrectly marked as non-triggers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated trigger detection logic in both parsers to check if a node's group array includes 'trigger'. This fixes an issue where webhook, cron, interval, and emailReadImap nodes were not being identified as triggers despite having category='trigger'. Note: After pulling this change, run `npm run rebuild` to update your local database. Fixes #13 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/parsers/node-parser.ts | 8 ++++++++ src/parsers/simple-parser.ts | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/parsers/node-parser.ts b/src/parsers/node-parser.ts index 8bb0f6e..da28e58 100644 --- a/src/parsers/node-parser.ts +++ b/src/parsers/node-parser.ts @@ -107,6 +107,14 @@ export class NodeParser { } private detectTrigger(description: any): boolean { + // Primary check: group includes 'trigger' + if (description.group && Array.isArray(description.group)) { + if (description.group.includes('trigger')) { + return true; + } + } + + // Fallback checks for edge cases return description.polling === true || description.trigger === true || description.eventTrigger === true || diff --git a/src/parsers/simple-parser.ts b/src/parsers/simple-parser.ts index 123f473..31bc22d 100644 --- a/src/parsers/simple-parser.ts +++ b/src/parsers/simple-parser.ts @@ -79,7 +79,7 @@ export class SimpleParser { properties: description.properties || [], credentials: description.credentials || [], isAITool: description.usableAsTool === true, - isTrigger: description.polling === true || description.trigger === true, + isTrigger: this.detectTrigger(description), isWebhook: description.webhooks?.length > 0, operations: isDeclarative ? this.extractOperations(description.routing) : this.extractProgrammaticOperations(description), version: this.extractVersion(nodeClass), @@ -87,6 +87,21 @@ export class SimpleParser { }; } + private detectTrigger(description: any): boolean { + // Primary check: group includes 'trigger' + if (description.group && Array.isArray(description.group)) { + if (description.group.includes('trigger')) { + return true; + } + } + + // Fallback checks for edge cases + return description.polling === true || + description.trigger === true || + description.eventTrigger === true || + description.name?.toLowerCase().includes('trigger'); + } + private extractOperations(routing: any): any[] { // Simple extraction without complex logic const operations: any[] = [];