n8n-mcp 2.85.0 → 2.87.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +3 -3
  2. package/data/nodes.db +2 -2
  3. package/dist/community/community-node-fetcher.d.ts +8 -0
  4. package/dist/community/community-node-fetcher.d.ts.map +1 -1
  5. package/dist/community/community-node-fetcher.js +44 -1
  6. package/dist/community/community-node-fetcher.js.map +1 -1
  7. package/dist/community/community-node-service.d.ts.map +1 -1
  8. package/dist/community/community-node-service.js +8 -5
  9. package/dist/community/community-node-service.js.map +1 -1
  10. package/dist/community/documentation-batch-processor.d.ts.map +1 -1
  11. package/dist/community/documentation-batch-processor.js +13 -2
  12. package/dist/community/documentation-batch-processor.js.map +1 -1
  13. package/dist/community/npm-readme.d.ts +5 -0
  14. package/dist/community/npm-readme.d.ts.map +1 -0
  15. package/dist/community/npm-readme.js +99 -0
  16. package/dist/community/npm-readme.js.map +1 -0
  17. package/dist/constants/npm-readme.d.ts +2 -0
  18. package/dist/constants/npm-readme.d.ts.map +1 -0
  19. package/dist/constants/npm-readme.js +5 -0
  20. package/dist/constants/npm-readme.js.map +1 -0
  21. package/dist/database/node-repository.d.ts +4 -1
  22. package/dist/database/node-repository.d.ts.map +1 -1
  23. package/dist/database/node-repository.js +17 -10
  24. package/dist/database/node-repository.js.map +1 -1
  25. package/dist/mcp/handlers-n8n-manager.d.ts.map +1 -1
  26. package/dist/mcp/handlers-n8n-manager.js +29 -3
  27. package/dist/mcp/handlers-n8n-manager.js.map +1 -1
  28. package/dist/mcp/handlers-workflow-diff.d.ts.map +1 -1
  29. package/dist/mcp/handlers-workflow-diff.js +110 -9
  30. package/dist/mcp/handlers-workflow-diff.js.map +1 -1
  31. package/dist/mcp/server.d.ts +1 -0
  32. package/dist/mcp/server.d.ts.map +1 -1
  33. package/dist/mcp/server.js +12 -4
  34. package/dist/mcp/server.js.map +1 -1
  35. package/dist/mcp/tool-docs/workflow_management/n8n-autofix-workflow.d.ts.map +1 -1
  36. package/dist/mcp/tool-docs/workflow_management/n8n-autofix-workflow.js +2 -1
  37. package/dist/mcp/tool-docs/workflow_management/n8n-autofix-workflow.js.map +1 -1
  38. package/dist/mcp/tool-docs/workflow_management/n8n-update-full-workflow.d.ts.map +1 -1
  39. package/dist/mcp/tool-docs/workflow_management/n8n-update-full-workflow.js +2 -1
  40. package/dist/mcp/tool-docs/workflow_management/n8n-update-full-workflow.js.map +1 -1
  41. package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.d.ts.map +1 -1
  42. package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.js +2 -1
  43. package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.js.map +1 -1
  44. package/dist/mcp/tools-documentation.js +127 -230
  45. package/dist/mcp/tools-documentation.js.map +1 -1
  46. package/dist/mcp-tools-engine.d.ts +1 -1
  47. package/dist/mcp-tools-engine.d.ts.map +1 -1
  48. package/dist/mcp-tools-engine.js +1 -3
  49. package/dist/mcp-tools-engine.js.map +1 -1
  50. package/dist/services/config-validator.d.ts.map +1 -1
  51. package/dist/services/config-validator.js +8 -53
  52. package/dist/services/config-validator.js.map +1 -1
  53. package/dist/services/enhanced-config-validator.d.ts +1 -0
  54. package/dist/services/enhanced-config-validator.d.ts.map +1 -1
  55. package/dist/services/enhanced-config-validator.js +46 -6
  56. package/dist/services/enhanced-config-validator.js.map +1 -1
  57. package/dist/services/example-generator.d.ts.map +1 -1
  58. package/dist/services/example-generator.js +28 -29
  59. package/dist/services/example-generator.js.map +1 -1
  60. package/dist/services/expression-validator.d.ts +2 -0
  61. package/dist/services/expression-validator.d.ts.map +1 -1
  62. package/dist/services/expression-validator.js +27 -1
  63. package/dist/services/expression-validator.js.map +1 -1
  64. package/dist/services/mcp-exposure.d.ts.map +1 -1
  65. package/dist/services/mcp-exposure.js +43 -6
  66. package/dist/services/mcp-exposure.js.map +1 -1
  67. package/dist/services/n8n-api-client.d.ts +1 -4
  68. package/dist/services/n8n-api-client.d.ts.map +1 -1
  69. package/dist/services/n8n-api-client.js +0 -30
  70. package/dist/services/n8n-api-client.js.map +1 -1
  71. package/dist/services/n8n-validation.d.ts.map +1 -1
  72. package/dist/services/n8n-validation.js +28 -33
  73. package/dist/services/n8n-validation.js.map +1 -1
  74. package/dist/services/node-specific-validators.d.ts +22 -0
  75. package/dist/services/node-specific-validators.d.ts.map +1 -1
  76. package/dist/services/node-specific-validators.js +701 -88
  77. package/dist/services/node-specific-validators.js.map +1 -1
  78. package/dist/services/task-templates.d.ts.map +1 -1
  79. package/dist/services/task-templates.js +54 -49
  80. package/dist/services/task-templates.js.map +1 -1
  81. package/dist/services/workflow-validator.d.ts +1 -0
  82. package/dist/services/workflow-validator.d.ts.map +1 -1
  83. package/dist/services/workflow-validator.js +58 -63
  84. package/dist/services/workflow-validator.js.map +1 -1
  85. package/dist/services/workflow-versioning-service.d.ts +2 -0
  86. package/dist/services/workflow-versioning-service.d.ts.map +1 -1
  87. package/dist/services/workflow-versioning-service.js +14 -0
  88. package/dist/services/workflow-versioning-service.js.map +1 -1
  89. package/dist/types/n8n-api.d.ts +0 -40
  90. package/dist/types/n8n-api.d.ts.map +1 -1
  91. package/dist/utils/jmespath-checks.d.ts +16 -0
  92. package/dist/utils/jmespath-checks.d.ts.map +1 -0
  93. package/dist/utils/jmespath-checks.js +357 -0
  94. package/dist/utils/jmespath-checks.js.map +1 -0
  95. package/dist/utils/n8n-errors.d.ts.map +1 -1
  96. package/dist/utils/n8n-errors.js +9 -0
  97. package/dist/utils/n8n-errors.js.map +1 -1
  98. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"n8n-update-full-workflow.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-update-full-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,wBAAwB,EAAE,iBAyDtC,CAAC"}
