mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-03-29 13:43:08 +00:00
fix: correct operator names, connection types, and implement __patch_find_replace (#665, #659, #642) (#672)
Three critical fixes in n8n_update_partial_workflow: - **#665**: Replace incorrect `isNotEmpty`/`isEmpty` operator names with `notEmpty`/`empty` across validators, sanitizer, docs, and error messages. Add auto-correction in sanitizer. Unknown operators silently returned false in n8n's execution engine. - **#659**: Remap numeric `targetInput` values (e.g., "0") to "main" in addConnection. Relax sourceOutput remapping guard for redundant sourceOutput+sourceIndex combinations. Also resolves #653 (dangling connections caused by malformed type:"0" connections). - **#642**: Implement __patch_find_replace for surgical string edits in updateNode. Previously stored patch objects literally as jsCode, producing [object Object]. Now reads current value, applies find/replace sequentially, writes back the string. Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
committed by
GitHub
parent
de2abaf89d
commit
6be9ffa53e
@@ -1209,30 +1209,30 @@ export class EnhancedConfigValidator extends ConfigValidator {
|
||||
'empty', 'notEmpty', 'equals', 'notEquals',
|
||||
'contains', 'notContains', 'startsWith', 'notStartsWith',
|
||||
'endsWith', 'notEndsWith', 'regex', 'notRegex',
|
||||
'exists', 'notExists', 'isNotEmpty' // exists checks field presence, isNotEmpty alias for notEmpty
|
||||
'exists', 'notExists'
|
||||
],
|
||||
number: [
|
||||
'empty', 'notEmpty', 'equals', 'notEquals', 'gt', 'lt', 'gte', 'lte',
|
||||
'exists', 'notExists', 'isNotEmpty'
|
||||
'exists', 'notExists'
|
||||
],
|
||||
dateTime: [
|
||||
'empty', 'notEmpty', 'equals', 'notEquals', 'after', 'before', 'afterOrEquals', 'beforeOrEquals',
|
||||
'exists', 'notExists', 'isNotEmpty'
|
||||
'exists', 'notExists'
|
||||
],
|
||||
boolean: [
|
||||
'empty', 'notEmpty', 'true', 'false', 'equals', 'notEquals',
|
||||
'exists', 'notExists', 'isNotEmpty'
|
||||
'exists', 'notExists'
|
||||
],
|
||||
array: [
|
||||
'contains', 'notContains', 'lengthEquals', 'lengthNotEquals',
|
||||
'lengthGt', 'lengthLt', 'lengthGte', 'lengthLte', 'empty', 'notEmpty',
|
||||
'exists', 'notExists', 'isNotEmpty'
|
||||
'exists', 'notExists'
|
||||
],
|
||||
object: [
|
||||
'empty', 'notEmpty',
|
||||
'exists', 'notExists', 'isNotEmpty'
|
||||
'exists', 'notExists'
|
||||
],
|
||||
any: ['exists', 'notExists', 'isNotEmpty']
|
||||
any: ['exists', 'notExists']
|
||||
};
|
||||
|
||||
for (let i = 0; i < conditions.length; i++) {
|
||||
|
||||
Reference in New Issue
Block a user