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,610 @@
1
+ "use strict";
2
+ /**
3
+ * N8nCIOrchestratorAgent
4
+ *
5
+ * CI/CD orchestration for n8n workflow testing:
6
+ * - Test suite execution
7
+ * - Pre-deployment validation
8
+ * - Environment promotion gates
9
+ * - Automated rollback triggers
10
+ * - Test report generation
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.N8nCIOrchestratorAgent = void 0;
14
+ const N8nBaseAgent_1 = require("./N8nBaseAgent");
15
+ // Quality gates configuration
16
+ const DEFAULT_GATES = {
17
+ 'test-pass-rate': { threshold: 95, type: 'quality' },
18
+ 'security-findings': { threshold: 0, type: 'security' },
19
+ 'p95-duration': { threshold: 5000, type: 'performance' },
20
+ 'validation-errors': { threshold: 0, type: 'quality' },
21
+ };
22
+ class N8nCIOrchestratorAgent extends N8nBaseAgent_1.N8nBaseAgent {
23
+ constructor(config) {
24
+ const capabilities = [
25
+ {
26
+ name: 'test-orchestration',
27
+ version: '1.0.0',
28
+ description: 'Orchestrate multi-type test suites',
29
+ parameters: {},
30
+ },
31
+ {
32
+ name: 'quality-gates',
33
+ version: '1.0.0',
34
+ description: 'Enforce deployment quality gates',
35
+ parameters: {},
36
+ },
37
+ {
38
+ name: 'environment-promotion',
39
+ version: '1.0.0',
40
+ description: 'Manage environment promotions',
41
+ parameters: {},
42
+ },
43
+ {
44
+ name: 'report-generation',
45
+ version: '1.0.0',
46
+ description: 'Generate CI/CD test reports',
47
+ parameters: {},
48
+ },
49
+ ];
50
+ super({
51
+ ...config,
52
+ type: 'n8n-ci-orchestrator',
53
+ capabilities: [...capabilities, ...(config.capabilities || [])],
54
+ });
55
+ this.testRunners = new Map();
56
+ }
57
+ async performTask(task) {
58
+ const ciTask = task;
59
+ if (ciTask.type !== 'ci-test') {
60
+ throw new Error(`Unsupported task type: ${ciTask.type}`);
61
+ }
62
+ return this.runCIPipeline(ciTask.target, ciTask.options);
63
+ }
64
+ /**
65
+ * Run complete CI pipeline
66
+ */
67
+ async runCIPipeline(workflowId, options) {
68
+ const runId = `ci-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
69
+ const startTime = new Date();
70
+ const environment = options?.environment || 'development';
71
+ const testTypes = options?.testTypes || ['validation', 'security'];
72
+ const actions = [];
73
+ const testResults = [];
74
+ // Log start
75
+ actions.push({
76
+ action: 'pipeline-start',
77
+ status: 'executed',
78
+ timestamp: new Date(),
79
+ details: `Starting CI pipeline for ${workflowId} in ${environment}`,
80
+ });
81
+ try {
82
+ // Get workflow
83
+ const workflow = await this.getWorkflow(workflowId);
84
+ // Run test suites
85
+ for (const testType of testTypes) {
86
+ const result = await this.runTestSuite(workflow, testType, options);
87
+ testResults.push(result);
88
+ // Fail fast if enabled
89
+ if (options?.failFast && result.status === 'failed') {
90
+ actions.push({
91
+ action: 'fail-fast-triggered',
92
+ status: 'executed',
93
+ timestamp: new Date(),
94
+ details: `Test suite ${testType} failed, stopping pipeline`,
95
+ });
96
+ break;
97
+ }
98
+ }
99
+ // Evaluate quality gates
100
+ const gates = this.evaluateGates(testResults);
101
+ // Calculate summary
102
+ const summary = this.calculateSummary(testResults);
103
+ // Determine overall status
104
+ const allGatesPassed = gates.every(g => g.passed);
105
+ const status = this.determineStatus(testResults, allGatesPassed);
106
+ // Execute post-test actions
107
+ if (status === 'passed' && options?.promoteOnPass) {
108
+ actions.push(await this.promoteEnvironment(workflowId, environment));
109
+ }
110
+ if (status === 'failed' && options?.rollbackOnFail) {
111
+ actions.push(await this.triggerRollback(workflowId, environment));
112
+ }
113
+ // Generate report
114
+ let report;
115
+ if (options?.generateReport) {
116
+ report = this.generateReport(runId, workflowId, testResults, summary, gates);
117
+ }
118
+ // Notify if configured
119
+ if (options?.notifyChannels) {
120
+ actions.push(await this.sendNotifications(options.notifyChannels, workflowId, status, summary));
121
+ }
122
+ const endTime = new Date();
123
+ const result = {
124
+ runId,
125
+ workflowId,
126
+ environment,
127
+ startTime,
128
+ endTime,
129
+ duration: endTime.getTime() - startTime.getTime(),
130
+ status,
131
+ testResults,
132
+ summary,
133
+ gates,
134
+ actions,
135
+ report,
136
+ };
137
+ // Store result
138
+ await this.storeTestResult(`ci-run:${runId}`, result);
139
+ // Emit event
140
+ this.emitEvent('ci.pipeline.completed', {
141
+ runId,
142
+ workflowId,
143
+ status,
144
+ duration: result.duration,
145
+ passRate: summary.passRate,
146
+ });
147
+ return result;
148
+ }
149
+ catch (error) {
150
+ const endTime = new Date();
151
+ actions.push({
152
+ action: 'pipeline-error',
153
+ status: 'failed',
154
+ timestamp: new Date(),
155
+ details: error instanceof Error ? error.message : String(error),
156
+ });
157
+ return {
158
+ runId,
159
+ workflowId,
160
+ environment,
161
+ startTime,
162
+ endTime,
163
+ duration: endTime.getTime() - startTime.getTime(),
164
+ status: 'error',
165
+ testResults,
166
+ summary: {
167
+ totalTests: 0,
168
+ passed: 0,
169
+ failed: 0,
170
+ errors: 1,
171
+ skipped: 0,
172
+ passRate: 0,
173
+ duration: 0,
174
+ critical: [{
175
+ type: 'pipeline-error',
176
+ severity: 'critical',
177
+ message: error instanceof Error ? error.message : String(error),
178
+ blocksDeployment: true,
179
+ }],
180
+ },
181
+ gates: [],
182
+ actions,
183
+ };
184
+ }
185
+ }
186
+ /**
187
+ * Run a specific test suite
188
+ */
189
+ async runTestSuite(workflow, testType, options) {
190
+ const startTime = Date.now();
191
+ try {
192
+ switch (testType) {
193
+ case 'validation':
194
+ return await this.runValidationSuite(workflow);
195
+ case 'security':
196
+ return await this.runSecuritySuite(workflow);
197
+ case 'performance':
198
+ return await this.runPerformanceSuite(workflow);
199
+ case 'integration':
200
+ return await this.runIntegrationSuite(workflow);
201
+ default:
202
+ return {
203
+ type: testType,
204
+ status: 'skipped',
205
+ duration: Date.now() - startTime,
206
+ testCount: 0,
207
+ passCount: 0,
208
+ failCount: 0,
209
+ errorCount: 0,
210
+ details: { reason: `Unknown test type: ${testType}` },
211
+ };
212
+ }
213
+ }
214
+ catch (error) {
215
+ return {
216
+ type: testType,
217
+ status: 'error',
218
+ duration: Date.now() - startTime,
219
+ testCount: 1,
220
+ passCount: 0,
221
+ failCount: 0,
222
+ errorCount: 1,
223
+ details: { error: error instanceof Error ? error.message : String(error) },
224
+ };
225
+ }
226
+ }
227
+ /**
228
+ * Run validation test suite
229
+ */
230
+ async runValidationSuite(workflow) {
231
+ const startTime = Date.now();
232
+ const validation = this.validateWorkflowStructure(workflow);
233
+ return {
234
+ type: 'validation',
235
+ status: validation.valid ? 'passed' : 'failed',
236
+ duration: Date.now() - startTime,
237
+ testCount: validation.issues.length + 1,
238
+ passCount: validation.valid ? validation.issues.length + 1 : 0,
239
+ failCount: validation.valid ? 0 : validation.issues.filter(i => i.severity === 'error').length,
240
+ errorCount: 0,
241
+ details: {
242
+ valid: validation.valid,
243
+ issues: validation.issues,
244
+ },
245
+ };
246
+ }
247
+ /**
248
+ * Run security test suite
249
+ */
250
+ async runSecuritySuite(workflow) {
251
+ const startTime = Date.now();
252
+ const findings = [];
253
+ // Check for hardcoded secrets
254
+ for (const node of workflow.nodes) {
255
+ const params = JSON.stringify(node.parameters);
256
+ if (/password|secret|api_?key|token/i.test(params)) {
257
+ const matches = params.match(/(password|secret|api_?key|token)\s*[=:]\s*["'][^"']+["']/gi);
258
+ if (matches) {
259
+ findings.push({
260
+ severity: 'critical',
261
+ message: `Potential hardcoded secret in node ${node.name}`,
262
+ });
263
+ }
264
+ }
265
+ }
266
+ // Check for dangerous code
267
+ const codeNodes = workflow.nodes.filter(n => n.type === 'n8n-nodes-base.code');
268
+ for (const node of codeNodes) {
269
+ const code = node.parameters.jsCode;
270
+ if (code && /eval\s*\(|new\s+Function|exec\s*\(/i.test(code)) {
271
+ findings.push({
272
+ severity: 'high',
273
+ message: `Dangerous code pattern in node ${node.name}`,
274
+ });
275
+ }
276
+ }
277
+ const criticalCount = findings.filter(f => f.severity === 'critical').length;
278
+ const highCount = findings.filter(f => f.severity === 'high').length;
279
+ return {
280
+ type: 'security',
281
+ status: criticalCount > 0 ? 'failed' : (highCount > 0 ? 'failed' : 'passed'),
282
+ duration: Date.now() - startTime,
283
+ testCount: workflow.nodes.length,
284
+ passCount: workflow.nodes.length - findings.length,
285
+ failCount: findings.length,
286
+ errorCount: 0,
287
+ details: {
288
+ findings,
289
+ criticalCount,
290
+ highCount,
291
+ },
292
+ };
293
+ }
294
+ /**
295
+ * Run performance test suite
296
+ */
297
+ async runPerformanceSuite(workflow) {
298
+ const startTime = Date.now();
299
+ // Analyze workflow complexity
300
+ const complexity = this.analyzeComplexity(workflow);
301
+ const issues = [];
302
+ if (complexity.nodeCount > 50) {
303
+ issues.push('Workflow has more than 50 nodes - consider breaking into sub-workflows');
304
+ }
305
+ if (complexity.maxDepth > 10) {
306
+ issues.push('Workflow depth exceeds 10 levels - may cause performance issues');
307
+ }
308
+ if (complexity.httpRequestCount > 10) {
309
+ issues.push('More than 10 HTTP requests - consider batching or parallelization');
310
+ }
311
+ return {
312
+ type: 'performance',
313
+ status: issues.length === 0 ? 'passed' : 'failed',
314
+ duration: Date.now() - startTime,
315
+ testCount: 3,
316
+ passCount: 3 - issues.length,
317
+ failCount: issues.length,
318
+ errorCount: 0,
319
+ details: {
320
+ complexity,
321
+ issues,
322
+ },
323
+ };
324
+ }
325
+ /**
326
+ * Run integration test suite
327
+ */
328
+ async runIntegrationSuite(workflow) {
329
+ const startTime = Date.now();
330
+ const issues = [];
331
+ // Check for missing credentials
332
+ for (const node of workflow.nodes) {
333
+ if (this.requiresCredentials(node) && !node.credentials) {
334
+ issues.push(`Node ${node.name} requires credentials but none configured`);
335
+ }
336
+ }
337
+ // Check for broken connections
338
+ const nodeIds = new Set(workflow.nodes.map(n => n.id));
339
+ for (const conn of Object.values(workflow.connections)) {
340
+ for (const outputs of Object.values(conn)) {
341
+ for (const connections of outputs) {
342
+ for (const connection of connections) {
343
+ if (!nodeIds.has(connection.node)) {
344
+ issues.push(`Connection references non-existent node: ${connection.node}`);
345
+ }
346
+ }
347
+ }
348
+ }
349
+ }
350
+ return {
351
+ type: 'integration',
352
+ status: issues.length === 0 ? 'passed' : 'failed',
353
+ duration: Date.now() - startTime,
354
+ testCount: workflow.nodes.length + Object.keys(workflow.connections).length,
355
+ passCount: workflow.nodes.length + Object.keys(workflow.connections).length - issues.length,
356
+ failCount: issues.length,
357
+ errorCount: 0,
358
+ details: {
359
+ issues,
360
+ nodesChecked: workflow.nodes.length,
361
+ connectionsChecked: Object.keys(workflow.connections).length,
362
+ },
363
+ };
364
+ }
365
+ /**
366
+ * Check if node requires credentials
367
+ */
368
+ requiresCredentials(node) {
369
+ const credentialNodes = [
370
+ 'httpRequest', 'slack', 'github', 'postgres', 'mysql',
371
+ 'mongodb', 'redis', 'smtp', 'aws', 'googleSheets',
372
+ ];
373
+ return credentialNodes.some(n => node.type.toLowerCase().includes(n.toLowerCase()));
374
+ }
375
+ /**
376
+ * Analyze workflow complexity
377
+ */
378
+ analyzeComplexity(workflow) {
379
+ return {
380
+ nodeCount: workflow.nodes.length,
381
+ maxDepth: this.calculateMaxDepth(workflow),
382
+ httpRequestCount: workflow.nodes.filter(n => n.type.includes('httpRequest')).length,
383
+ codeNodeCount: workflow.nodes.filter(n => n.type.includes('code')).length,
384
+ };
385
+ }
386
+ /**
387
+ * Calculate max workflow depth
388
+ */
389
+ calculateMaxDepth(workflow) {
390
+ const nodeMap = new Map(workflow.nodes.map(n => [n.id, n]));
391
+ const depths = new Map();
392
+ const calculateDepth = (nodeId, visited = new Set()) => {
393
+ if (visited.has(nodeId))
394
+ return 0;
395
+ if (depths.has(nodeId))
396
+ return depths.get(nodeId);
397
+ visited.add(nodeId);
398
+ let maxChildDepth = 0;
399
+ const nodeConnections = workflow.connections[nodeId];
400
+ if (nodeConnections) {
401
+ for (const outputs of Object.values(nodeConnections)) {
402
+ for (const connections of outputs) {
403
+ for (const conn of connections) {
404
+ const childDepth = calculateDepth(conn.node, new Set(visited));
405
+ maxChildDepth = Math.max(maxChildDepth, childDepth);
406
+ }
407
+ }
408
+ }
409
+ }
410
+ const depth = maxChildDepth + 1;
411
+ depths.set(nodeId, depth);
412
+ return depth;
413
+ };
414
+ let maxDepth = 0;
415
+ for (const node of workflow.nodes) {
416
+ maxDepth = Math.max(maxDepth, calculateDepth(node.id));
417
+ }
418
+ return maxDepth;
419
+ }
420
+ /**
421
+ * Evaluate quality gates
422
+ */
423
+ evaluateGates(testResults) {
424
+ const gates = [];
425
+ // Test pass rate gate
426
+ const totalTests = testResults.reduce((sum, r) => sum + r.testCount, 0);
427
+ const passedTests = testResults.reduce((sum, r) => sum + r.passCount, 0);
428
+ const passRate = totalTests > 0 ? (passedTests / totalTests) * 100 : 0;
429
+ gates.push({
430
+ name: 'Test Pass Rate',
431
+ type: 'quality',
432
+ passed: passRate >= DEFAULT_GATES['test-pass-rate'].threshold,
433
+ threshold: DEFAULT_GATES['test-pass-rate'].threshold,
434
+ actual: passRate,
435
+ message: passRate >= DEFAULT_GATES['test-pass-rate'].threshold
436
+ ? `Pass rate ${passRate.toFixed(1)}% meets threshold`
437
+ : `Pass rate ${passRate.toFixed(1)}% below ${DEFAULT_GATES['test-pass-rate'].threshold}% threshold`,
438
+ });
439
+ // Security findings gate
440
+ const securityResult = testResults.find(r => r.type === 'security');
441
+ if (securityResult) {
442
+ const criticalFindings = securityResult.details.criticalCount || 0;
443
+ gates.push({
444
+ name: 'Security Findings',
445
+ type: 'security',
446
+ passed: criticalFindings === 0,
447
+ threshold: 0,
448
+ actual: criticalFindings,
449
+ message: criticalFindings === 0
450
+ ? 'No critical security findings'
451
+ : `${criticalFindings} critical security findings detected`,
452
+ });
453
+ }
454
+ // Validation errors gate
455
+ const validationResult = testResults.find(r => r.type === 'validation');
456
+ if (validationResult) {
457
+ gates.push({
458
+ name: 'Validation Errors',
459
+ type: 'quality',
460
+ passed: validationResult.status === 'passed',
461
+ message: validationResult.status === 'passed'
462
+ ? 'Workflow validation passed'
463
+ : 'Workflow has validation errors',
464
+ });
465
+ }
466
+ return gates;
467
+ }
468
+ /**
469
+ * Calculate summary
470
+ */
471
+ calculateSummary(testResults) {
472
+ const totalTests = testResults.reduce((sum, r) => sum + r.testCount, 0);
473
+ const passed = testResults.reduce((sum, r) => sum + r.passCount, 0);
474
+ const failed = testResults.reduce((sum, r) => sum + r.failCount, 0);
475
+ const errors = testResults.reduce((sum, r) => sum + r.errorCount, 0);
476
+ const skipped = testResults.filter(r => r.status === 'skipped').length;
477
+ const duration = testResults.reduce((sum, r) => sum + r.duration, 0);
478
+ const critical = [];
479
+ // Collect critical issues
480
+ for (const result of testResults) {
481
+ if (result.status === 'failed' && result.type === 'security') {
482
+ const findings = result.details.findings;
483
+ for (const finding of findings.filter(f => f.severity === 'critical')) {
484
+ critical.push({
485
+ type: 'security',
486
+ severity: 'critical',
487
+ message: finding.message,
488
+ blocksDeployment: true,
489
+ });
490
+ }
491
+ }
492
+ }
493
+ return {
494
+ totalTests,
495
+ passed,
496
+ failed,
497
+ errors,
498
+ skipped,
499
+ passRate: totalTests > 0 ? (passed / totalTests) * 100 : 0,
500
+ duration,
501
+ critical,
502
+ };
503
+ }
504
+ /**
505
+ * Determine overall status
506
+ */
507
+ determineStatus(testResults, allGatesPassed) {
508
+ if (testResults.some(r => r.status === 'error')) {
509
+ return 'error';
510
+ }
511
+ if (!allGatesPassed || testResults.some(r => r.status === 'failed')) {
512
+ return 'failed';
513
+ }
514
+ if (testResults.every(r => r.status === 'skipped')) {
515
+ return 'skipped';
516
+ }
517
+ return 'passed';
518
+ }
519
+ /**
520
+ * Promote to next environment
521
+ */
522
+ async promoteEnvironment(workflowId, currentEnv) {
523
+ const nextEnv = currentEnv === 'development' ? 'staging' : 'production';
524
+ // In a real implementation, this would trigger deployment
525
+ return {
526
+ action: 'environment-promotion',
527
+ status: 'executed',
528
+ timestamp: new Date(),
529
+ details: `Promoting ${workflowId} from ${currentEnv} to ${nextEnv}`,
530
+ };
531
+ }
532
+ /**
533
+ * Trigger rollback
534
+ */
535
+ async triggerRollback(workflowId, environment) {
536
+ // In a real implementation, this would trigger rollback
537
+ return {
538
+ action: 'rollback',
539
+ status: 'executed',
540
+ timestamp: new Date(),
541
+ details: `Rolling back ${workflowId} in ${environment}`,
542
+ };
543
+ }
544
+ /**
545
+ * Send notifications
546
+ */
547
+ async sendNotifications(channels, workflowId, status, summary) {
548
+ // In a real implementation, this would send to Slack, email, etc.
549
+ return {
550
+ action: 'notification',
551
+ status: 'executed',
552
+ timestamp: new Date(),
553
+ details: `Notified ${channels.join(', ')} about ${workflowId} status: ${status}`,
554
+ };
555
+ }
556
+ /**
557
+ * Generate CI report
558
+ */
559
+ generateReport(runId, workflowId, testResults, summary, gates) {
560
+ const markdown = `# CI Test Report
561
+
562
+ ## Run Information
563
+ - **Run ID**: ${runId}
564
+ - **Workflow**: ${workflowId}
565
+ - **Date**: ${new Date().toISOString()}
566
+
567
+ ## Summary
568
+ - **Total Tests**: ${summary.totalTests}
569
+ - **Passed**: ${summary.passed}
570
+ - **Failed**: ${summary.failed}
571
+ - **Pass Rate**: ${summary.passRate.toFixed(1)}%
572
+ - **Duration**: ${summary.duration}ms
573
+
574
+ ## Quality Gates
575
+ ${gates.map(g => `- ${g.passed ? '✅' : '❌'} **${g.name}**: ${g.message}`).join('\n')}
576
+
577
+ ## Test Results
578
+ ${testResults.map(r => `
579
+ ### ${r.type.charAt(0).toUpperCase() + r.type.slice(1)} Tests
580
+ - Status: ${r.status}
581
+ - Tests: ${r.testCount} (${r.passCount} passed, ${r.failCount} failed)
582
+ - Duration: ${r.duration}ms
583
+ `).join('\n')}
584
+
585
+ ${summary.critical.length > 0 ? `
586
+ ## Critical Issues
587
+ ${summary.critical.map(c => `- ⚠️ **${c.type}**: ${c.message}`).join('\n')}
588
+ ` : ''}
589
+ `;
590
+ return {
591
+ format: 'markdown',
592
+ content: markdown,
593
+ artifacts: [],
594
+ };
595
+ }
596
+ /**
597
+ * Run CI for all workflows
598
+ */
599
+ async runCIForAllWorkflows(options) {
600
+ const workflows = await this.n8nClient.listWorkflows();
601
+ const results = [];
602
+ for (const workflow of workflows) {
603
+ const result = await this.runCIPipeline(workflow.id, options);
604
+ results.push(result);
605
+ }
606
+ return results;
607
+ }
608
+ }
609
+ exports.N8nCIOrchestratorAgent = N8nCIOrchestratorAgent;
610
+ //# sourceMappingURL=N8nCIOrchestratorAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"N8nCIOrchestratorAgent.js","sourceRoot":"","sources":["../../../src/agents/n8n/N8nCIOrchestratorAgent.ts"],"names":[],"mappings":"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"}