1
+ {"version":3,"file":"n8n-update-full-workflow.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-update-full-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,wBAAwB,EAAE,iBA0DtC,CAAC"}
@@ -54,7 +54,8 @@ exports.n8nUpdateFullWorkflowDoc = {
54
54
  'Must include ALL nodes/connections',
55
55
  'Missing nodes will be deleted',
56
56
  'Can break active workflows',
57
- 'No partial updates - use update_partial instead'
57
+ 'No partial updates - use update_partial instead',
58
+ '**code: "PUBLISH_FORBIDDEN"** (n8n 2.39+): the API key or user may edit a published workflow but not publish it. n8n saves the change as a draft and returns 403 with the published version left unchanged (this tool does not roll back a full update). Retrying with the same credentials saves another draft without publishing - the API key needs the workflow:activate scope and the user needs workflow:publish permission on the workflow'
58
59
  ],
59
60
  relatedTools: ['n8n_get_workflow', 'n8n_update_partial_workflow', 'validate_workflow', 'n8n_create_workflow']
60
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"n8n-update-full-workflow.js","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-update-full-workflow.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAsB;IACzD,IAAI,EAAE,0BAA0B;IAChC,QAAQ,EAAE,qBAAqB;IAC/B,UAAU,EAAE;QACV,WAAW,EAAE,qHAAqH;QAClI,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC;QAC7C,OAAO,EAAE,4EAA4E;QACrF,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE;YACJ,2EAA2E;YAC3E,gCAAgC;YAChC,sCAAsC;YACtC,0BAA0B;SAC3B;KACF;IACD,IAAI,EAAE;QACJ,WAAW,EAAE,4QAA4Q;QACzR,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC5E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;YACrE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,oEAAoE,EAAE;YAC3G,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;YAC7G,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8DAA8D,EAAE;YACzG,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sMAAsM,EAAE;YAClP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uIAAuI,EAAE;SACjL;QACD,OAAO,EAAE,mJAAmJ;QAC5J,QAAQ,EAAE;YACR,qHAAqH;YACrH,uEAAuE;YACvE,qIAAqI;YACrI,+IAA+I;SAChJ;QACD,QAAQ,EAAE;YACR,8BAA8B;YAC9B,mBAAmB;YACnB,0BAA0B;YAC1B,+BAA+B;YAC/B,kBAAkB;SACnB;QACD,WAAW,EAAE,wHAAwH;QACrI,aAAa,EAAE;YACb,qEAAqE;YACrE,yCAAyC;YACzC,iDAAiD;YACjD,sCAAsC;YACtC,sCAAsC;SACvC;QACD,QAAQ,EAAE;YACR,iDAAiD;YACjD,oCAAoC;YACpC,+BAA+B;YAC/B,4BAA4B;YAC5B,iDAAiD;SAClD;QACD,YAAY,EAAE,CAAC,kBAAkB,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;KAC9G;CACF,CAAC"}
1
+ {"version":3,"file":"n8n-update-full-workflow.js","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-update-full-workflow.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAsB;IACzD,IAAI,EAAE,0BAA0B;IAChC,QAAQ,EAAE,qBAAqB;IAC/B,UAAU,EAAE;QACV,WAAW,EAAE,qHAAqH;QAClI,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC;QAC7C,OAAO,EAAE,4EAA4E;QACrF,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE;YACJ,2EAA2E;YAC3E,gCAAgC;YAChC,sCAAsC;YACtC,0BAA0B;SAC3B;KACF;IACD,IAAI,EAAE;QACJ,WAAW,EAAE,4QAA4Q;QACzR,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC5E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;YACrE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,oEAAoE,EAAE;YAC3G,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;YAC7G,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8DAA8D,EAAE;YACzG,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sMAAsM,EAAE;YAClP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uIAAuI,EAAE;SACjL;QACD,OAAO,EAAE,mJAAmJ;QAC5J,QAAQ,EAAE;YACR,qHAAqH;YACrH,uEAAuE;YACvE,qIAAqI;YACrI,+IAA+I;SAChJ;QACD,QAAQ,EAAE;YACR,8BAA8B;YAC9B,mBAAmB;YACnB,0BAA0B;YAC1B,+BAA+B;YAC/B,kBAAkB;SACnB;QACD,WAAW,EAAE,wHAAwH;QACrI,aAAa,EAAE;YACb,qEAAqE;YACrE,yCAAyC;YACzC,iDAAiD;YACjD,sCAAsC;YACtC,sCAAsC;SACvC;QACD,QAAQ,EAAE;YACR,iDAAiD;YACjD,oCAAoC;YACpC,+BAA+B;YAC/B,4BAA4B;YAC5B,iDAAiD;YACjD,mbAAmb;SACpb;QACD,YAAY,EAAE,CAAC,kBAAkB,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;KAC9G;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"n8n-update-partial-workflow.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,2BAA2B,EAAE,iBAwdzC,CAAC"}
1
+ {"version":3,"file":"n8n-update-partial-workflow.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,2BAA2B,EAAE,iBAydzC,CAAC"}
@@ -469,7 +469,8 @@ n8n_update_partial_workflow({
469
469
  'When properties are mutually exclusive (e.g., continueOnFail and onError), setting only the new property will fail - you must remove the old one with null',
470
470
  'Removing a required property may cause validation errors - check node documentation first',
471
471
  'Nested property removal with dot notation only removes the specific nested field, not the entire parent object',
472
- 'Array elements are addressed by index in bracket or dot form (e.g., "parameters.assignments.assignments[0].value" or "parameters.assignments.assignments.0.value") - out-of-range indices are rejected, so new elements cannot be appended this way'
472
+ 'Array elements are addressed by index in bracket or dot form (e.g., "parameters.assignments.assignments[0].value" or "parameters.assignments.assignments.0.value") - out-of-range indices are rejected, so new elements cannot be appended this way',
473
+ '**code: "PUBLISH_FORBIDDEN"** (n8n 2.39+): the API key or user may edit a published workflow but not publish it. n8n rejects the save with 403 and this tool decides what to do by content, not by n8n\'s reported version (2.39 does not bump versionId for name/settings-only changes): a rollback is attempted only when the content on the server no longer matches what was there before. There are five outcomes: (1) version and content both unchanged after the 403 - n8n reports a draft was saved, but nothing on the server shows it, so nothing is rolled back and the outcome is reported as unconfirmed: details.rollbackPerformed=false, details.draftVersionId names the draft n8n reported; (2) rolled back - a rollback was attempted and the draft now matches the content from before this update, details.rollbackPerformed=true, details.supersededDraftVersionId names the draft the restore replaced; (3) change retained - the rollback failed and a read-back confirms the attempted change is still there, details.rollbackPerformed=false, details.changeRetained=true, details.draftVersionId names the current draft; (4) restore incomplete - the rollback failed and the read-back matches neither the attempted change nor the prior content, details.rollbackPerformed=false, details.observedDraftVersionId names what was actually found; (5) unconfirmed (read-back failed) - the rollback failed and the read-back itself failed too, details.rollbackPerformed=false, details.attemptedDraftVersionId names the draft n8n first reported (which the rollback attempt may since have superseded - it is NOT necessarily current). Outcomes (1) and (5) are both reported as "unconfirmed" but are distinguishable: (1) never attempted a rollback at all (no second PUT), while (5) did attempt one and only the verification read-back failed. details.rollbackVerifiedAfterError is set only when outcome (2) was confirmed by a read-back after the rollback PUT itself errored (a rollback PUT that returns 200 is just as clean but won\'t set it). A folder move cannot be rolled back or reliably ruled out (parentFolderId is write-only) - when the request moved the workflow, details.folderMoveMayHavePersisted flags that uncertainty regardless of which of the five outcomes applies. Retrying with the same credentials will not publish - the API key needs the workflow:activate scope and the user needs workflow:publish permission on the workflow'
473
474
  ],
474
475
  relatedTools: ['n8n_update_full_workflow', 'n8n_get_workflow', 'validate_workflow', 'tools_documentation']
475
476
  }
@@ -1 +1 @@
1
- {"version":3,"file":"n8n-update-partial-workflow.js","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.ts"],"names":[],"mappings":";;;AAEa,QAAA,2BAA2B,GAAsB;IAC5D,IAAI,EAAE,6BAA6B;IACnC,QAAQ,EAAE,qBAAqB;IAC/B,UAAU,EAAE;QACV,WAAW,EAAE,+jBAA+jB;QAC5kB,aAAa,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,iBAAiB,CAAC;QACtD,OAAO,EAAE,6IAA6I;QACtJ,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE;YACJ,gJAAgJ;YAChJ,oGAAoG;YACpG,mDAAmD;YACnD,wCAAwC;YACxC,6BAA6B;YAC7B,6DAA6D;YAC7D,uDAAuD;YACvD,0DAA0D;YAC1D,kCAAkC;YAClC,iFAAiF;YACjF,mDAAmD;YACnD,gGAAgG;YAChG,sGAAsG;YACtG,yIAAyI;YACzI,0GAA0G;YAC1G,6LAA6L;YAC7L,oIAAoI;SACrI;KACF;IACD,IAAI,EAAE;QACJ,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA8SgB;QAC7B,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC5E,UAAU,EAAE;gBACV,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,iIAAiI;aAC/I;YACD,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yDAAyD,EAAE;YACzG,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6IAA6I,EAAE;YAChM,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qIAAqI,EAAE;SAC/K;QACD,OAAO,EAAE,uNAAuN;QAChO,QAAQ,EAAE;YACR,mOAAmO;YACnO,wNAAwN;YACxN,kTAAkT;YAClT,0VAA0V;YAC1V,gMAAgM;YAChM,mLAAmL;YACnL,mLAAmL;YACnL,6UAA6U;YAC7U,oMAAoM;YACpM,oYAAoY;YACpY,qJAAqJ;YACrJ,+MAA+M;YAC/M,kSAAkS;YAClS,0LAA0L;YAC1L,wJAAwJ;YACxJ,qTAAqT;YACrT,8WAA8W;YAC9W,8EAA8E;YAC9E,4QAA4Q;YAC5Q,yPAAyP;YACzP,8SAA8S;YAC9S,sQAAsQ;YACtQ,uDAAuD;YACvD,2MAA2M;YAC3M,wLAAwL;YACxL,+LAA+L;YAC/L,gNAAgN;YAChN,4hBAA4hB;YAC5hB,+WAA+W;YAC/W,qWAAqW;YACrW,uVAAuV;YACvV,qPAAqP;YACrP,0eAA0e;YAC1e,6DAA6D;YAC7D,+JAA+J;YAC/J,+NAA+N;YAC/N,gLAAgL;YAChL,oOAAoO;YACpO,gLAAgL;YAChL,0DAA0D;YAC1D,0KAA0K;YAC1K,+LAA+L;YAC/L,8JAA8J;YAC9J,iJAAiJ;SAClJ;QACD,QAAQ,EAAE;YACR,yCAAyC;YACzC,uDAAuD;YACvD,wDAAwD;YACxD,+CAA+C;YAC/C,+BAA+B;YAC/B,iCAAiC;YACjC,8CAA8C;YAC9C,sBAAsB;YACtB,2BAA2B;YAC3B,yBAAyB;YACzB,iEAAiE;YACjE,+CAA+C;YAC/C,2CAA2C;YAC3C,0CAA0C;YAC1C,+CAA+C;YAC/C,kCAAkC;YAClC,uDAAuD;YACvD,iFAAiF;YACjF,wFAAwF;YACxF,+DAA+D;SAChE;QACD,WAAW,EAAE,8FAA8F;QAC3G,aAAa,EAAE;YACb,kPAAkP;YAClP,iEAAiE;YACjE,+DAA+D;YAC/D,oDAAoD;YACpD,yDAAyD;YACzD,iDAAiD;YACjD,gEAAgE;YAChE,qDAAqD;YACrD,mCAAmC;YACnC,wCAAwC;YACxC,gDAAgD;YAChD,8FAA8F;YAC9F,2EAA2E;YAC3E,6DAA6D;YAC7D,oEAAoE;YACpE,8EAA8E;YAC9E,8DAA8D;YAC9D,8GAA8G;YAC9G,6EAA6E;YAC7E,kFAAkF;YAClF,8IAA8I;YAC9I,6FAA6F;YAC7F,0GAA0G;SAC3G;QACD,QAAQ,EAAE;YACR,uGAAuG;YACvG,wEAAwE;YACxE,6DAA6D;YAC7D,sFAAsF;YACtF,4DAA4D;YAC5D,yEAAyE;YACzE,yFAAyF;YACzF,wFAAwF;YACxF,mGAAmG;YACnG,iFAAiF;YACjF,iNAAiN;YACjN,kKAAkK;YAClK,4EAA4E;YAC5E,yFAAyF;YACzF,wLAAwL;YACxL,oIAAoI;YACpI,wJAAwJ;YACxJ,+JAA+J;YAC/J,6NAA6N;YAC7N,0HAA0H;YAC1H,wHAAwH;YACxH,gHAAgH;YAChH,wHAAwH;YACxH,sMAAsM;YACtM,qxBAAqxB;YACrxB,4DAA4D;YAC5D,4JAA4J;YAC5J,2FAA2F;YAC3F,gHAAgH;YAChH,qPAAqP;SACtP;QACD,YAAY,EAAE,CAAC,0BAA0B,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;KAC3G;CACF,CAAC"}
1
+ {"version":3,"file":"n8n-update-partial-workflow.js","sourceRoot":"","sources":["../../../../src/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.ts"],"names":[],"mappings":"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"}
@@ -316,7 +316,7 @@ const plus5Days = now.plus({ days: 5 });
316
316
  ### JSON Querying
