agentic-qe 2.5.6 → 2.5.7

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 (134) hide show
  1. package/.claude/agents/n8n/n8n-base-agent.md +376 -0
  2. package/.claude/agents/n8n/n8n-bdd-scenario-tester.md +613 -0
  3. package/.claude/agents/n8n/n8n-chaos-tester.md +654 -0
  4. package/.claude/agents/n8n/n8n-ci-orchestrator.md +850 -0
  5. package/.claude/agents/n8n/n8n-compliance-validator.md +685 -0
  6. package/.claude/agents/n8n/n8n-expression-validator.md +560 -0
  7. package/.claude/agents/n8n/n8n-integration-test.md +602 -0
  8. package/.claude/agents/n8n/n8n-monitoring-validator.md +589 -0
  9. package/.claude/agents/n8n/n8n-node-validator.md +455 -0
  10. package/.claude/agents/n8n/n8n-performance-tester.md +630 -0
  11. package/.claude/agents/n8n/n8n-security-auditor.md +786 -0
  12. package/.claude/agents/n8n/n8n-trigger-test.md +500 -0
  13. package/.claude/agents/n8n/n8n-unit-tester.md +633 -0
  14. package/.claude/agents/n8n/n8n-version-comparator.md +567 -0
  15. package/.claude/agents/n8n/n8n-workflow-executor.md +392 -0
  16. package/.claude/skills/n8n-expression-testing/SKILL.md +434 -0
  17. package/.claude/skills/n8n-integration-testing-patterns/SKILL.md +540 -0
  18. package/.claude/skills/n8n-security-testing/SKILL.md +599 -0
  19. package/.claude/skills/n8n-trigger-testing-strategies/SKILL.md +541 -0
  20. package/.claude/skills/n8n-workflow-testing-fundamentals/SKILL.md +447 -0
  21. package/CHANGELOG.md +41 -0
  22. package/README.md +7 -4
  23. package/dist/agents/n8n/N8nAPIClient.d.ts +121 -0
  24. package/dist/agents/n8n/N8nAPIClient.d.ts.map +1 -0
  25. package/dist/agents/n8n/N8nAPIClient.js +367 -0
  26. package/dist/agents/n8n/N8nAPIClient.js.map +1 -0
  27. package/dist/agents/n8n/N8nAuditPersistence.d.ts +120 -0
  28. package/dist/agents/n8n/N8nAuditPersistence.d.ts.map +1 -0
  29. package/dist/agents/n8n/N8nAuditPersistence.js +473 -0
  30. package/dist/agents/n8n/N8nAuditPersistence.js.map +1 -0
  31. package/dist/agents/n8n/N8nBDDScenarioTesterAgent.d.ts +159 -0
  32. package/dist/agents/n8n/N8nBDDScenarioTesterAgent.d.ts.map +1 -0
  33. package/dist/agents/n8n/N8nBDDScenarioTesterAgent.js +697 -0
  34. package/dist/agents/n8n/N8nBDDScenarioTesterAgent.js.map +1 -0
  35. package/dist/agents/n8n/N8nBaseAgent.d.ts +126 -0
  36. package/dist/agents/n8n/N8nBaseAgent.d.ts.map +1 -0
  37. package/dist/agents/n8n/N8nBaseAgent.js +446 -0
  38. package/dist/agents/n8n/N8nBaseAgent.js.map +1 -0
  39. package/dist/agents/n8n/N8nCIOrchestratorAgent.d.ts +164 -0
  40. package/dist/agents/n8n/N8nCIOrchestratorAgent.d.ts.map +1 -0
  41. package/dist/agents/n8n/N8nCIOrchestratorAgent.js +610 -0
  42. package/dist/agents/n8n/N8nCIOrchestratorAgent.js.map +1 -0
  43. package/dist/agents/n8n/N8nChaosTesterAgent.d.ts +205 -0
  44. package/dist/agents/n8n/N8nChaosTesterAgent.d.ts.map +1 -0
  45. package/dist/agents/n8n/N8nChaosTesterAgent.js +729 -0
  46. package/dist/agents/n8n/N8nChaosTesterAgent.js.map +1 -0
  47. package/dist/agents/n8n/N8nComplianceValidatorAgent.d.ts +228 -0
  48. package/dist/agents/n8n/N8nComplianceValidatorAgent.d.ts.map +1 -0
  49. package/dist/agents/n8n/N8nComplianceValidatorAgent.js +986 -0
  50. package/dist/agents/n8n/N8nComplianceValidatorAgent.js.map +1 -0
  51. package/dist/agents/n8n/N8nContractTesterAgent.d.ts +213 -0
  52. package/dist/agents/n8n/N8nContractTesterAgent.d.ts.map +1 -0
  53. package/dist/agents/n8n/N8nContractTesterAgent.js +989 -0
  54. package/dist/agents/n8n/N8nContractTesterAgent.js.map +1 -0
  55. package/dist/agents/n8n/N8nExpressionValidatorAgent.d.ts +99 -0
  56. package/dist/agents/n8n/N8nExpressionValidatorAgent.d.ts.map +1 -0
  57. package/dist/agents/n8n/N8nExpressionValidatorAgent.js +632 -0
  58. package/dist/agents/n8n/N8nExpressionValidatorAgent.js.map +1 -0
  59. package/dist/agents/n8n/N8nFailureModeTesterAgent.d.ts +238 -0
  60. package/dist/agents/n8n/N8nFailureModeTesterAgent.d.ts.map +1 -0
  61. package/dist/agents/n8n/N8nFailureModeTesterAgent.js +956 -0
  62. package/dist/agents/n8n/N8nFailureModeTesterAgent.js.map +1 -0
  63. package/dist/agents/n8n/N8nIdempotencyTesterAgent.d.ts +242 -0
  64. package/dist/agents/n8n/N8nIdempotencyTesterAgent.d.ts.map +1 -0
  65. package/dist/agents/n8n/N8nIdempotencyTesterAgent.js +992 -0
  66. package/dist/agents/n8n/N8nIdempotencyTesterAgent.js.map +1 -0
  67. package/dist/agents/n8n/N8nIntegrationTestAgent.d.ts +104 -0
  68. package/dist/agents/n8n/N8nIntegrationTestAgent.d.ts.map +1 -0
  69. package/dist/agents/n8n/N8nIntegrationTestAgent.js +653 -0
  70. package/dist/agents/n8n/N8nIntegrationTestAgent.js.map +1 -0
  71. package/dist/agents/n8n/N8nMonitoringValidatorAgent.d.ts +210 -0
  72. package/dist/agents/n8n/N8nMonitoringValidatorAgent.d.ts.map +1 -0
  73. package/dist/agents/n8n/N8nMonitoringValidatorAgent.js +669 -0
  74. package/dist/agents/n8n/N8nMonitoringValidatorAgent.js.map +1 -0
  75. package/dist/agents/n8n/N8nNodeValidatorAgent.d.ts +142 -0
  76. package/dist/agents/n8n/N8nNodeValidatorAgent.d.ts.map +1 -0
  77. package/dist/agents/n8n/N8nNodeValidatorAgent.js +1090 -0
  78. package/dist/agents/n8n/N8nNodeValidatorAgent.js.map +1 -0
  79. package/dist/agents/n8n/N8nPerformanceTesterAgent.d.ts +198 -0
  80. package/dist/agents/n8n/N8nPerformanceTesterAgent.d.ts.map +1 -0
  81. package/dist/agents/n8n/N8nPerformanceTesterAgent.js +653 -0
  82. package/dist/agents/n8n/N8nPerformanceTesterAgent.js.map +1 -0
  83. package/dist/agents/n8n/N8nReplayabilityTesterAgent.d.ts +245 -0
  84. package/dist/agents/n8n/N8nReplayabilityTesterAgent.d.ts.map +1 -0
  85. package/dist/agents/n8n/N8nReplayabilityTesterAgent.js +952 -0
  86. package/dist/agents/n8n/N8nReplayabilityTesterAgent.js.map +1 -0
  87. package/dist/agents/n8n/N8nSecretsHygieneAuditorAgent.d.ts +325 -0
  88. package/dist/agents/n8n/N8nSecretsHygieneAuditorAgent.d.ts.map +1 -0
  89. package/dist/agents/n8n/N8nSecretsHygieneAuditorAgent.js +1187 -0
  90. package/dist/agents/n8n/N8nSecretsHygieneAuditorAgent.js.map +1 -0
  91. package/dist/agents/n8n/N8nSecurityAuditorAgent.d.ts +91 -0
  92. package/dist/agents/n8n/N8nSecurityAuditorAgent.d.ts.map +1 -0
  93. package/dist/agents/n8n/N8nSecurityAuditorAgent.js +825 -0
  94. package/dist/agents/n8n/N8nSecurityAuditorAgent.js.map +1 -0
  95. package/dist/agents/n8n/N8nTestHarness.d.ts +131 -0
  96. package/dist/agents/n8n/N8nTestHarness.d.ts.map +1 -0
  97. package/dist/agents/n8n/N8nTestHarness.js +456 -0
  98. package/dist/agents/n8n/N8nTestHarness.js.map +1 -0
  99. package/dist/agents/n8n/N8nTriggerTestAgent.d.ts +119 -0
  100. package/dist/agents/n8n/N8nTriggerTestAgent.d.ts.map +1 -0
  101. package/dist/agents/n8n/N8nTriggerTestAgent.js +652 -0
  102. package/dist/agents/n8n/N8nTriggerTestAgent.js.map +1 -0
  103. package/dist/agents/n8n/N8nUnitTesterAgent.d.ts +130 -0
  104. package/dist/agents/n8n/N8nUnitTesterAgent.d.ts.map +1 -0
  105. package/dist/agents/n8n/N8nUnitTesterAgent.js +522 -0
  106. package/dist/agents/n8n/N8nUnitTesterAgent.js.map +1 -0
  107. package/dist/agents/n8n/N8nVersionComparatorAgent.d.ts +201 -0
  108. package/dist/agents/n8n/N8nVersionComparatorAgent.d.ts.map +1 -0
  109. package/dist/agents/n8n/N8nVersionComparatorAgent.js +645 -0
  110. package/dist/agents/n8n/N8nVersionComparatorAgent.js.map +1 -0
  111. package/dist/agents/n8n/N8nWorkflowExecutorAgent.d.ts +120 -0
  112. package/dist/agents/n8n/N8nWorkflowExecutorAgent.d.ts.map +1 -0
  113. package/dist/agents/n8n/N8nWorkflowExecutorAgent.js +347 -0
  114. package/dist/agents/n8n/N8nWorkflowExecutorAgent.js.map +1 -0
  115. package/dist/agents/n8n/index.d.ts +119 -0
  116. package/dist/agents/n8n/index.d.ts.map +1 -0
  117. package/dist/agents/n8n/index.js +298 -0
  118. package/dist/agents/n8n/index.js.map +1 -0
  119. package/dist/agents/n8n/types.d.ts +486 -0
  120. package/dist/agents/n8n/types.d.ts.map +1 -0
  121. package/dist/agents/n8n/types.js +8 -0
  122. package/dist/agents/n8n/types.js.map +1 -0
  123. package/dist/cli/init/agents.d.ts.map +1 -1
  124. package/dist/cli/init/agents.js +29 -0
  125. package/dist/cli/init/agents.js.map +1 -1
  126. package/dist/cli/init/skills.d.ts.map +1 -1
  127. package/dist/cli/init/skills.js +7 -1
  128. package/dist/cli/init/skills.js.map +1 -1
  129. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  130. package/dist/mcp/server-instructions.d.ts +1 -1
  131. package/dist/mcp/server-instructions.js +1 -1
  132. package/docs/reference/agents.md +91 -2
  133. package/docs/reference/skills.md +97 -2
  134. package/package.json +2 -2
