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,121 @@
1
+ /**
2
+ * N8n API Client
3
+ *
4
+ * HTTP client for interacting with n8n REST API
5
+ * Handles authentication, retries, caching, and error handling
6
+ */
7
+ import { N8nAPIConfig, N8nWorkflow, N8nExecution, N8nCredential } from './types';
8
+ export declare class N8nAPIClient {
9
+ private readonly config;
10
+ private readonly cache;
11
+ private readonly cacheTTL;
12
+ private sessionCookie;
13
+ private sessionInitialized;
14
+ constructor(config: N8nAPIConfig);
15
+ /**
16
+ * Initialize session-based authentication
17
+ * Called automatically on first request if sessionAuth is configured
18
+ */
19
+ initSession(): Promise<boolean>;
20
+ /**
21
+ * List all workflows
22
+ */
23
+ listWorkflows(): Promise<N8nWorkflow[]>;
24
+ /**
25
+ * Get workflow by ID
26
+ */
27
+ getWorkflow(workflowId: string, useCache?: boolean): Promise<N8nWorkflow>;
28
+ /**
29
+ * Execute a workflow
30
+ */
31
+ executeWorkflow(workflowId: string, data?: Record<string, unknown>): Promise<N8nExecution>;
32
+ /**
33
+ * Activate a workflow
34
+ */
35
+ activateWorkflow(workflowId: string): Promise<N8nWorkflow>;
36
+ /**
37
+ * Deactivate a workflow
38
+ */
39
+ deactivateWorkflow(workflowId: string): Promise<N8nWorkflow>;
40
+ /**
41
+ * Create a new workflow
42
+ * Accepts workflow without id, createdAt, updatedAt (server will generate these)
43
+ */
44
+ createWorkflow(workflow: Omit<N8nWorkflow, 'id' | 'createdAt' | 'updatedAt'>): Promise<N8nWorkflow>;
45
+ /**
46
+ * Update an existing workflow
47
+ */
48
+ updateWorkflow(workflowId: string, workflow: Partial<N8nWorkflow>): Promise<N8nWorkflow>;
49
+ /**
50
+ * Delete a workflow
51
+ */
52
+ deleteWorkflow(workflowId: string): Promise<void>;
53
+ /**
54
+ * List executions
55
+ */
56
+ listExecutions(filters?: {
57
+ workflowId?: string;
58
+ status?: string;
59
+ limit?: number;
60
+ }): Promise<N8nExecution[]>;
61
+ /**
62
+ * Get execution by ID
63
+ */
64
+ getExecution(executionId: string): Promise<N8nExecution>;
65
+ /**
66
+ * Delete execution
67
+ */
68
+ deleteExecution(executionId: string): Promise<void>;
69
+ /**
70
+ * Wait for execution to complete
71
+ */
72
+ waitForExecution(executionId: string, timeout?: number, pollInterval?: number): Promise<N8nExecution>;
73
+ /**
74
+ * List credentials (metadata only, no secrets)
75
+ */
76
+ listCredentials(): Promise<N8nCredential[]>;
77
+ /**
78
+ * Get credential by ID (metadata only)
79
+ */
80
+ getCredential(credentialId: string): Promise<N8nCredential>;
81
+ /**
82
+ * Check n8n API health
83
+ */
84
+ healthCheck(): Promise<{
85
+ status: string;
86
+ }>;
87
+ /**
88
+ * Test API connectivity
89
+ */
90
+ testConnection(): Promise<boolean>;
91
+ /**
92
+ * Make HTTP request with retry logic
93
+ * Supports both API key auth (Public API) and session cookie auth (Internal REST API)
94
+ */
95
+ private request;
96
+ /**
97
+ * Get item from cache
98
+ */
99
+ private getFromCache;
100
+ /**
101
+ * Set item in cache
102
+ */
103
+ private setCache;
104
+ /**
105
+ * Clear cache
106
+ */
107
+ clearCache(): void;
108
+ /**
109
+ * Sleep utility
110
+ */
111
+ private sleep;
112
+ }
113
+ /**
114
+ * Custom error class for N8n API errors
115
+ */
116
+ export declare class N8nAPIError extends Error {
117
+ readonly statusCode: number;
118
+ readonly path: string;
119
+ constructor(message: string, statusCode: number, path: string);
120
+ }
121
+ //# sourceMappingURL=N8nAPIClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"N8nAPIClient.d.ts","sourceRoot":"","sources":["../../../src/agents/n8n/N8nAPIClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8F;IACrH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgE;IACtF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,MAAM,EAAE,YAAY;IAWhC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IA6CrC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAK7C;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAa5E;;OAEG;IACG,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,YAAY,CAAC;IAUxB;;OAEG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAOhE;;OAEG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAOlE;;;OAGG;IACG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAUzG;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAa9F;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvD;;OAEG;IACG,cAAc,CAAC,OAAO,CAAC,EAAE;QAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAa3B;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,OAAO,SAAQ,EACf,YAAY,SAAO,GAClB,OAAO,CAAC,YAAY,CAAC;IAoBxB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAKjD;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQjE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAUhD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAaxC;;;OAGG;YACW,OAAO;IA+GrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;aAGlB,UAAU,EAAE,MAAM;aAClB,IAAI,EAAE,MAAM;gBAF5B,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM;CAK/B"}
@@ -0,0 +1,367 @@
1
+ "use strict";
2
+ /**
3
+ * N8n API Client
4
+ *
5
+ * HTTP client for interacting with n8n REST API
6
+ * Handles authentication, retries, caching, and error handling
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.N8nAPIError = exports.N8nAPIClient = void 0;
10
+ class N8nAPIClient {
11
+ constructor(config) {
12
+ this.cache = new Map();
13
+ this.sessionCookie = null;
14
+ this.sessionInitialized = false;
15
+ this.config = {
16
+ baseUrl: config.baseUrl.replace(/\/$/, ''), // Remove trailing slash
17
+ apiKey: config.apiKey,
18
+ timeout: config.timeout ?? 30000,
19
+ retries: config.retries ?? 3,
20
+ sessionAuth: config.sessionAuth,
21
+ };
22
+ this.cacheTTL = 60000; // 1 minute cache
23
+ }
24
+ /**
25
+ * Initialize session-based authentication
26
+ * Called automatically on first request if sessionAuth is configured
27
+ */
28
+ async initSession() {
29
+ if (!this.config.sessionAuth || this.sessionInitialized) {
30
+ return !!this.sessionCookie;
31
+ }
32
+ try {
33
+ const response = await fetch(`${this.config.baseUrl}/rest/login`, {
34
+ method: 'POST',
35
+ headers: { 'Content-Type': 'application/json' },
36
+ body: JSON.stringify({
37
+ emailOrLdapLoginId: this.config.sessionAuth.email,
38
+ password: this.config.sessionAuth.password,
39
+ }),
40
+ });
41
+ if (!response.ok) {
42
+ console.warn('Session login failed:', response.status);
43
+ this.sessionInitialized = true;
44
+ return false;
45
+ }
46
+ // Extract session cookie
47
+ const setCookie = response.headers.get('set-cookie');
48
+ if (setCookie) {
49
+ const match = setCookie.match(/n8n-auth=([^;]+)/);
50
+ if (match) {
51
+ this.sessionCookie = match[1];
52
+ this.sessionInitialized = true;
53
+ return true;
54
+ }
55
+ }
56
+ this.sessionInitialized = true;
57
+ return false;
58
+ }
59
+ catch (error) {
60
+ console.warn('Session initialization failed:', error);
61
+ this.sessionInitialized = true;
62
+ return false;
63
+ }
64
+ }
65
+ // ============================================================================
66
+ // Workflow Operations
67
+ // ============================================================================
68
+ /**
69
+ * List all workflows
70
+ */
71
+ async listWorkflows() {
72
+ const response = await this.request('/api/v1/workflows');
73
+ return response.data;
74
+ }
75
+ /**
76
+ * Get workflow by ID
77
+ */
78
+ async getWorkflow(workflowId, useCache = true) {
79
+ const cacheKey = `workflow:${workflowId}`;
80
+ if (useCache) {
81
+ const cached = this.getFromCache(cacheKey);
82
+ if (cached)
83
+ return cached;
84
+ }
85
+ const workflow = await this.request(`/api/v1/workflows/${workflowId}`);
86
+ this.setCache(cacheKey, workflow);
87
+ return workflow;
88
+ }
89
+ /**
90
+ * Execute a workflow
91
+ */
92
+ async executeWorkflow(workflowId, data) {
93
+ return this.request(`/api/v1/workflows/${workflowId}/execute`, {
94
+ method: 'POST',
95
+ body: data ? JSON.stringify({ data }) : undefined,
96
+ });
97
+ }
98
+ /**
99
+ * Activate a workflow
100
+ */
101
+ async activateWorkflow(workflowId) {
102
+ return this.request(`/api/v1/workflows/${workflowId}/activate`, { method: 'POST' });
103
+ }
104
+ /**
105
+ * Deactivate a workflow
106
+ */
107
+ async deactivateWorkflow(workflowId) {
108
+ return this.request(`/api/v1/workflows/${workflowId}/deactivate`, { method: 'POST' });
109
+ }
110
+ /**
111
+ * Create a new workflow
112
+ * Accepts workflow without id, createdAt, updatedAt (server will generate these)
113
+ */
114
+ async createWorkflow(workflow) {
115
+ return this.request('/api/v1/workflows', {
116
+ method: 'POST',
117
+ body: JSON.stringify(workflow),
118
+ });
119
+ }
120
+ /**
121
+ * Update an existing workflow
122
+ */
123
+ async updateWorkflow(workflowId, workflow) {
124
+ // Invalidate cache
125
+ this.cache.delete(`workflow:${workflowId}`);
126
+ return this.request(`/api/v1/workflows/${workflowId}`, {
127
+ method: 'PUT',
128
+ body: JSON.stringify(workflow),
129
+ });
130
+ }
131
+ /**
132
+ * Delete a workflow
133
+ */
134
+ async deleteWorkflow(workflowId) {
135
+ // Invalidate cache
136
+ this.cache.delete(`workflow:${workflowId}`);
137
+ await this.request(`/api/v1/workflows/${workflowId}`, { method: 'DELETE' });
138
+ }
139
+ // ============================================================================
140
+ // Execution Operations
141
+ // ============================================================================
142
+ /**
143
+ * List executions
144
+ */
145
+ async listExecutions(filters) {
146
+ const params = new URLSearchParams();
147
+ if (filters?.workflowId)
148
+ params.set('workflowId', filters.workflowId);
149
+ if (filters?.status)
150
+ params.set('status', filters.status);
151
+ if (filters?.limit)
152
+ params.set('limit', filters.limit.toString());
153
+ const query = params.toString();
154
+ const path = query ? `/api/v1/executions?${query}` : '/api/v1/executions';
155
+ const response = await this.request(path);
156
+ return response.data;
157
+ }
158
+ /**
159
+ * Get execution by ID
160
+ */
161
+ async getExecution(executionId) {
162
+ return this.request(`/api/v1/executions/${executionId}`);
163
+ }
164
+ /**
165
+ * Delete execution
166
+ */
167
+ async deleteExecution(executionId) {
168
+ await this.request(`/api/v1/executions/${executionId}`, { method: 'DELETE' });
169
+ }
170
+ /**
171
+ * Wait for execution to complete
172
+ */
173
+ async waitForExecution(executionId, timeout = 30000, pollInterval = 1000) {
174
+ const startTime = Date.now();
175
+ while (Date.now() - startTime < timeout) {
176
+ const execution = await this.getExecution(executionId);
177
+ if (execution.finished) {
178
+ return execution;
179
+ }
180
+ await this.sleep(pollInterval);
181
+ }
182
+ throw new Error(`Execution ${executionId} did not complete within ${timeout}ms`);
183
+ }
184
+ // ============================================================================
185
+ // Credential Operations
186
+ // ============================================================================
187
+ /**
188
+ * List credentials (metadata only, no secrets)
189
+ */
190
+ async listCredentials() {
191
+ const response = await this.request('/api/v1/credentials');
192
+ return response.data;
193
+ }
194
+ /**
195
+ * Get credential by ID (metadata only)
196
+ */
197
+ async getCredential(credentialId) {
198
+ return this.request(`/api/v1/credentials/${credentialId}`);
199
+ }
200
+ // ============================================================================
201
+ // Health & Status
202
+ // ============================================================================
203
+ /**
204
+ * Check n8n API health
205
+ */
206
+ async healthCheck() {
207
+ try {
208
+ // n8n doesn't have a dedicated health endpoint, so we check workflows
209
+ await this.request('/api/v1/workflows?limit=1');
210
+ return { status: 'ok' };
211
+ }
212
+ catch (error) {
213
+ return { status: 'error' };
214
+ }
215
+ }
216
+ /**
217
+ * Test API connectivity
218
+ */
219
+ async testConnection() {
220
+ try {
221
+ const health = await this.healthCheck();
222
+ return health.status === 'ok';
223
+ }
224
+ catch {
225
+ return false;
226
+ }
227
+ }
228
+ // ============================================================================
229
+ // Private Methods
230
+ // ============================================================================
231
+ /**
232
+ * Make HTTP request with retry logic
233
+ * Supports both API key auth (Public API) and session cookie auth (Internal REST API)
234
+ */
235
+ async request(path, options = {}) {
236
+ // Initialize session if configured and not yet initialized
237
+ if (this.config.sessionAuth && !this.sessionInitialized) {
238
+ await this.initSession();
239
+ }
240
+ // Determine which API to use based on authentication method
241
+ const useSessionAuth = this.sessionCookie && path.startsWith('/api/v1/');
242
+ // Convert Public API paths to Internal REST paths if using session auth
243
+ let apiPath = path;
244
+ if (useSessionAuth) {
245
+ apiPath = path.replace('/api/v1/', '/rest/');
246
+ }
247
+ const url = `${this.config.baseUrl}${apiPath}`;
248
+ const headers = {
249
+ 'Content-Type': 'application/json',
250
+ ...(options.headers || {}),
251
+ };
252
+ // Add authentication header
253
+ if (this.sessionCookie && useSessionAuth) {
254
+ headers['Cookie'] = `n8n-auth=${this.sessionCookie}`;
255
+ }
256
+ else {
257
+ headers['X-N8N-API-KEY'] = this.config.apiKey;
258
+ }
259
+ let lastError = null;
260
+ for (let attempt = 0; attempt <= this.config.retries; attempt++) {
261
+ try {
262
+ const controller = new AbortController();
263
+ const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
264
+ const response = await fetch(url, {
265
+ ...options,
266
+ headers,
267
+ signal: controller.signal,
268
+ });
269
+ clearTimeout(timeoutId);
270
+ if (!response.ok) {
271
+ const errorBody = await response.text();
272
+ let errorMessage;
273
+ try {
274
+ const errorJson = JSON.parse(errorBody);
275
+ errorMessage = errorJson.message || errorJson.error || response.statusText;
276
+ }
277
+ catch {
278
+ errorMessage = errorBody || response.statusText;
279
+ }
280
+ // If API key auth fails with 401, try session auth
281
+ if (response.status === 401 && !useSessionAuth && this.config.sessionAuth && !this.sessionCookie) {
282
+ const sessionInitialized = await this.initSession();
283
+ if (sessionInitialized) {
284
+ // Retry with session auth
285
+ return this.request(path, options);
286
+ }
287
+ }
288
+ throw new N8nAPIError(`N8n API error: ${errorMessage}`, response.status, path);
289
+ }
290
+ // Handle empty responses
291
+ const text = await response.text();
292
+ if (!text) {
293
+ return {};
294
+ }
295
+ // Internal REST API wraps data in { data: ... }
296
+ const parsed = JSON.parse(text);
297
+ // Normalize response format (Public API vs Internal REST API)
298
+ if (useSessionAuth && parsed.data !== undefined && !path.includes('?')) {
299
+ // Internal REST API wraps single resources in { data: ... }
300
+ // But not for list endpoints (which already return arrays)
301
+ if (Array.isArray(parsed.data)) {
302
+ return { data: parsed.data };
303
+ }
304
+ return parsed.data;
305
+ }
306
+ return parsed;
307
+ }
308
+ catch (error) {
309
+ lastError = error;
310
+ // Don't retry on client errors (4xx) except 401 which we handle above
311
+ if (error instanceof N8nAPIError && error.statusCode >= 400 && error.statusCode < 500 && error.statusCode !== 401) {
312
+ throw error;
313
+ }
314
+ // Wait before retry with exponential backoff
315
+ if (attempt < this.config.retries) {
316
+ await this.sleep(Math.pow(2, attempt) * 1000);
317
+ }
318
+ }
319
+ }
320
+ throw lastError || new Error('Request failed after retries');
321
+ }
322
+ /**
323
+ * Get item from cache
324
+ */
325
+ getFromCache(key) {
326
+ const cached = this.cache.get(key);
327
+ if (!cached)
328
+ return null;
329
+ if (Date.now() - cached.timestamp > this.cacheTTL) {
330
+ this.cache.delete(key);
331
+ return null;
332
+ }
333
+ return cached.data;
334
+ }
335
+ /**
336
+ * Set item in cache
337
+ */
338
+ setCache(key, data) {
339
+ this.cache.set(key, { data, timestamp: Date.now() });
340
+ }
341
+ /**
342
+ * Clear cache
343
+ */
344
+ clearCache() {
345
+ this.cache.clear();
346
+ }
347
+ /**
348
+ * Sleep utility
349
+ */
350
+ sleep(ms) {
351
+ return new Promise(resolve => setTimeout(resolve, ms));
352
+ }
353
+ }
354
+ exports.N8nAPIClient = N8nAPIClient;
355
+ /**
356
+ * Custom error class for N8n API errors
357
+ */
358
+ class N8nAPIError extends Error {
359
+ constructor(message, statusCode, path) {
360
+ super(message);
361
+ this.statusCode = statusCode;
362
+ this.path = path;
363
+ this.name = 'N8nAPIError';
364
+ }
365
+ }
366
+ exports.N8nAPIError = N8nAPIError;
367
+ //# sourceMappingURL=N8nAPIClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"N8nAPIClient.js","sourceRoot":"","sources":["../../../src/agents/n8n/N8nAPIClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * N8n Audit Persistence Layer
3
+ *
4
+ * Provides persistent storage and reporting for n8n workflow audit results:
5
+ * - Store security audit results to SQLite/PostgreSQL
6
+ * - Store node validation results
7
+ * - Generate audit reports in multiple formats (JSON, HTML, PDF)
8
+ * - Historical trend analysis
9
+ * - Compliance tracking over time
10
+ */
11
+ import { SecurityAuditResult } from './types';
12
+ import { NodeValidationResult } from './N8nNodeValidatorAgent';
13
+ export interface AuditRecord {
14
+ id: string;
15
+ workflowId: string;
16
+ workflowName: string;
17
+ auditType: 'security' | 'validation' | 'compliance' | 'performance';
18
+ timestamp: Date;
19
+ result: SecurityAuditResult | NodeValidationResult;
20
+ metadata: {
21
+ agentVersion: string;
22
+ n8nVersion?: string;
23
+ environment?: string;
24
+ };
25
+ }
26
+ export interface AuditSummary {
27
+ workflowId: string;
28
+ workflowName: string;
29
+ totalAudits: number;
30
+ lastAuditDate: Date;
31
+ averageRiskScore: number;
32
+ riskTrend: 'improving' | 'stable' | 'degrading';
33
+ criticalFindings: number;
34
+ highFindings: number;
35
+ owaspCompliance: number;
36
+ }
37
+ export interface ReportOptions {
38
+ format: 'json' | 'html' | 'markdown' | 'csv';
39
+ includeRemediation?: boolean;
40
+ includeHistory?: boolean;
41
+ timeRange?: {
42
+ start: Date;
43
+ end: Date;
44
+ };
45
+ }
46
+ export interface TrendData {
47
+ date: Date;
48
+ riskScore: number;
49
+ criticalCount: number;
50
+ highCount: number;
51
+ mediumCount: number;
52
+ lowCount: number;
53
+ owaspScore: number;
54
+ }
55
+ export interface PersistenceConfig {
56
+ type: 'sqlite' | 'postgres' | 'memory';
57
+ connectionString?: string;
58
+ tableName?: string;
59
+ }
60
+ export declare class N8nAuditPersistence {
61
+ private readonly config;
62
+ private records;
63
+ private initialized;
64
+ constructor(config?: PersistenceConfig);
65
+ /**
66
+ * Initialize the persistence layer
67
+ */
68
+ initialize(): Promise<void>;
69
+ /**
70
+ * Store security audit result
71
+ */
72
+ storeSecurityAudit(result: SecurityAuditResult, metadata?: AuditRecord['metadata']): Promise<string>;
73
+ /**
74
+ * Store node validation result
75
+ */
76
+ storeValidationResult(result: NodeValidationResult, workflowName: string, metadata?: AuditRecord['metadata']): Promise<string>;
77
+ /**
78
+ * Get audit history for a workflow
79
+ */
80
+ getAuditHistory(workflowId: string, options?: {
81
+ auditType?: AuditRecord['auditType'];
82
+ limit?: number;
83
+ offset?: number;
84
+ }): Promise<AuditRecord[]>;
85
+ /**
86
+ * Get latest audit for a workflow
87
+ */
88
+ getLatestAudit(workflowId: string, auditType?: AuditRecord['auditType']): Promise<AuditRecord | null>;
89
+ /**
90
+ * Get audit summary for a workflow
91
+ */
92
+ getAuditSummary(workflowId: string): Promise<AuditSummary | null>;
93
+ /**
94
+ * Get risk trend data for visualization
95
+ */
96
+ getTrendData(workflowId: string, days?: number): Promise<TrendData[]>;
97
+ /**
98
+ * Generate audit report
99
+ */
100
+ generateReport(workflowId: string, options: ReportOptions): Promise<string>;
101
+ /**
102
+ * Get all workflow summaries
103
+ */
104
+ getAllSummaries(): Promise<AuditSummary[]>;
105
+ /**
106
+ * Delete old audit records
107
+ */
108
+ pruneRecords(olderThanDays: number): Promise<number>;
109
+ private ensureInitialized;
110
+ private generateId;
111
+ private saveRecord;
112
+ private createTables;
113
+ private generateJsonReport;
114
+ private generateHtmlReport;
115
+ private generateMarkdownReport;
116
+ private generateCsvReport;
117
+ }
118
+ export declare function getDefaultPersistence(): N8nAuditPersistence;
119
+ export declare function setDefaultPersistence(config: PersistenceConfig): N8nAuditPersistence;
120
+ //# sourceMappingURL=N8nAuditPersistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"N8nAuditPersistence.d.ts","sourceRoot":"","sources":["../../../src/agents/n8n/N8nAuditPersistence.ts"],"names":[],"mappings":"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"}