317
317
  \`\`\`javascript
318
318
  // JMESPath queries
319
- const result = $jmespath($json, "users[?age > 30].name");
319
+ const result = $jmespath($json, "users[?age > \`30\`].name"); // numbers are backtick literals
320
320
  \`\`\`
321
321
 
322
322
  ## Return Format Requirements
@@ -439,262 +439,159 @@ function getPythonCodeNodeGuide(depth = 'essentials') {
439
439
  if (depth === 'essentials') {
440
440
  return `# Python Code Node Guide
441
441
 
442
- Essential patterns for Python in n8n Code nodes.
442
+ n8n 2.x runs Python natively in a task runner: \`language: "pythonNative"\`.
443
+ JavaScript is recommended for most cases - every n8n helper is JS-only.
443
444
 
444
- **Key Concepts**:
445
- - Access all items: \`_input.all()\` (not items[0])
446
- - Current item data: \`_json\`
447
- - Return format: \`[{"json": {...}}]\` (list of dicts)
448
-
449
- **Limitations**:
450
- - No external libraries (no requests, pandas, numpy)
451
- - Use built-in functions only
452
- - No pip install available
453
-
454
- **Common Patterns**:
455
- \`\`\`python
456
- # Process all items
457
- all_items = _input.all()
458
- return [{
459
- "json": {
460
- "processed": True,
461
- "count": len(all_items),
462
- "first_item": all_items[0]["json"] if all_items else None
463
- }
464
- }]
465
- \`\`\`
466
-
467
- **Tips**:
468
- - Webhook data is under ["body"] key
469
- - Use json module for parsing
470
- - datetime for date handling
445
+ **Two variables, one per mode**:
446
+ - \`runOnceForAllItems\` (default): \`_items\`, a list of \`{"json": {...}}\` dicts
447
+ - \`runOnceForEachItem\`: \`_item\`, one such dict
448
+ - Dict access only. \`it.json.field\` raises AttributeError.
449
+ - \`_input\`, \`_json\`, \`_node\`, \`_now\`, \`_today\`, \`_jmespath\` are gone (NameError).
471
450
 
472
- For full guide: tools_documentation({topic: "python_code_node_guide", depth: "full"})`;
473
- }
474
- return `# Python Code Node Complete Guide
451
+ **Blocked**: every \`import\` unless this instance allowlists it (Cloud: none);
452
+ \`class\`; \`type\`/\`getattr\`/\`hasattr\`/\`setattr\`/\`vars\`/\`dir\`/\`globals\`/\`locals\`/
453
+ \`open\`/\`input\`/\`eval\`/\`exec\`; dunders; \`global\` inside a function (use \`nonlocal\`).
475
454
 
476
- Comprehensive guide for using Python in n8n Code nodes.
477
-
478
- ## Data Access Patterns
455
+ **Returns**: all items - list of \`{"json": ...}\`, list of plain dicts, or one
456
+ dict. Each item - a dict; \`None\` drops the item; a list errors.
479
457
 
480
- ### Accessing Input Data
481
458
  \`\`\`python
482
- # Get all items from previous node
483
- all_items = _input.all()
484
-
485
- # Get specific node's output (use _node)
486
- webhook_data = _node["Webhook"]["json"]
487
-
488
- # Current item in loop
489
- current_item = _json
490
-
491
- # First item only
492
- first_item = _input.first()["json"]
459
+ # runOnceForAllItems
460
+ return [{"json": {"name": it["json"]["name"]}} for it in _items if it["json"].get("active")]
493
461
  \`\`\`
494
462
 
495
- ### Webhook Data Structure
496
- **CRITICAL**: Webhook data is nested under ["body"]:
497
463
  \`\`\`python
498
- # WRONG - Won't work
499
- data = _json["name"]
500
-
501
- # CORRECT - Webhook data is under body
502
- data = _json["body"]["name"]
503
- \`\`\`
504
-
505
- ## Available Built-in Modules
506
-
507
- ### Standard Library Only
508
- \`\`\`python
509
- import json
510
- import datetime
511
- import base64
512
- import hashlib
513
- import urllib.parse
514
- import re
515
- import math
516
- import random
464
+ # runOnceForEachItem
465
+ row = _item["json"]
466
+ return {"json": {**row, "upper": (row.get("name") or "").upper()}}
517
467
  \`\`\`
518
468
 
519
- ### Date/Time Handling
520
- \`\`\`python
521
- from datetime import datetime, timedelta
522
-
523
- # Current time
524
- now = datetime.now()
525
- iso_format = now.isoformat()
526
-
527
- # Date arithmetic
528
- future = now + timedelta(days=5)
529
- formatted = now.strftime("%Y-%m-%d")
530
- \`\`\`
469
+ **Tips**: webhook payloads are under ["body"]; use \`.get(key, default)\`;
470
+ self-hosted Docker needs the \`n8nio/runners\` sidecar or every Python node
471
+ fails with "Python runner unavailable".
531
472
 
532
- ### JSON Operations
533
- \`\`\`python
534
- # Parse JSON string
535
- data = json.loads(json_string)
536
-
537
- # Convert to JSON
538
- json_output = json.dumps({"key": "value"})
539
- \`\`\`
540
-
541
- ## Return Format Requirements
542
-
543
- ### Correct Format
544
- \`\`\`python
545
- # MUST return list of dictionaries with "json" key
546
- return [{
547
- "json": {
548
- "result": "success",
549
- "data": processed_data
550
- }
551
- }]
552
-
553
- # Multiple items
554
- return [
555
- {"json": {"id": item["json"]["id"], "processed": True}}
556
- for item in all_items
557
- ]
558
- \`\`\`
559
-
560
- ### Binary Data
561
- \`\`\`python
562
- # Return with binary data
563
- import base64
564
-
565
- return [{
566
- "json": {"filename": "report.pdf"},
567
- "binary": {
568
- "data": base64.b64encode(pdf_content).decode()
569
- }
570
- }]
571
- \`\`\`
572
-
573
- ## Common Patterns
574
-
575
- ### Processing Webhook Data
576
- \`\`\`python
577
- # Extract webhook payload
578
- webhook_body = _json["body"]
579
- username = webhook_body.get("username")
580
- email = webhook_body.get("email")
581
- items = webhook_body.get("items", [])
582
-
583
- # Process and return
584
- return [{
585
- "json": {
586
- "username": username,
587
- "email": email,
588
- "item_count": len(items),
589
- "processed_at": datetime.now().isoformat()
473
+ For full guide: tools_documentation({topic: "python_code_node_guide", depth: "full"})`;
590
474
  }