@@ -0,0 +1,645 @@
1
+ "use strict";
2
+ /**
3
+ * N8nVersionComparatorAgent
4
+ *
5
+ * Version comparison and compatibility testing:
6
+ * - Workflow version diff analysis
7
+ * - Breaking change detection
8
+ * - Migration path validation
9
+ * - Backward compatibility checks
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.N8nVersionComparatorAgent = void 0;
13
+ const N8nBaseAgent_1 = require("./N8nBaseAgent");
14
+ class N8nVersionComparatorAgent extends N8nBaseAgent_1.N8nBaseAgent {
15
+ constructor(config) {
16
+ const capabilities = [
17
+ {
18
+ name: 'diff-analysis',
19
+ version: '1.0.0',
20
+ description: 'Analyze differences between workflow versions',
21
+ parameters: {},
22
+ },
23
+ {
24
+ name: 'breaking-change-detection',
25
+ version: '1.0.0',
26
+ description: 'Detect breaking changes between versions',
27
+ parameters: {},
28
+ },
29
+ {
30
+ name: 'migration-planning',
31
+ version: '1.0.0',
32
+ description: 'Generate migration paths between versions',
33
+ parameters: {},
34
+ },
35
+ {
36
+ name: 'compatibility-checking',
37
+ version: '1.0.0',
38
+ description: 'Check version compatibility',
39
+ parameters: {},
40
+ },
41
+ ];
42
+ super({
43
+ ...config,
44
+ type: 'n8n-version-comparator',
45
+ capabilities: [...capabilities, ...(config.capabilities || [])],
46
+ });
47
+ this.workflowVersions = new Map();
48
+ }
49
+ async performTask(task) {
50
+ const compareTask = task;
51
+ if (compareTask.type !== 'version-compare') {
52
+ throw new Error(`Unsupported task type: ${compareTask.type}`);
53
+ }
54
+ return this.compareVersions(compareTask.target, compareTask.options);
55
+ }
56
+ /**
57
+ * Compare two workflow versions
58
+ */
59
+ async compareVersions(workflowId, options) {
60
+ const currentWorkflow = await this.getWorkflow(workflowId);
61
+ // Get comparison workflow
62
+ let compareWorkflow;
63
+ if (options?.compareWorkflow) {
64
+ compareWorkflow = options.compareWorkflow;
65
+ }
66
+ else if (options?.compareVersionId) {
67
+ compareWorkflow = await this.getWorkflow(options.compareVersionId);
68
+ }
69
+ else {
70
+ // Get previous version from history
71
+ compareWorkflow = this.getPreviousVersion(workflowId) || currentWorkflow;
72
+ }
73
+ // Calculate versions
74
+ const sourceVersion = this.extractVersion(compareWorkflow);
75
+ const targetVersion = this.extractVersion(currentWorkflow);
76
+ // Generate diff
77
+ const differences = this.generateDiff(compareWorkflow, currentWorkflow);
78
+ // Detect breaking changes
79
+ const breakingChanges = options?.analyzeBreakingChanges !== false
80
+ ? this.detectBreakingChanges(differences)
81
+ : [];
82
+ // Generate migration path
83
+ const migrationPath = options?.generateMigrationPath
84
+ ? this.generateMigrationPath(differences, breakingChanges)
85
+ : undefined;
86
+ // Check compatibility
87
+ const compatibility = options?.checkBackwardCompatibility !== false
88
+ ? this.checkCompatibility(differences, breakingChanges)
89
+ : this.getDefaultCompatibility();
90
+ // Generate recommendations
91
+ const recommendations = this.generateRecommendations(differences, breakingChanges, compatibility);
92
+ const result = {
93
+ workflowId,
94
+ sourceVersion,
95
+ targetVersion,
96
+ differences,
97
+ breakingChanges,
98
+ migrationPath,
99
+ compatibility,
100
+ recommendations,
101
+ };
102
+ // Store version for history
103
+ this.storeVersion(workflowId, currentWorkflow);
104
+ // Store result
105
+ await this.storeTestResult(`version-compare:${workflowId}`, result);
106
+ // Emit event
107
+ this.emitEvent('version.compare.completed', {
108
+ workflowId,
109
+ totalChanges: differences.summary.totalChanges,
110
+ breakingChanges: breakingChanges.length,
111
+ isCompatible: compatibility.isBackwardCompatible,
112
+ });
113
+ return result;
114
+ }
115
+ /**
116
+ * Extract version info from workflow
117
+ */
118
+ extractVersion(workflow) {
119
+ return {
120
+ id: workflow.id,
121
+ name: workflow.name,
122
+ createdAt: workflow.createdAt ? new Date(workflow.createdAt) : undefined,
123
+ updatedAt: workflow.updatedAt ? new Date(workflow.updatedAt) : undefined,
124
+ nodeCount: workflow.nodes.length,
125
+ connectionCount: Object.keys(workflow.connections).length,
126
+ hash: this.hashWorkflow(workflow),
127
+ };
128
+ }
129
+ /**
130
+ * Generate hash for workflow
131
+ */
132
+ hashWorkflow(workflow) {
133
+ const content = JSON.stringify({
134
+ nodes: workflow.nodes.map(n => ({
135
+ type: n.type,
136
+ name: n.name,
137
+ parameters: n.parameters,
138
+ })),
139
+ connections: workflow.connections,
140
+ });
141
+ // Simple hash function
142
+ let hash = 0;
143
+ for (let i = 0; i < content.length; i++) {
144
+ const char = content.charCodeAt(i);
145
+ hash = ((hash << 5) - hash) + char;
146
+ hash = hash & hash;
147
+ }
148
+ return Math.abs(hash).toString(16);
149
+ }
150
+ /**
151
+ * Generate diff between two workflows
152
+ */
153
+ generateDiff(source, target) {
154
+ const sourceNodeMap = new Map(source.nodes.map(n => [n.id, n]));
155
+ const targetNodeMap = new Map(target.nodes.map(n => [n.id, n]));
156
+ const nodesAdded = [];
157
+ const nodesRemoved = [];
158
+ const nodesModified = [];
159
+ // Find added and modified nodes
160
+ for (const [id, targetNode] of targetNodeMap) {
161
+ const sourceNode = sourceNodeMap.get(id);
162
+ if (!sourceNode) {
163
+ nodesAdded.push(targetNode);
164
+ }
165
+ else {
166
+ const changes = this.compareNodes(sourceNode, targetNode);
167
+ if (changes.length > 0) {
168
+ nodesModified.push({
169
+ nodeId: id,
170
+ nodeName: targetNode.name,
171
+ nodeType: targetNode.type,
172
+ changes,
173
+ severity: this.calculateModificationSeverity(changes),
174
+ });
175
+ }
176
+ }
177
+ }
178
+ // Find removed nodes
179
+ for (const [id, sourceNode] of sourceNodeMap) {
180
+ if (!targetNodeMap.has(id)) {
181
+ nodesRemoved.push(sourceNode);
182
+ }
183
+ }
184
+ // Compare connections
185
+ const connectionsAdded = this.findAddedConnections(source, target);
186
+ const connectionsRemoved = this.findRemovedConnections(source, target);
187
+ // Compare settings
188
+ const settingsChanged = this.compareSettings(source, target);
189
+ // Calculate summary
190
+ const totalChanges = nodesAdded.length + nodesRemoved.length +
191
+ nodesModified.length + connectionsAdded.length +
192
+ connectionsRemoved.length + settingsChanged.length;
193
+ let severity;
194
+ if (nodesRemoved.length > 0 || connectionsRemoved.length > 0) {
195
+ severity = 'major';
196
+ }
197
+ else if (nodesModified.some(m => m.severity === 'major')) {
198
+ severity = 'major';
199
+ }
200
+ else if (nodesAdded.length > 0 || nodesModified.length > 0) {
201
+ severity = 'moderate';
202
+ }
203
+ else if (settingsChanged.length > 0) {
204
+ severity = 'minor';
205
+ }
206
+ else {
207
+ severity = 'none';
208
+ }
209
+ return {
210
+ nodesAdded,
211
+ nodesRemoved,
212
+ nodesModified,
213
+ connectionsAdded,
214
+ connectionsRemoved,
215
+ settingsChanged,
216
+ summary: {
217
+ totalChanges,
218
+ addedCount: nodesAdded.length + connectionsAdded.length,
219
+ removedCount: nodesRemoved.length + connectionsRemoved.length,
220
+ modifiedCount: nodesModified.length + settingsChanged.length,
221
+ severity,
222
+ },
223
+ };
224
+ }
225
+ /**
226
+ * Compare two nodes
227
+ */
228
+ compareNodes(source, target) {
229
+ const changes = [];
230
+ // Compare type
231
+ if (source.type !== target.type) {
232
+ changes.push({
233
+ path: 'type',
234
+ oldValue: source.type,
235
+ newValue: target.type,
236
+ type: 'modified',
237
+ breaking: true,
238
+ });
239
+ }
240
+ // Compare name
241
+ if (source.name !== target.name) {
242
+ changes.push({
243
+ path: 'name',
244
+ oldValue: source.name,
245
+ newValue: target.name,
246
+ type: 'modified',
247
+ breaking: false,
248
+ });
249
+ }
250
+ // Compare parameters
251
+ this.compareObjects(source.parameters, target.parameters, 'parameters', changes);
252
+ // Compare credentials
253
+ if (JSON.stringify(source.credentials) !== JSON.stringify(target.credentials)) {
254
+ changes.push({
255
+ path: 'credentials',
256
+ oldValue: source.credentials,
257
+ newValue: target.credentials,
258
+ type: 'modified',
259
+ breaking: true,
260
+ });
261
+ }
262
+ return changes;
263
+ }
264
+ /**
265
+ * Compare objects recursively
266
+ */
267
+ compareObjects(source, target, basePath, changes) {
268
+ const sourceKeys = new Set(Object.keys(source || {}));
269
+ const targetKeys = new Set(Object.keys(target || {}));
270
+ // Check removed keys
271
+ for (const key of sourceKeys) {
272
+ if (!targetKeys.has(key)) {
273
+ changes.push({
274
+ path: `${basePath}.${key}`,
275
+ oldValue: source[key],
276
+ newValue: undefined,
277
+ type: 'removed',
278
+ breaking: true,
279
+ });
280
+ }
281
+ }
282
+ // Check added and modified keys
283
+ for (const key of targetKeys) {
284
+ const path = `${basePath}.${key}`;
285
+ if (!sourceKeys.has(key)) {
286
+ changes.push({
287
+ path,
288
+ oldValue: undefined,
289
+ newValue: target[key],
290
+ type: 'added',
291
+ breaking: false,
292
+ });
293
+ }
294
+ else if (JSON.stringify(source[key]) !== JSON.stringify(target[key])) {
295
+ changes.push({
296
+ path,
297
+ oldValue: source[key],
298
+ newValue: target[key],
299
+ type: 'modified',
300
+ breaking: this.isBreakingParameterChange(key),
301
+ });
302
+ }
303
+ }
304
+ }
305
+ /**
306
+ * Check if parameter change is breaking
307
+ */
308
+ isBreakingParameterChange(paramName) {
309
+ const breakingParams = [
310
+ 'operation', 'resource', 'method', 'url', 'authentication',
311
+ 'credentials', 'mode', 'table', 'database',
312
+ ];
313
+ return breakingParams.includes(paramName.toLowerCase());
314
+ }
315
+ /**
316
+ * Calculate modification severity
317
+ */
318
+ calculateModificationSeverity(changes) {
319
+ if (changes.some(c => c.breaking && c.type === 'removed')) {
320
+ return 'major';
321
+ }
322
+ if (changes.some(c => c.breaking)) {
323
+ return 'moderate';
324
+ }
325
+ return 'minor';
326
+ }
327
+ /**
328
+ * Find added connections
329
+ */
330
+ findAddedConnections(source, target) {
331
+ const changes = [];
332
+ const sourceConnStr = this.serializeConnections(source.connections);
333
+ for (const [fromNode, outputs] of Object.entries(target.connections)) {
334
+ for (const [outputType, connectionArrays] of Object.entries(outputs)) {
335
+ for (let outputIndex = 0; outputIndex < connectionArrays.length; outputIndex++) {
336
+ for (const conn of connectionArrays[outputIndex]) {
337
+ const connKey = `${fromNode}->${conn.node}:${outputIndex}:${conn.index}`;
338
+ if (!sourceConnStr.has(connKey)) {
339
+ changes.push({
340
+ fromNode,
341
+ toNode: conn.node,
342
+ outputIndex,
343
+ inputIndex: conn.index,
344
+ });
345
+ }
346
+ }
347
+ }
348
+ }
349
+ }
350
+ return changes;
351
+ }
352
+ /**
353
+ * Find removed connections
354
+ */
355
+ findRemovedConnections(source, target) {
356
+ const changes = [];
357
+ const targetConnStr = this.serializeConnections(target.connections);
358
+ for (const [fromNode, outputs] of Object.entries(source.connections)) {
359
+ for (const [outputType, connectionArrays] of Object.entries(outputs)) {
360
+ for (let outputIndex = 0; outputIndex < connectionArrays.length; outputIndex++) {
361
+ for (const conn of connectionArrays[outputIndex]) {
362
+ const connKey = `${fromNode}->${conn.node}:${outputIndex}:${conn.index}`;
363
+ if (!targetConnStr.has(connKey)) {
364
+ changes.push({
365
+ fromNode,
366
+ toNode: conn.node,
367
+ outputIndex,
368
+ inputIndex: conn.index,
369
+ });
370
+ }
371
+ }
372
+ }
373
+ }
374
+ }
375
+ return changes;
376
+ }
377
+ /**
378
+ * Serialize connections to set
379
+ */
380
+ serializeConnections(connections) {
381
+ const connSet = new Set();
382
+ for (const [fromNode, outputs] of Object.entries(connections)) {
383
+ for (const [outputType, connectionArrays] of Object.entries(outputs)) {
384
+ for (let outputIndex = 0; outputIndex < connectionArrays.length; outputIndex++) {
385
+ for (const conn of connectionArrays[outputIndex]) {
386
+ connSet.add(`${fromNode}->${conn.node}:${outputIndex}:${conn.index}`);
387
+ }
388
+ }
389
+ }
390
+ }
391
+ return connSet;
392
+ }
393
+ /**
394
+ * Compare settings
395
+ */
396
+ compareSettings(source, target) {
397
+ const changes = [];
398
+ const sourceSettings = source.settings || {};
399
+ const targetSettings = target.settings || {};
400
+ const allKeys = new Set([
401
+ ...Object.keys(sourceSettings),
402
+ ...Object.keys(targetSettings),
403
+ ]);
404
+ for (const key of allKeys) {
405
+ const oldVal = sourceSettings[key];
406
+ const newVal = targetSettings[key];
407
+ if (JSON.stringify(oldVal) !== JSON.stringify(newVal)) {
408
+ changes.push({
409
+ setting: key,
410
+ oldValue: oldVal,
411
+ newValue: newVal,
412
+ });
413
+ }
414
+ }
415
+ return changes;
416
+ }
417
+ /**
418
+ * Detect breaking changes
419
+ */
420
+ detectBreakingChanges(diff) {
421
+ const breakingChanges = [];
422
+ // Removed nodes are breaking
423
+ for (const node of diff.nodesRemoved) {
424
+ breakingChanges.push({
425
+ type: 'node-removed',
426
+ severity: 'error',
427
+ location: node.name,
428
+ description: `Node "${node.name}" (${node.type}) was removed`,
429
+ impact: 'Workflow execution will fail if this node was required',
430
+ remediation: 'Ensure all dependent nodes are updated or add replacement node',
431
+ });
432
+ }
433
+ // Broken connections
434
+ for (const conn of diff.connectionsRemoved) {
435
+ breakingChanges.push({
436
+ type: 'connection-broken',
437
+ severity: 'error',
438
+ location: `${conn.fromNode} -> ${conn.toNode}`,
439
+ description: `Connection from "${conn.fromNode}" to "${conn.toNode}" was removed`,
440
+ impact: 'Data flow between nodes is broken',
441
+ remediation: 'Re-establish connection or update dependent node logic',
442
+ });
443
+ }
444
+ // Breaking parameter changes
445
+ for (const mod of diff.nodesModified) {
446
+ const breakingParams = mod.changes.filter(c => c.breaking && (c.type === 'removed' || c.type === 'modified'));
447
+ for (const change of breakingParams) {
448
+ breakingChanges.push({
449
+ type: change.type === 'removed' ? 'parameter-removed' : 'type-changed',
450
+ severity: 'warning',
451
+ location: `${mod.nodeName}.${change.path}`,
452
+ description: `Parameter "${change.path}" was ${change.type}`,
453
+ impact: 'Node behavior may change unexpectedly',
454
+ remediation: 'Review and validate node configuration',
455
+ });
456
+ }
457
+ }
458
+ return breakingChanges;
459
+ }
460
+ /**
461
+ * Generate migration path
462
+ */
463
+ generateMigrationPath(diff, breakingChanges) {
464
+ const steps = [];
465
+ let order = 1;
466
+ // Handle removed nodes first
467
+ for (const node of diff.nodesRemoved) {
468
+ steps.push({
469
+ order: order++,
470
+ action: 'review-removal',
471
+ target: node.name,
472
+ details: `Review removal of node "${node.name}" and update dependent workflows`,
473
+ automated: false,
474
+ });
475
+ }
476
+ // Handle broken connections
477
+ for (const conn of diff.connectionsRemoved) {
478
+ steps.push({
479
+ order: order++,
480
+ action: 'fix-connection',
481
+ target: `${conn.fromNode} -> ${conn.toNode}`,
482
+ details: 'Re-establish connection or update data flow',
483
+ automated: false,
484
+ });
485
+ }
486
+ // Handle modified nodes
487
+ for (const mod of diff.nodesModified) {
488
+ const hasBreaking = mod.changes.some(c => c.breaking);
489
+ steps.push({
490
+ order: order++,
491
+ action: hasBreaking ? 'update-configuration' : 'validate-changes',
492
+ target: mod.nodeName,
493
+ details: `Review ${mod.changes.length} parameter changes`,
494
+ automated: !hasBreaking,
495
+ });
496
+ }
497
+ // Handle new nodes
498
+ for (const node of diff.nodesAdded) {
499
+ steps.push({
500
+ order: order++,
501
+ action: 'validate-new-node',
502
+ target: node.name,
503
+ details: `Validate new node "${node.name}" configuration`,
504
+ automated: true,
505
+ });
506
+ }
507
+ // Calculate effort
508
+ let effort;
509
+ if (breakingChanges.filter(c => c.severity === 'error').length > 3) {
510
+ effort = 'major';
511
+ }
512
+ else if (breakingChanges.length > 5) {
513
+ effort = 'significant';
514
+ }
515
+ else if (breakingChanges.length > 2) {
516
+ effort = 'moderate';
517
+ }
518
+ else if (breakingChanges.length > 0) {
519
+ effort = 'minor';
520
+ }
521
+ else {
522
+ effort = 'trivial';
523
+ }
524
+ return {
525
+ steps,
526
+ estimatedEffort: effort,
527
+ automated: steps.every(s => s.automated),
528
+ risks: breakingChanges.map(bc => bc.impact),
529
+ };
530
+ }
531
+ /**
532
+ * Check compatibility
533
+ */
534
+ checkCompatibility(diff, breakingChanges) {
535
+ const issues = [];
536
+ // Check backward compatibility (can old version handle new data?)
537
+ const hasRemovalsOrBreaking = diff.nodesRemoved.length > 0 ||
538
+ diff.connectionsRemoved.length > 0 ||
539
+ breakingChanges.some(bc => bc.severity === 'error');
540
+ // Check forward compatibility (can new version handle old data?)
541
+ const hasRequiredAdditions = diff.nodesModified.some(m => m.changes.some(c => c.type === 'added' && c.breaking));
542
+ // Generate issues
543
+ if (hasRemovalsOrBreaking) {
544
+ issues.push({
545
+ type: 'backward-incompatible',
546
+ severity: 'high',
547
+ description: 'Changes break backward compatibility',
548
+ affected: [
549
+ ...diff.nodesRemoved.map(n => n.name),
550
+ ...diff.connectionsRemoved.map(c => `${c.fromNode}->${c.toNode}`),
551
+ ],
552
+ });
553
+ }
554
+ if (hasRequiredAdditions) {
555
+ issues.push({
556
+ type: 'forward-incompatible',
557
+ severity: 'medium',
558
+ description: 'New required parameters may not work with old data',
559
+ affected: diff.nodesModified
560
+ .filter(m => m.changes.some(c => c.type === 'added' && c.breaking))
561
+ .map(m => m.nodeName),
562
+ });
563
+ }
564
+ // Calculate score
565
+ let score = 100;
566
+ for (const issue of issues) {
567
+ if (issue.severity === 'high')
568
+ score -= 30;
569
+ else if (issue.severity === 'medium')
570
+ score -= 15;
571
+ else
572
+ score -= 5;
573
+ }
574
+ return {
575
+ isBackwardCompatible: !hasRemovalsOrBreaking,
576
+ isForwardCompatible: !hasRequiredAdditions,
577
+ compatibilityScore: Math.max(0, score),
578
+ issues,
579
+ };
580
+ }
581
+ /**
582
+ * Get default compatibility report
583
+ */
584
+ getDefaultCompatibility() {
585
+ return {
586
+ isBackwardCompatible: true,
587
+ isForwardCompatible: true,
588
+ compatibilityScore: 100,
589
+ issues: [],
590
+ };
591
+ }
592
+ /**
593
+ * Generate recommendations
594
+ */
595
+ generateRecommendations(diff, breakingChanges, compatibility) {
596
+ const recommendations = [];
597
+ if (breakingChanges.length > 0) {
598
+ recommendations.push(`Review ${breakingChanges.length} breaking changes before deployment`);
599
+ }
600
+ if (!compatibility.isBackwardCompatible) {
601
+ recommendations.push('Consider versioning your workflow or providing migration scripts');
602
+ }
603
+ if (diff.nodesRemoved.length > 0) {
604
+ recommendations.push('Verify all consumers are updated before removing nodes');
605
+ }
606
+ if (diff.nodesAdded.length > 0) {
607
+ recommendations.push('Test new nodes thoroughly with production-like data');
608
+ }
609
+ if (compatibility.compatibilityScore < 70) {
610
+ recommendations.push('Consider a phased rollout due to significant compatibility concerns');
611
+ }
612
+ return recommendations;
613
+ }
614
+ /**
615
+ * Store workflow version
616
+ */
617
+ storeVersion(workflowId, workflow) {
618
+ const versions = this.workflowVersions.get(workflowId) || [];
619
+ versions.push({ ...workflow });
620
+ // Keep last 10 versions
621
+ if (versions.length > 10) {
622
+ versions.shift();
623
+ }
624
+ this.workflowVersions.set(workflowId, versions);
625
+ }
626
+ /**
627
+ * Get previous version
628
+ */
629
+ getPreviousVersion(workflowId) {
630
+ const versions = this.workflowVersions.get(workflowId);
631
+ if (versions && versions.length > 1) {
632
+ return versions[versions.length - 2];
633
+ }
634
+ return undefined;
635
+ }
636
+ /**
637
+ * Get version history
638
+ */
639
+ getVersionHistory(workflowId) {
640
+ const versions = this.workflowVersions.get(workflowId) || [];
641
+ return versions.map(v => this.extractVersion(v));
642
+ }
643
+ }
644
+ exports.N8nVersionComparatorAgent = N8nVersionComparatorAgent;
645
+ //# sourceMappingURL=N8nVersionComparatorAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"N8nVersionComparatorAgent.js","sourceRoot":"","sources":["../../../src/agents/n8n/N8nVersionComparatorAgent.ts"],"names":[],"mappings":"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"}