agentic-qe 2.5.6 → 2.5.8

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 (210) 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 +127 -0
  22. package/README.md +7 -4
  23. package/dist/agents/BaseAgent.d.ts +142 -0
  24. package/dist/agents/BaseAgent.d.ts.map +1 -1
  25. package/dist/agents/BaseAgent.js +372 -2
  26. package/dist/agents/BaseAgent.js.map +1 -1
  27. package/dist/agents/TestGeneratorAgent.d.ts +5 -0
  28. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  29. package/dist/agents/TestGeneratorAgent.js +38 -0
  30. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  31. package/dist/agents/index.d.ts +1 -1
  32. package/dist/agents/index.d.ts.map +1 -1
  33. package/dist/agents/index.js.map +1 -1
  34. package/dist/agents/n8n/N8nAPIClient.d.ts +121 -0
  35. package/dist/agents/n8n/N8nAPIClient.d.ts.map +1 -0
  36. package/dist/agents/n8n/N8nAPIClient.js +367 -0
  37. package/dist/agents/n8n/N8nAPIClient.js.map +1 -0
  38. package/dist/agents/n8n/N8nAuditPersistence.d.ts +120 -0
  39. package/dist/agents/n8n/N8nAuditPersistence.d.ts.map +1 -0
  40. package/dist/agents/n8n/N8nAuditPersistence.js +473 -0
  41. package/dist/agents/n8n/N8nAuditPersistence.js.map +1 -0
  42. package/dist/agents/n8n/N8nBDDScenarioTesterAgent.d.ts +159 -0
  43. package/dist/agents/n8n/N8nBDDScenarioTesterAgent.d.ts.map +1 -0
  44. package/dist/agents/n8n/N8nBDDScenarioTesterAgent.js +697 -0
  45. package/dist/agents/n8n/N8nBDDScenarioTesterAgent.js.map +1 -0
  46. package/dist/agents/n8n/N8nBaseAgent.d.ts +126 -0
  47. package/dist/agents/n8n/N8nBaseAgent.d.ts.map +1 -0
  48. package/dist/agents/n8n/N8nBaseAgent.js +446 -0
  49. package/dist/agents/n8n/N8nBaseAgent.js.map +1 -0
  50. package/dist/agents/n8n/N8nCIOrchestratorAgent.d.ts +164 -0
  51. package/dist/agents/n8n/N8nCIOrchestratorAgent.d.ts.map +1 -0
  52. package/dist/agents/n8n/N8nCIOrchestratorAgent.js +610 -0
  53. package/dist/agents/n8n/N8nCIOrchestratorAgent.js.map +1 -0
  54. package/dist/agents/n8n/N8nChaosTesterAgent.d.ts +205 -0
  55. package/dist/agents/n8n/N8nChaosTesterAgent.d.ts.map +1 -0
  56. package/dist/agents/n8n/N8nChaosTesterAgent.js +729 -0
  57. package/dist/agents/n8n/N8nChaosTesterAgent.js.map +1 -0
  58. package/dist/agents/n8n/N8nComplianceValidatorAgent.d.ts +228 -0
  59. package/dist/agents/n8n/N8nComplianceValidatorAgent.d.ts.map +1 -0
  60. package/dist/agents/n8n/N8nComplianceValidatorAgent.js +986 -0
  61. package/dist/agents/n8n/N8nComplianceValidatorAgent.js.map +1 -0
  62. package/dist/agents/n8n/N8nContractTesterAgent.d.ts +213 -0
  63. package/dist/agents/n8n/N8nContractTesterAgent.d.ts.map +1 -0
  64. package/dist/agents/n8n/N8nContractTesterAgent.js +989 -0
  65. package/dist/agents/n8n/N8nContractTesterAgent.js.map +1 -0
  66. package/dist/agents/n8n/N8nExpressionValidatorAgent.d.ts +99 -0
  67. package/dist/agents/n8n/N8nExpressionValidatorAgent.d.ts.map +1 -0
  68. package/dist/agents/n8n/N8nExpressionValidatorAgent.js +632 -0
  69. package/dist/agents/n8n/N8nExpressionValidatorAgent.js.map +1 -0
  70. package/dist/agents/n8n/N8nFailureModeTesterAgent.d.ts +238 -0
  71. package/dist/agents/n8n/N8nFailureModeTesterAgent.d.ts.map +1 -0
  72. package/dist/agents/n8n/N8nFailureModeTesterAgent.js +956 -0
  73. package/dist/agents/n8n/N8nFailureModeTesterAgent.js.map +1 -0
  74. package/dist/agents/n8n/N8nIdempotencyTesterAgent.d.ts +242 -0
  75. package/dist/agents/n8n/N8nIdempotencyTesterAgent.d.ts.map +1 -0
  76. package/dist/agents/n8n/N8nIdempotencyTesterAgent.js +992 -0
  77. package/dist/agents/n8n/N8nIdempotencyTesterAgent.js.map +1 -0
  78. package/dist/agents/n8n/N8nIntegrationTestAgent.d.ts +104 -0
  79. package/dist/agents/n8n/N8nIntegrationTestAgent.d.ts.map +1 -0
  80. package/dist/agents/n8n/N8nIntegrationTestAgent.js +653 -0
  81. package/dist/agents/n8n/N8nIntegrationTestAgent.js.map +1 -0
  82. package/dist/agents/n8n/N8nMonitoringValidatorAgent.d.ts +210 -0
  83. package/dist/agents/n8n/N8nMonitoringValidatorAgent.d.ts.map +1 -0
  84. package/dist/agents/n8n/N8nMonitoringValidatorAgent.js +669 -0
  85. package/dist/agents/n8n/N8nMonitoringValidatorAgent.js.map +1 -0
  86. package/dist/agents/n8n/N8nNodeValidatorAgent.d.ts +142 -0
  87. package/dist/agents/n8n/N8nNodeValidatorAgent.d.ts.map +1 -0
  88. package/dist/agents/n8n/N8nNodeValidatorAgent.js +1090 -0
  89. package/dist/agents/n8n/N8nNodeValidatorAgent.js.map +1 -0
  90. package/dist/agents/n8n/N8nPerformanceTesterAgent.d.ts +198 -0
  91. package/dist/agents/n8n/N8nPerformanceTesterAgent.d.ts.map +1 -0
  92. package/dist/agents/n8n/N8nPerformanceTesterAgent.js +653 -0
  93. package/dist/agents/n8n/N8nPerformanceTesterAgent.js.map +1 -0
  94. package/dist/agents/n8n/N8nReplayabilityTesterAgent.d.ts +245 -0
  95. package/dist/agents/n8n/N8nReplayabilityTesterAgent.d.ts.map +1 -0
  96. package/dist/agents/n8n/N8nReplayabilityTesterAgent.js +952 -0
  97. package/dist/agents/n8n/N8nReplayabilityTesterAgent.js.map +1 -0
  98. package/dist/agents/n8n/N8nSecretsHygieneAuditorAgent.d.ts +325 -0
  99. package/dist/agents/n8n/N8nSecretsHygieneAuditorAgent.d.ts.map +1 -0
  100. package/dist/agents/n8n/N8nSecretsHygieneAuditorAgent.js +1187 -0
  101. package/dist/agents/n8n/N8nSecretsHygieneAuditorAgent.js.map +1 -0
  102. package/dist/agents/n8n/N8nSecurityAuditorAgent.d.ts +91 -0
  103. package/dist/agents/n8n/N8nSecurityAuditorAgent.d.ts.map +1 -0
  104. package/dist/agents/n8n/N8nSecurityAuditorAgent.js +825 -0
  105. package/dist/agents/n8n/N8nSecurityAuditorAgent.js.map +1 -0
  106. package/dist/agents/n8n/N8nTestHarness.d.ts +131 -0
  107. package/dist/agents/n8n/N8nTestHarness.d.ts.map +1 -0
  108. package/dist/agents/n8n/N8nTestHarness.js +456 -0
  109. package/dist/agents/n8n/N8nTestHarness.js.map +1 -0
  110. package/dist/agents/n8n/N8nTriggerTestAgent.d.ts +119 -0
  111. package/dist/agents/n8n/N8nTriggerTestAgent.d.ts.map +1 -0
  112. package/dist/agents/n8n/N8nTriggerTestAgent.js +652 -0
  113. package/dist/agents/n8n/N8nTriggerTestAgent.js.map +1 -0
  114. package/dist/agents/n8n/N8nUnitTesterAgent.d.ts +130 -0
  115. package/dist/agents/n8n/N8nUnitTesterAgent.d.ts.map +1 -0
  116. package/dist/agents/n8n/N8nUnitTesterAgent.js +522 -0
  117. package/dist/agents/n8n/N8nUnitTesterAgent.js.map +1 -0
  118. package/dist/agents/n8n/N8nVersionComparatorAgent.d.ts +201 -0
  119. package/dist/agents/n8n/N8nVersionComparatorAgent.d.ts.map +1 -0
  120. package/dist/agents/n8n/N8nVersionComparatorAgent.js +645 -0
  121. package/dist/agents/n8n/N8nVersionComparatorAgent.js.map +1 -0
  122. package/dist/agents/n8n/N8nWorkflowExecutorAgent.d.ts +120 -0
  123. package/dist/agents/n8n/N8nWorkflowExecutorAgent.d.ts.map +1 -0
  124. package/dist/agents/n8n/N8nWorkflowExecutorAgent.js +347 -0
  125. package/dist/agents/n8n/N8nWorkflowExecutorAgent.js.map +1 -0
  126. package/dist/agents/n8n/index.d.ts +119 -0
  127. package/dist/agents/n8n/index.d.ts.map +1 -0
  128. package/dist/agents/n8n/index.js +298 -0
  129. package/dist/agents/n8n/index.js.map +1 -0
  130. package/dist/agents/n8n/types.d.ts +486 -0
  131. package/dist/agents/n8n/types.d.ts.map +1 -0
  132. package/dist/agents/n8n/types.js +8 -0
  133. package/dist/agents/n8n/types.js.map +1 -0
  134. package/dist/cli/init/agents.d.ts.map +1 -1
  135. package/dist/cli/init/agents.js +29 -0
  136. package/dist/cli/init/agents.js.map +1 -1
  137. package/dist/cli/init/skills.d.ts.map +1 -1
  138. package/dist/cli/init/skills.js +7 -1
  139. package/dist/cli/init/skills.js.map +1 -1
  140. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  141. package/dist/core/memory/RuVectorPatternStore.d.ts +90 -0
  142. package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
  143. package/dist/core/memory/RuVectorPatternStore.js +209 -0
  144. package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
  145. package/dist/learning/FederatedManager.d.ts +232 -0
  146. package/dist/learning/FederatedManager.d.ts.map +1 -0
  147. package/dist/learning/FederatedManager.js +489 -0
  148. package/dist/learning/FederatedManager.js.map +1 -0
  149. package/dist/learning/HNSWPatternAdapter.d.ts +117 -0
  150. package/dist/learning/HNSWPatternAdapter.d.ts.map +1 -0
  151. package/dist/learning/HNSWPatternAdapter.js +262 -0
  152. package/dist/learning/HNSWPatternAdapter.js.map +1 -0
  153. package/dist/learning/LearningEngine.d.ts +27 -0
  154. package/dist/learning/LearningEngine.d.ts.map +1 -1
  155. package/dist/learning/LearningEngine.js +75 -1
  156. package/dist/learning/LearningEngine.js.map +1 -1
  157. package/dist/learning/PatternCurator.d.ts +217 -0
  158. package/dist/learning/PatternCurator.d.ts.map +1 -0
  159. package/dist/learning/PatternCurator.js +393 -0
  160. package/dist/learning/PatternCurator.js.map +1 -0
  161. package/dist/learning/index.d.ts +6 -0
  162. package/dist/learning/index.d.ts.map +1 -1
  163. package/dist/learning/index.js +16 -1
  164. package/dist/learning/index.js.map +1 -1
  165. package/dist/learning/types.d.ts +4 -0
  166. package/dist/learning/types.d.ts.map +1 -1
  167. package/dist/mcp/server-instructions.d.ts +1 -1
  168. package/dist/mcp/server-instructions.js +1 -1
  169. package/dist/memory/HNSWPatternStore.d.ts +176 -0
  170. package/dist/memory/HNSWPatternStore.d.ts.map +1 -0
  171. package/dist/memory/HNSWPatternStore.js +392 -0
  172. package/dist/memory/HNSWPatternStore.js.map +1 -0
  173. package/dist/memory/index.d.ts +8 -0
  174. package/dist/memory/index.d.ts.map +1 -0
  175. package/dist/memory/index.js +13 -0
  176. package/dist/memory/index.js.map +1 -0
  177. package/dist/providers/HybridRouter.d.ts +85 -4
  178. package/dist/providers/HybridRouter.d.ts.map +1 -1
  179. package/dist/providers/HybridRouter.js +332 -10
  180. package/dist/providers/HybridRouter.js.map +1 -1
  181. package/dist/providers/LLMBaselineTracker.d.ts +120 -0
  182. package/dist/providers/LLMBaselineTracker.d.ts.map +1 -0
  183. package/dist/providers/LLMBaselineTracker.js +305 -0
  184. package/dist/providers/LLMBaselineTracker.js.map +1 -0
  185. package/dist/providers/OpenRouterProvider.d.ts +26 -0
  186. package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
  187. package/dist/providers/OpenRouterProvider.js +75 -6
  188. package/dist/providers/OpenRouterProvider.js.map +1 -1
  189. package/dist/providers/RuVectorClient.d.ts +259 -0
  190. package/dist/providers/RuVectorClient.d.ts.map +1 -0
  191. package/dist/providers/RuVectorClient.js +416 -0
  192. package/dist/providers/RuVectorClient.js.map +1 -0
  193. package/dist/providers/RuvllmPatternCurator.d.ts +116 -0
  194. package/dist/providers/RuvllmPatternCurator.d.ts.map +1 -0
  195. package/dist/providers/RuvllmPatternCurator.js +323 -0
  196. package/dist/providers/RuvllmPatternCurator.js.map +1 -0
  197. package/dist/providers/RuvllmProvider.d.ts +233 -1
  198. package/dist/providers/RuvllmProvider.d.ts.map +1 -1
  199. package/dist/providers/RuvllmProvider.js +781 -11
  200. package/dist/providers/RuvllmProvider.js.map +1 -1
  201. package/dist/providers/index.d.ts +5 -1
  202. package/dist/providers/index.d.ts.map +1 -1
  203. package/dist/providers/index.js +12 -2
  204. package/dist/providers/index.js.map +1 -1
  205. package/dist/utils/ruvllm-loader.d.ts +98 -1
  206. package/dist/utils/ruvllm-loader.d.ts.map +1 -1
  207. package/dist/utils/ruvllm-loader.js.map +1 -1
  208. package/docs/reference/agents.md +91 -2
  209. package/docs/reference/skills.md +97 -2
  210. 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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"}