591
- }]
592
- \`\`\`
593
-
594
- ### Aggregating Data
595
- \`\`\`python
596
- # Sum values across all items
597
- all_items = _input.all()
598
- total = sum(item["json"].get("amount", 0) for item in all_items)
475
+ return `# Python Code Node Complete Guide
599
476
 
600
- return [{
601
- "json": {
602
- "total": total,
603
- "item_count": len(all_items),
604
- "average": total / len(all_items) if all_items else 0
605
- }
606
- }]
607
- \`\`\`
477
+ Since n8n 2.0 the Code node runs native Python in a task runner
478
+ (\`language: "pythonNative"\`, typeVersion 2). The Pyodide "Python (Beta)"
479
+ runtime is gone, and with it every n8n helper. JavaScript is recommended for
480
+ most cases: \`$()\`, \`$jmespath\`, Luxon and \`$helpers\` exist only there.
481
+
482
+ ## The only inputs: _items and _item
483
+
484
+ | Mode | Variable | Shape |
485
+ |---|---|---|
486
+ | runOnceForAllItems (default) | \`_items\` | list of \`{"json": {...}, "pairedItem": {...}}\` dicts |
487
+ | runOnceForEachItem | \`_item\` | one such dict |
488
+
489
+ - Each exists **only in its own mode**; the other raises \`NameError\`.
490
+ - **Dict access only.** \`it["json"].get("name")\`, never \`it.json.name\`
491
+ (\`AttributeError: 'dict' object has no attribute 'json'\`).
492
+ - **No other nodes**: no \`_node\` / \`$('Node')\`. Merge upstream, or use JavaScript.
493
+ - **Webhook payloads** are under \`["body"]\`: \`_items[0]["json"].get("body", {})\`.
494
+ - **pairedItem**: returning \`_items\` / \`_item\` keeps it; when building new dicts
495
+ add \`"pairedItem": {"item": i}\` if a downstream node uses \`$('Node').item\`.
496
+ - Binary data: handle it in a JavaScript Code node.
497
+
498
+ ## Migration from Pyodide
499
+
500
+ | Legacy (removed) | Native |
501
+ |---|---|
502
+ | \`_input.all()\` | \`_items\` |
503
+ | \`_input.first()["json"]\` | \`_items[0]["json"]\` (guard \`if _items\`) |
504
+ | \`_input.item\` / \`_json\` | \`_item\` / \`_item["json"]\` |
505
+ | \`_node["X"]\` | not available: merge upstream, or use JavaScript |
506
+ | \`_now\`, \`_today\` | not available: pass \`{{ $now.toISO() }}\` in via Edit Fields |
507
+ | \`_jmespath(data, q)\` | not available: \`$jmespath\` in an expression, or a comprehension |
508
+ | \`item.json.field\` | \`item["json"]["field"]\` |
509
+
510
+ ## Imports: blocked by default
511
+
512
+ Every \`import\` - standard library included - is checked against an allowlist
513
+ before the code runs. The default allowlist is empty, so even \`import json\`
514
+ rejects the node with \`Security violations detected / Import of standard
515
+ library module 'json' is disallowed. Allowed stdlib modules: none\`.
516
+
517
+ - **n8n Cloud**: no imports at all. **Self-hosted**: an admin can allowlist
518
+ modules in the task-runner config; most instances don't.
519
+ - Default to import-free code; confirm with a one-line test node before relying
520
+ on an import. \`requests\`, \`pandas\` and \`numpy\` need a custom runner image
521
+ that ships and allowlists them, so assume they are unavailable.
522
+ - Instead: parse JSON upstream (\`{{ JSON.parse($json.payload) }}\`), do date math
523
+ in expressions, hash with the Crypto node. ISO-8601 strings sort as strings.
524
+
525
+ ## Sandbox limits (these fail even without imports)
526
+
527
+ | You write | What happens | Use instead |
528
+ |---|---|---|
529
+ | \`type\`, \`getattr\`, \`setattr\`, \`hasattr\`, \`vars\`, \`dir\`, \`globals\`, \`locals\`, \`open\`, \`input\`, \`eval\`, \`exec\`, \`compile\`, \`object\`, \`memoryview\`, \`breakpoint\` | \`NameError\` at runtime, whether called or merely named | \`isinstance(x, dict)\`; \`key in d\` / \`d.get(key)\` |
530
+ | \`class Foo: ...\` | \`__build_class__ not found\` | dicts + functions |
531
+ | \`x.__class__\`, \`__import__("json")\` | \`Security violations detected\` (before running) | - |
532
+ | \`global counter\` inside a function | \`NameError\` - your code already runs inside a wrapper function, so a nested \`global\` never binds (at top level it is a harmless no-op) | \`nonlocal counter\` |
533
+
534
+ Plain Python otherwise works: comprehensions, generators, lambdas, closures,
535
+ \`try\`/\`except\`, f-strings, \`sorted\`/\`sum\`/\`min\`/\`max\`/\`any\`/\`all\`/\`zip\`,
536
+ sets, \`isinstance\`, \`print()\` (output goes to the browser console).
537
+
538
+ ## Return shapes
539
+
540
+ **runOnceForAllItems**: \`[{"json": {...}}, ...]\` is canonical; a list of plain
541
+ dicts and a single dict are auto-wrapped; \`_items\` mutated in place passes
542
+ through; \`None\` or no \`return\` errors with
543
+ \`Cannot read properties of null (reading 'json')\`.
544
+
545
+ **runOnceForEachItem**: a dict (or \`_item\`) gives one item; \`None\` **drops** the
546
+ item; a **list** errors with \`A 'json' property isn't a dictionary [item 0]\`.
547
+
548
+ On output a \`tuple\` becomes a list, a \`set\` becomes the *string* \`"{1, 2}"\` and
549
+ a \`datetime\` becomes \`str(dt)\`, not ISO - convert explicitly.
550
+
551
+ ## Common patterns (import-free)
608
552
 
609
- ### Error Handling
610
553
  \`\`\`python
611
- try:
612
- # Process data
613
- webhook_data = _json["body"]
614
- result = process_data(webhook_data)
615
-
616
- return [{
617
- "json": {
618
- "success": True,
619
- "data": result
620
- }
621
- }]
622
- except Exception as e:
623
- return [{
624
- "json": {
625
- "success": False,
626
- "error": str(e)
627
- }
628
- }]
554
+ # Aggregate to one item (runOnceForAllItems)
555
+ total = sum(it["json"].get("amount", 0) for it in _items)
556
+ return {"json": {"total": total, "count": len(_items),
557
+ "average": total / len(_items) if _items else 0}}
629
558
  \`\`\`
630
559
 
631
- ### Data Transformation
632
560
  \`\`\`python
633
- # Transform all items
634
- all_items = _input.all()
635
- transformed = []
636
-
637
- for item in all_items:
638
- data = item["json"]
639
- transformed.append({
640
- "json": {
641
- "id": data.get("id"),
642
- "name": data.get("name", "").upper(),
643
- "timestamp": datetime.now().isoformat(),
644
- "valid": bool(data.get("email"))
645
- }
646
- })
647
-
648
- return transformed
561
+ # Drop an item (runOnceForEachItem) - returning None filters it out
562
+ row = _item["json"]
563
+ if not row.get("email"):
564
+ return None
565
+ return {"json": {**row, "email": row["email"].lower()}}
649
566
  \`\`\`
650
567
 
651
- ## Limitations & Workarounds
568
+ ## Self-hosted: the Python task runner
652
569
 
653
- ### No External Libraries
654
- \`\`\`python
655
- # CANNOT USE:
656
- # import requests # Not available
657
- # import pandas # Not available
658
- # import numpy # Not available
570
+ Self-hosted Docker needs the \`n8nio/runners\` sidecar. Without it every Python
571
+ Code node fails with \`Python runner unavailable: Python 3 is missing from this
572
+ system\` - an infrastructure problem, not a code problem.
659
573
 
660
- # WORKAROUND: Use JavaScript Code node for HTTP requests
661
- # Or use HTTP Request node before Code node
662
- \`\`\`
574
+ ## Errors and onError
663
575
 
664
- ### HTTP Requests Alternative
665
- Since Python requests library is not available, use:
666
- 1. JavaScript Code node with $helpers.httpRequest()
667
- 2. HTTP Request node before your Python Code node
668
- 3. Webhook node to receive data
576
+ \`raise ValueError("bad row")\` fails the node with that message, and routes to the
577
+ error output when the node sets \`onError: "continueErrorOutput"\`. But a **static
578
+ rejection** (blocked import, dunder access) and a
579
+ **bad return shape** mark the node failed while sending the **unchanged input
580
+ items to the success output**, so no error branch catches them. Prevent both and
581
+ confirm with a real test execution.
669
582
 
670
583
  ## Common Pitfalls
671
- 1. Trying to import external libraries (requests, pandas)
672
- 2. Using items[0] instead of _input.all()
673
- 3. Forgetting webhook data is under ["body"]
674
- 4. Returning dictionaries instead of [{"json": {...}}]
675
- 5. Not handling missing keys with .get()
584
+ 1. Copying Pyodide code that uses \`_input\`, \`_json\`, \`_node\`, \`_now\` or \`_jmespath\`
585
+ 2. Dot access (\`item.json.field\`) instead of \`item["json"]["field"]\`
586
+ 3. Assuming \`import json\` or \`import datetime\` works
587
+ 4. Using the wrong mode variable, or returning a list in runOnceForEachItem mode
588
+ 5. Forgetting webhook data is under ["body"]
676
589
 
677
590
  ## Best Practices
678
- 1. Always use .get() for dictionary access
679
- 2. Validate data before processing
680
- 3. Handle empty input arrays
681
- 4. Use list comprehensions for transformations
682
- 5. Return meaningful error messages
683
-
684
- ## Type Conversions
685
- \`\`\`python
686
- # String to number
687
- value = float(_json.get("amount", "0"))
688
-
689
- # Boolean conversion
690
- is_active = str(_json.get("active", "")).lower() == "true"
691
-
692
- # Safe JSON parsing
693
- try:
694
- data = json.loads(_json.get("json_string", "{}"))
695
- except json.JSONDecodeError:
696
- data = {}
697
- \`\`\`
591
+ 1. Confirm the mode before writing the first line
592
+ 2. Use \`.get()\` for every dictionary access and handle an empty \`_items\`
593
+ 3. Return the explicit \`{"json": ...}\` shape
594
+ 4. Run a real test execution - validation alone won't catch the passthrough traps
698
595
 
699
596
  ## Related Tools
700
597
  - get_node({nodeType: "nodes-base.code"}) - Get Code node configuration details
@@ -1 +1 @@
1
- {"version":3,"file":"tools-documentation.js","sourceRoot":"","sources":["../../src/mcp/tools-documentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools-documentation.js","sourceRoot":"","sources":["../../src/mcp/tools-documentation.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export declare class MCPEngine {
16
16
  common: import("./services/property-filter").SimplifiedProperty[];
17
17
  } | null>;
18
18
  getNodeDocumentation(args: any): Promise<any>;
19
- validateNodeOperation(args: any): Promise<import("./services/config-validator").ValidationResult | {
19
+ validateNodeOperation(args: any): Promise<import("./services/enhanced-config-validator").EnhancedValidationResult | {
20
20
  valid: boolean;
21
21
  errors: {
22
22
  type: string;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tools-engine.d.ts","sourceRoot":"","sources":["../src/mcp-tools-engine.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAK5D,OAAO,EAAqB,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE5F,qBAAa,SAAS;IAGR,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,iBAAiB,CAAoB;gBAEzB,UAAU,EAAE,cAAc;IAIxC,SAAS,CAAC,IAAI,GAAE,GAAQ;IAIxB,WAAW,CAAC,IAAI,EAAE,GAAG;IAIrB,WAAW,CAAC,IAAI,EAAE,GAAG;IAIrB,iBAAiB,CAAC,IAAI,EAAE,GAAG;;;;;;;;IAgB3B,oBAAoB,CAAC,IAAI,EAAE,GAAG;IAK9B,qBAAqB,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;IAqB/B,mBAAmB,CAAC,IAAI,EAAE,GAAG;;;;;;;IAmB7B,oBAAoB,CAAC,IAAI,EAAE,GAAG;IAI9B,WAAW,CAAC,IAAI,EAAE,GAAG;IAIrB,qBAAqB,CAAC,IAAI,EAAE,GAAG;;;;;IAU/B,gBAAgB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAGrE"}
1
+ {"version":3,"file":"mcp-tools-engine.d.ts","sourceRoot":"","sources":["../src/mcp-tools-engine.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAK5D,OAAO,EAAqB,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE5F,qBAAa,SAAS;IAGR,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,iBAAiB,CAAoB;gBAEzB,UAAU,EAAE,cAAc;IAIxC,SAAS,CAAC,IAAI,GAAE,GAAQ;IAIxB,WAAW,CAAC,IAAI,EAAE,GAAG;IAIrB,WAAW,CAAC,IAAI,EAAE,GAAG;IAIrB,iBAAiB,CAAC,IAAI,EAAE,GAAG;;;;;;;;IAgB3B,oBAAoB,CAAC,IAAI,EAAE,GAAG;IAK9B,qBAAqB,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;IA2B/B,mBAAmB,CAAC,IAAI,EAAE,GAAG;;;;;;;IAmB7B,oBAAoB,CAAC,IAAI,EAAE,GAAG;IAI9B,WAAW,CAAC,IAAI,EAAE,GAAG;IAIrB,qBAAqB,CAAC,IAAI,EAAE,GAAG;;;;;IAU/B,gBAAgB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAGrE"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MCPEngine = void 0;
4
4
  const property_filter_1 = require("./services/property-filter");
5
- const config_validator_1 = require("./services/config-validator");
6
5
  const enhanced_config_validator_1 = require("./services/enhanced-config-validator");
7
6
  const workflow_validator_1 = require("./services/workflow-validator");
8
7
  class MCPEngine {
@@ -49,8 +48,7 @@ class MCPEngine {
49
48
  hiddenProperties: []
50
49
  };
51
50
  }
52
- const userProvidedKeys = new Set(Object.keys(args.config || {}));
53
- return config_validator_1.ConfigValidator.validate(args.nodeType, args.config, node.properties || [], userProvidedKeys);
51
+ return enhanced_config_validator_1.EnhancedConfigValidator.validateWithMode(args.nodeType, args.config || {}, node.properties || [], args.mode ?? 'operation', args.profile ?? 'ai-friendly');
54
52
  }
55
53
  async validateNodeMinimal(args) {
56
54
  const node = await this.repository.getNodeByType(args.nodeType);
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tools-engine.js","sourceRoot":"","sources":["../src/mcp-tools-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-tools-engine.js","sourceRoot":"","sources":["../src/mcp-tools-engine.ts"],"names":[],"mappings":";;;AAKA,gEAA4D;AAG5D,oFAA+E;AAC/E,sEAA4F;AAE5F,MAAa,SAAS;IAGpB,YAAoB,UAA0B;QAA1B,eAAU,GAAV,UAAU,CAAgB;QAC5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,sCAAiB,CAAC,UAAU,EAAE,mDAAuB,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAY,EAAE;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAS;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAS;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAS;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAGvB,MAAM,UAAU,GAAG,gCAAc,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtF,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAS;QAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,OAAO,IAAI,EAAE,aAAa,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAAS;QAEnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;gBACzF,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,EAAE;gBACf,iBAAiB,EAAE,EAAE;gBACrB,gBAAgB,EAAE,EAAE;aACrB,CAAC;QACJ,CAAC;QAMD,OAAO,mDAAuB,CAAC,gBAAgB,CAC7C,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,IAAI,EAAE,EACjB,IAAI,CAAC,UAAU,IAAI,EAAE,EACrB,IAAI,CAAC,IAAI,IAAI,WAAW,EACxB,IAAI,CAAC,OAAO,IAAI,aAAa,CAC9B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAS;QAEjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC7D,CAAC;QAED,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,gCAAc,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;QAEnG,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,OAAO,EAAE,aAAa,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAS;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAS;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAAS;QACnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;QACvD,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,OAAO,CAAC,MAAM;YAC5B,UAAU,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC;SACxD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAS;QAC9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9E,CAAC;CACF;AA3GD,8BA2GC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-validator.d.ts","sourceRoot":"","sources":["../../src/services/config-validator.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,kBAAkB,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,GAAG,uBAAuB,GAAG,cAAc,CAAC;IACxH,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,gBAAgB,GAAG,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,eAAe,GAAG,eAAe,CAAC;IACvG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,eAAe;IAI1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAA4C;IAKjF,MAAM,CAAC,QAAQ,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,UAAU,EAAE,GAAG,EAAE,EACjB,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC7B,gBAAgB;IAsDnB,MAAM,CAAC,aAAa,CAClB,OAAO,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,UAAU,EAAE,GAAG,EAAE,CAAC;KACnB,CAAC,GACD,gBAAgB,EAAE;IASrB,OAAO,CAAC,MAAM,CAAC,uBAAuB;IA0CtC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAsBpC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAgDhC,OAAO,CAAC,MAAM,CAAC,YAAY;WAab,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IA2ChF,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAmKpC,OAAO,CAAC,MAAM,CAAC,6BAA6B;IA+B5C,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAoElC,OAAO,CAAC,MAAM,CAAC,eAAe;IAc9B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAoC/B,OAAO,CAAC,MAAM,CAAC,YAAY;IAyC3B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA4EhC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAmCpC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IA6BvC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IA4CvC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAgEnC,OAAO,CAAC,MAAM,CAAC,uBAAuB;CA6NvC"}
1
+ {"version":3,"file":"config-validator.d.ts","sourceRoot":"","sources":["../../src/services/config-validator.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,kBAAkB,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,GAAG,uBAAuB,GAAG,cAAc,CAAC;IACxH,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,gBAAgB,GAAG,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,eAAe,GAAG,eAAe,CAAC;IACvG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,eAAe;IAI1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAA4C;IAKjF,MAAM,CAAC,QAAQ,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,UAAU,EAAE,GAAG,EAAE,EACjB,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC7B,gBAAgB;IAsDnB,MAAM,CAAC,aAAa,CAClB,OAAO,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,UAAU,EAAE,GAAG,EAAE,CAAC;KACnB,CAAC,GACD,gBAAgB,EAAE;IASrB,OAAO,CAAC,MAAM,CAAC,uBAAuB;IA0CtC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAsBpC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAgDhC,OAAO,CAAC,MAAM,CAAC,YAAY;WAab,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IA2ChF,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAwKpC,OAAO,CAAC,MAAM,CAAC,6BAA6B;IA+B5C,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAoElC,OAAO,CAAC,MAAM,CAAC,eAAe;IAc9B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAoC/B,OAAO,CAAC,MAAM,CAAC,YAAY;IA+C3B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA4EhC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAmCpC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IA6BvC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IA4CvC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAgEnC,OAAO,CAAC,MAAM,CAAC,uBAAuB;CAuKvC"}