faf-cli 3.0.5 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/README.md +238 -24
  2. package/assets/screenshots/package-json+project-faf.png +0 -0
  3. package/dist/big-orange/bigo-push.d.ts +18 -0
  4. package/dist/big-orange/bigo-push.d.ts.map +1 -0
  5. package/dist/big-orange/bigo-push.js +88 -0
  6. package/dist/big-orange/bigo-push.js.map +1 -0
  7. package/dist/big-orange/compare.d.ts +11 -0
  8. package/dist/big-orange/compare.d.ts.map +1 -0
  9. package/dist/big-orange/compare.js +172 -0
  10. package/dist/big-orange/compare.js.map +1 -0
  11. package/dist/big-orange/faf-generator.d.ts +22 -0
  12. package/dist/big-orange/faf-generator.d.ts.map +1 -0
  13. package/dist/big-orange/faf-generator.js +215 -0
  14. package/dist/big-orange/faf-generator.js.map +1 -0
  15. package/dist/big-orange/index.d.ts +7 -0
  16. package/dist/big-orange/index.d.ts.map +1 -0
  17. package/dist/big-orange/index.js +96 -0
  18. package/dist/big-orange/index.js.map +1 -0
  19. package/dist/big-orange/types.d.ts +62 -0
  20. package/dist/big-orange/types.d.ts.map +1 -0
  21. package/dist/big-orange/types.js +7 -0
  22. package/dist/big-orange/types.js.map +1 -0
  23. package/dist/cli.d.ts.map +1 -1
  24. package/dist/cli.js +137 -1
  25. package/dist/cli.js.map +1 -1
  26. package/dist/commands/auto.d.ts.map +1 -1
  27. package/dist/commands/auto.js +69 -12
  28. package/dist/commands/auto.js.map +1 -1
  29. package/dist/commands/bi-sync.d.ts.map +1 -1
  30. package/dist/commands/bi-sync.js +10 -3
  31. package/dist/commands/bi-sync.js.map +1 -1
  32. package/dist/commands/drift.d.ts +16 -0
  33. package/dist/commands/drift.d.ts.map +1 -0
  34. package/dist/commands/drift.js +517 -0
  35. package/dist/commands/drift.js.map +1 -0
  36. package/dist/commands/git.d.ts +25 -0
  37. package/dist/commands/git.d.ts.map +1 -0
  38. package/dist/commands/git.js +355 -0
  39. package/dist/commands/git.js.map +1 -0
  40. package/dist/commands/init.d.ts.map +1 -1
  41. package/dist/commands/init.js +5 -4
  42. package/dist/commands/init.js.map +1 -1
  43. package/dist/commands/migrate.d.ts +11 -0
  44. package/dist/commands/migrate.d.ts.map +1 -0
  45. package/dist/commands/migrate.js +85 -0
  46. package/dist/commands/migrate.js.map +1 -0
  47. package/dist/commands/rename.d.ts +18 -0
  48. package/dist/commands/rename.d.ts.map +1 -0
  49. package/dist/commands/rename.js +211 -0
  50. package/dist/commands/rename.js.map +1 -0
  51. package/dist/commands/taf-init.d.ts +14 -0
  52. package/dist/commands/taf-init.d.ts.map +1 -0
  53. package/dist/commands/taf-init.js +138 -0
  54. package/dist/commands/taf-init.js.map +1 -0
  55. package/dist/commands/taf-log.d.ts +27 -0
  56. package/dist/commands/taf-log.d.ts.map +1 -0
  57. package/dist/commands/taf-log.js +241 -0
  58. package/dist/commands/taf-log.js.map +1 -0
  59. package/dist/commands/taf-stats.d.ts +8 -0
  60. package/dist/commands/taf-stats.d.ts.map +1 -0
  61. package/dist/commands/taf-stats.js +133 -0
  62. package/dist/commands/taf-stats.js.map +1 -0
  63. package/dist/commands/taf-validate.d.ts +8 -0
  64. package/dist/commands/taf-validate.d.ts.map +1 -0
  65. package/dist/commands/taf-validate.js +108 -0
  66. package/dist/commands/taf-validate.js.map +1 -0
  67. package/dist/commands/taf.d.ts +13 -0
  68. package/dist/commands/taf.d.ts.map +1 -0
  69. package/dist/commands/taf.js +85 -0
  70. package/dist/commands/taf.js.map +1 -0
  71. package/dist/compiler/faf-compiler.d.ts.map +1 -1
  72. package/dist/compiler/faf-compiler.js +18 -0
  73. package/dist/compiler/faf-compiler.js.map +1 -1
  74. package/dist/generators/faf-generator-championship.d.ts.map +1 -1
  75. package/dist/generators/faf-generator-championship.js +1 -0
  76. package/dist/generators/faf-generator-championship.js.map +1 -1
  77. package/dist/github/github-extractor.d.ts +56 -0
  78. package/dist/github/github-extractor.d.ts.map +1 -0
  79. package/dist/github/github-extractor.js +328 -0
  80. package/dist/github/github-extractor.js.map +1 -0
  81. package/dist/github/popular-repos.d.ts +43 -0
  82. package/dist/github/popular-repos.d.ts.map +1 -0
  83. package/dist/github/popular-repos.js +205 -0
  84. package/dist/github/popular-repos.js.map +1 -0
  85. package/dist/github/repo-selector.d.ts +48 -0
  86. package/dist/github/repo-selector.d.ts.map +1 -0
  87. package/dist/github/repo-selector.js +277 -0
  88. package/dist/github/repo-selector.js.map +1 -0
  89. package/dist/taf/index.d.ts +17 -0
  90. package/dist/taf/index.d.ts.map +1 -0
  91. package/dist/taf/index.js +57 -0
  92. package/dist/taf/index.js.map +1 -0
  93. package/dist/taf/logger.d.ts +86 -0
  94. package/dist/taf/logger.d.ts.map +1 -0
  95. package/dist/taf/logger.js +135 -0
  96. package/dist/taf/logger.js.map +1 -0
  97. package/dist/taf/parser.d.ts +32 -0
  98. package/dist/taf/parser.d.ts.map +1 -0
  99. package/dist/taf/parser.js +161 -0
  100. package/dist/taf/parser.js.map +1 -0
  101. package/dist/taf/stats.d.ts +31 -0
  102. package/dist/taf/stats.d.ts.map +1 -0
  103. package/dist/taf/stats.js +182 -0
  104. package/dist/taf/stats.js.map +1 -0
  105. package/dist/taf/types.d.ts +66 -0
  106. package/dist/taf/types.d.ts.map +1 -0
  107. package/dist/taf/types.js +9 -0
  108. package/dist/taf/types.js.map +1 -0
  109. package/dist/taf/validator.d.ts +18 -0
  110. package/dist/taf/validator.d.ts.map +1 -0
  111. package/dist/taf/validator.js +148 -0
  112. package/dist/taf/validator.js.map +1 -0
  113. package/dist/utils/file-utils.d.ts +10 -0
  114. package/dist/utils/file-utils.d.ts.map +1 -1
  115. package/dist/utils/file-utils.js +196 -33
  116. package/dist/utils/file-utils.js.map +1 -1
  117. package/dist/utils/native-file-finder.js +1 -1
  118. package/dist/utils/native-file-finder.js.map +1 -1
  119. package/dist/utils/yaml-generator.d.ts +1 -0
  120. package/dist/utils/yaml-generator.d.ts.map +1 -1
  121. package/dist/utils/yaml-generator.js +1 -0
  122. package/dist/utils/yaml-generator.js.map +1 -1
  123. package/package.json +12 -4
  124. package/dist/commands/create.d.ts +0 -13
  125. package/dist/commands/create.d.ts.map +0 -1
  126. package/dist/commands/create.js +0 -78
  127. package/dist/commands/create.js.map +0 -1
  128. package/dist/core/platform-adapters.d.ts +0 -76
  129. package/dist/core/platform-adapters.d.ts.map +0 -1
  130. package/dist/core/platform-adapters.js +0 -407
  131. package/dist/core/platform-adapters.js.map +0 -1
  132. package/dist/core/universal-intelligence-generator.d.ts +0 -156
  133. package/dist/core/universal-intelligence-generator.d.ts.map +0 -1
  134. package/dist/core/universal-intelligence-generator.js +0 -352
  135. package/dist/core/universal-intelligence-generator.js.map +0 -1
  136. package/dist/enrichment/auto-corrector.d.ts +0 -28
  137. package/dist/enrichment/auto-corrector.d.ts.map +0 -1
  138. package/dist/enrichment/auto-corrector.js +0 -106
  139. package/dist/enrichment/auto-corrector.js.map +0 -1
  140. package/dist/enrichment/n8n-analyzer.d.ts +0 -259
  141. package/dist/enrichment/n8n-analyzer.d.ts.map +0 -1
  142. package/dist/enrichment/n8n-analyzer.js +0 -346
  143. package/dist/enrichment/n8n-analyzer.js.map +0 -1
  144. package/dist/enrichment/n8n-faf-generator.d.ts +0 -68
  145. package/dist/enrichment/n8n-faf-generator.d.ts.map +0 -1
  146. package/dist/enrichment/n8n-faf-generator.js +0 -354
  147. package/dist/enrichment/n8n-faf-generator.js.map +0 -1
  148. package/dist/enrichment/question-asker.d.ts +0 -22
  149. package/dist/enrichment/question-asker.d.ts.map +0 -1
  150. package/dist/enrichment/question-asker.js +0 -113
  151. package/dist/enrichment/question-asker.js.map +0 -1
  152. package/dist/enrichment/slot-filler.d.ts +0 -73
  153. package/dist/enrichment/slot-filler.d.ts.map +0 -1
  154. package/dist/enrichment/slot-filler.js +0 -253
  155. package/dist/enrichment/slot-filler.js.map +0 -1
  156. package/dist/scoring/championship-scorer.d.ts +0 -114
  157. package/dist/scoring/championship-scorer.d.ts.map +0 -1
  158. package/dist/scoring/championship-scorer.js +0 -380
  159. package/dist/scoring/championship-scorer.js.map +0 -1
  160. package/dist/scoring/score-calculator.d.ts +0 -29
  161. package/dist/scoring/score-calculator.d.ts.map +0 -1
  162. package/dist/scoring/score-calculator.js +0 -520
  163. package/dist/scoring/score-calculator.js.map +0 -1
  164. package/dist/tests/manual-validation.d.ts +0 -8
  165. package/dist/tests/manual-validation.d.ts.map +0 -1
  166. package/dist/tests/manual-validation.js +0 -114
  167. package/dist/tests/manual-validation.js.map +0 -1
@@ -1,259 +0,0 @@
1
- /**
2
- * 🏎️ n8n Workflow Analyzer - THE Standard
3
- *
4
- * CHAMPIONSHIP: We're defining THE canonical .faf schema for n8n workflows
5
- *
6
- * What makes this AMAZING:
7
- * 1. First official .faf schema for n8n (they don't have one!)
8
- * 2. AI-Agent ready (autonomous agents can read our format)
9
- * 3. Self-healing ready (captures error handling, retries)
10
- * 4. Multi-agent ready (documents decision points, tools)
11
- * 5. FAB-FORMATS compatible (plugs in later with zero work)
12
- */
13
- export interface N8nNode {
14
- id: string;
15
- name: string;
16
- type: string;
17
- typeVersion: number;
18
- position: [number, number];
19
- parameters?: Record<string, any>;
20
- credentials?: Record<string, string>;
21
- notes?: string;
22
- notesInFlow?: boolean;
23
- }
24
- export interface N8nConnection {
25
- node: string;
26
- type: string;
27
- index: number;
28
- }
29
- export interface N8nConnections {
30
- [nodeName: string]: {
31
- [outputType: string]: N8nConnection[][];
32
- };
33
- }
34
- export interface N8nWorkflowRaw {
35
- id?: string;
36
- name: string;
37
- nodes: N8nNode[];
38
- connections: N8nConnections;
39
- settings?: {
40
- saveDataSuccessExecution?: string;
41
- saveDataErrorExecution?: string;
42
- saveManualExecutions?: boolean;
43
- callerPolicy?: string;
44
- executionOrder?: string;
45
- };
46
- staticData?: any;
47
- pinData?: any;
48
- versionId?: string;
49
- tags?: string[];
50
- meta?: Record<string, any>;
51
- }
52
- export type WorkflowPattern = 'RAG' | 'ETL' | 'API' | 'Multi-Agent' | 'Webhook' | 'Scheduled' | 'Form' | 'Unknown';
53
- export interface DecisionPoint {
54
- nodeId: string;
55
- nodeName: string;
56
- type: 'IF' | 'Switch' | 'Merge' | 'Filter';
57
- condition: string;
58
- branches: string[];
59
- }
60
- export interface MemoryRequirement {
61
- nodeId: string;
62
- nodeName: string;
63
- type: 'vector-store' | 'database' | 'cache' | 'session';
64
- purpose: string;
65
- }
66
- export interface ErrorHandler {
67
- nodeId: string;
68
- nodeName: string;
69
- strategy: 'retry' | 'fallback' | 'ignore' | 'alert';
70
- config?: Record<string, any>;
71
- }
72
- export interface RetryStrategy {
73
- nodeId: string;
74
- maxRetries: number;
75
- retryDelay: number;
76
- backoff: 'linear' | 'exponential';
77
- }
78
- export interface FallbackPath {
79
- fromNode: string;
80
- toNode: string;
81
- condition: string;
82
- }
83
- export interface ToolCapability {
84
- toolName: string;
85
- nodeType: string;
86
- purpose: string;
87
- parameters: string[];
88
- }
89
- export interface N8nWorkflowFaf {
90
- workflow_schema_version: '1.0.0';
91
- project: {
92
- name: string;
93
- type: 'n8n-workflow';
94
- workflow_file: string;
95
- purpose: string;
96
- };
97
- n8n_workflow: {
98
- name: string;
99
- workflow_id?: string;
100
- version_id?: string;
101
- status: 'active' | 'inactive' | 'draft';
102
- architecture: {
103
- pattern: WorkflowPattern;
104
- components: string[];
105
- };
106
- triggers: Array<{
107
- type: string;
108
- id: string;
109
- path?: string;
110
- method?: string;
111
- purpose: string;
112
- fields?: Array<{
113
- name: string;
114
- type: string;
115
- }>;
116
- }>;
117
- nodes: {
118
- total: number;
119
- breakdown: Record<string, string[]>;
120
- };
121
- credentials_required?: Record<string, string>;
122
- external_dependencies?: {
123
- ai_models?: string[];
124
- infrastructure?: string[];
125
- };
126
- flow_description?: string;
127
- };
128
- tech_stack: {
129
- workflow_engine: 'n8n';
130
- primary_language: 'JSON (workflow definition)';
131
- ai_models?: Record<string, string>;
132
- infrastructure?: Record<string, string>;
133
- integrations?: string[];
134
- };
135
- agent_context?: {
136
- pattern: WorkflowPattern;
137
- tools_available: ToolCapability[];
138
- decision_points: DecisionPoint[];
139
- memory_required: MemoryRequirement[];
140
- };
141
- health?: {
142
- error_handlers: ErrorHandler[];
143
- retry_strategies: RetryStrategy[];
144
- fallback_paths: FallbackPath[];
145
- };
146
- human_context: {
147
- who: string;
148
- what: string;
149
- why: string;
150
- where: string;
151
- when: string;
152
- how: string;
153
- };
154
- knowledge_domain?: {
155
- subject: string;
156
- content_source?: string;
157
- covered_topics?: Record<string, string[]>;
158
- };
159
- agent_configuration?: {
160
- system_prompt_length?: number;
161
- tone?: string;
162
- tool_gating_rules?: string[];
163
- output_structure?: string[];
164
- retrieval_settings?: Record<string, any>;
165
- };
166
- known_issues: Array<{
167
- issue: string;
168
- impact: string;
169
- solution?: string;
170
- priority: 'low' | 'medium' | 'high';
171
- }>;
172
- maintenance_notes?: {
173
- knowledge_updates?: string;
174
- vector_db?: string;
175
- cost_monitoring?: string;
176
- testing?: string;
177
- };
178
- performance_metrics?: {
179
- latency?: {
180
- target: string;
181
- components?: Record<string, string>;
182
- };
183
- quality?: Record<string, string>;
184
- cost_estimate?: {
185
- per_query?: string;
186
- per_document_ingestion?: string;
187
- };
188
- };
189
- ai_instructions: {
190
- message: string;
191
- };
192
- workflow_dna?: {
193
- birth_version: string;
194
- birth_date: string;
195
- birth_score: string;
196
- current_version: string;
197
- current_score: string;
198
- evolution?: string[];
199
- next_steps?: string[];
200
- };
201
- scores: {
202
- faf_score: number;
203
- ai_compatibility_score: number;
204
- completeness_score: number;
205
- balance?: {
206
- ai_percentage: number;
207
- human_percentage: number;
208
- };
209
- };
210
- generated: string;
211
- faf_version: string;
212
- }
213
- export declare class N8nWorkflowAnalyzer {
214
- /**
215
- * Detect if file is n8n workflow JSON
216
- */
217
- static detect(filePath: string): Promise<boolean>;
218
- /**
219
- * Parse n8n workflow JSON
220
- */
221
- static parse(filePath: string): Promise<N8nWorkflowRaw>;
222
- /**
223
- * Detect workflow pattern (AMAZING: AI-agent ready)
224
- */
225
- static detectPattern(workflow: N8nWorkflowRaw): WorkflowPattern;
226
- /**
227
- * Extract AI models used
228
- */
229
- static extractAIModels(workflow: N8nWorkflowRaw): string[];
230
- /**
231
- * Extract databases/infrastructure
232
- */
233
- static extractInfrastructure(workflow: N8nWorkflowRaw): string[];
234
- /**
235
- * Extract triggers
236
- */
237
- static extractTriggers(workflow: N8nWorkflowRaw): N8nWorkflowFaf['n8n_workflow']['triggers'];
238
- /**
239
- * Group nodes by category
240
- */
241
- static groupNodes(workflow: N8nWorkflowRaw): Record<string, string[]>;
242
- /**
243
- * Generate flow description (AMAZING: Makes it readable for AI agents)
244
- */
245
- static generateFlowDescription(workflow: N8nWorkflowRaw, pattern: WorkflowPattern): string;
246
- /**
247
- * AMAZING: Extract tool capabilities for AI agents
248
- */
249
- static extractToolCapabilities(workflow: N8nWorkflowRaw): ToolCapability[];
250
- /**
251
- * AMAZING: Extract decision points for autonomous agents
252
- */
253
- static extractDecisionPoints(workflow: N8nWorkflowRaw): DecisionPoint[];
254
- /**
255
- * AMAZING: Extract memory requirements
256
- */
257
- static extractMemoryRequirements(workflow: N8nWorkflowRaw): MemoryRequirement[];
258
- }
259
- //# sourceMappingURL=n8n-analyzer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"n8n-analyzer.d.ts","sourceRoot":"","sources":["../../src/enrichment/n8n-analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,346 +0,0 @@
1
- "use strict";
2
- /**
3
- * 🏎️ n8n Workflow Analyzer - THE Standard
4
- *
5
- * CHAMPIONSHIP: We're defining THE canonical .faf schema for n8n workflows
6
- *
7
- * What makes this AMAZING:
8
- * 1. First official .faf schema for n8n (they don't have one!)
9
- * 2. AI-Agent ready (autonomous agents can read our format)
10
- * 3. Self-healing ready (captures error handling, retries)
11
- * 4. Multi-agent ready (documents decision points, tools)
12
- * 5. FAB-FORMATS compatible (plugs in later with zero work)
13
- */
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.N8nWorkflowAnalyzer = void 0;
16
- const fs_1 = require("fs");
17
- // ============================================================================
18
- // ANALYZER - Championship Intelligence
19
- // ============================================================================
20
- class N8nWorkflowAnalyzer {
21
- /**
22
- * Detect if file is n8n workflow JSON
23
- */
24
- static async detect(filePath) {
25
- try {
26
- const content = await fs_1.promises.readFile(filePath, 'utf-8');
27
- const data = JSON.parse(content);
28
- // n8n workflows have specific structure
29
- return !!(data.nodes && data.connections && Array.isArray(data.nodes));
30
- }
31
- catch {
32
- return false;
33
- }
34
- }
35
- /**
36
- * Parse n8n workflow JSON
37
- */
38
- static async parse(filePath) {
39
- const content = await fs_1.promises.readFile(filePath, 'utf-8');
40
- return JSON.parse(content);
41
- }
42
- /**
43
- * Detect workflow pattern (AMAZING: AI-agent ready)
44
- */
45
- static detectPattern(workflow) {
46
- const nodeTypes = workflow.nodes.map(n => n.type.toLowerCase());
47
- // Check for RAG pattern
48
- const hasVectorStore = nodeTypes.some(t => t.includes('pinecone') ||
49
- t.includes('weaviate') ||
50
- t.includes('qdrant') ||
51
- t.includes('vectorstore'));
52
- const hasAIAgent = nodeTypes.some(t => t.includes('agent') ||
53
- t.includes('lmchat') ||
54
- t.includes('anthropic') ||
55
- t.includes('openai'));
56
- if (hasVectorStore && hasAIAgent) {
57
- return 'RAG';
58
- }
59
- // Check for Multi-Agent (multiple AI nodes)
60
- const aiNodeCount = workflow.nodes.filter(n => n.type.toLowerCase().includes('agent') ||
61
- n.type.toLowerCase().includes('lmchat')).length;
62
- if (aiNodeCount > 1) {
63
- return 'Multi-Agent';
64
- }
65
- // Check for ETL (has data transformation nodes)
66
- const hasETL = nodeTypes.some(t => t.includes('code') ||
67
- t.includes('function') ||
68
- t.includes('set') ||
69
- t.includes('split'));
70
- const hasDatabase = nodeTypes.some(t => t.includes('postgres') ||
71
- t.includes('mysql') ||
72
- t.includes('mongodb'));
73
- if (hasETL && hasDatabase) {
74
- return 'ETL';
75
- }
76
- // Check for triggers
77
- const triggerTypes = workflow.nodes
78
- .filter(n => n.type.toLowerCase().includes('trigger'))
79
- .map(n => n.type.toLowerCase());
80
- if (triggerTypes.some(t => t.includes('webhook'))) {
81
- return 'Webhook';
82
- }
83
- if (triggerTypes.some(t => t.includes('schedule') || t.includes('cron'))) {
84
- return 'Scheduled';
85
- }
86
- if (triggerTypes.some(t => t.includes('form'))) {
87
- return 'Form';
88
- }
89
- // Check for API orchestration
90
- const httpNodes = workflow.nodes.filter(n => n.type.toLowerCase().includes('httprequest'));
91
- if (httpNodes.length > 2) {
92
- return 'API';
93
- }
94
- return 'Unknown';
95
- }
96
- /**
97
- * Extract AI models used
98
- */
99
- static extractAIModels(workflow) {
100
- const models = [];
101
- for (const node of workflow.nodes) {
102
- const type = node.type.toLowerCase();
103
- const params = node.parameters || {};
104
- // Claude
105
- if (type.includes('anthropic')) {
106
- const model = params.model || 'claude-sonnet-4-20250514';
107
- models.push(model);
108
- }
109
- // OpenAI
110
- if (type.includes('openai')) {
111
- const model = params.model || 'gpt-4';
112
- models.push(model);
113
- }
114
- // Embeddings
115
- if (type.includes('embedding')) {
116
- if (params.model) {
117
- models.push(params.model);
118
- }
119
- }
120
- // Reranker
121
- if (type.includes('rerank')) {
122
- models.push('cohere reranker');
123
- }
124
- }
125
- return [...new Set(models)]; // Dedupe
126
- }
127
- /**
128
- * Extract databases/infrastructure
129
- */
130
- static extractInfrastructure(workflow) {
131
- const infra = [];
132
- for (const node of workflow.nodes) {
133
- const type = node.type.toLowerCase();
134
- if (type.includes('pinecone'))
135
- infra.push('Pinecone vector database');
136
- if (type.includes('weaviate'))
137
- infra.push('Weaviate vector database');
138
- if (type.includes('qdrant'))
139
- infra.push('Qdrant vector database');
140
- if (type.includes('postgres'))
141
- infra.push('PostgreSQL');
142
- if (type.includes('mysql'))
143
- infra.push('MySQL');
144
- if (type.includes('mongodb'))
145
- infra.push('MongoDB');
146
- if (type.includes('redis'))
147
- infra.push('Redis');
148
- if (type.includes('webhook'))
149
- infra.push('n8n webhook endpoints');
150
- }
151
- return [...new Set(infra)];
152
- }
153
- /**
154
- * Extract triggers
155
- */
156
- static extractTriggers(workflow) {
157
- const triggers = [];
158
- for (const node of workflow.nodes) {
159
- const type = node.type.toLowerCase();
160
- if (type.includes('trigger')) {
161
- const trigger = {
162
- type: node.type,
163
- id: node.id,
164
- purpose: node.notes || `${node.name} trigger`
165
- };
166
- // Webhook details
167
- if (type.includes('webhook')) {
168
- trigger.path = node.parameters?.path || node.id;
169
- trigger.method = node.parameters?.method || 'POST';
170
- }
171
- // Form details
172
- if (type.includes('form')) {
173
- const webhookId = node.parameters?.options?.webhookId;
174
- if (webhookId) {
175
- trigger.webhook_id = webhookId;
176
- }
177
- const formFields = node.parameters?.formFields?.values;
178
- if (formFields && Array.isArray(formFields)) {
179
- trigger.fields = formFields.map((f) => ({
180
- name: f.fieldLabel || f.fieldId,
181
- type: f.fieldType
182
- }));
183
- }
184
- }
185
- triggers.push(trigger);
186
- }
187
- }
188
- return triggers;
189
- }
190
- /**
191
- * Group nodes by category
192
- */
193
- static groupNodes(workflow) {
194
- const groups = {
195
- core_agent: [],
196
- knowledge_ingestion: [],
197
- retrieval: [],
198
- organization: [],
199
- transformation: [],
200
- integration: []
201
- };
202
- for (const node of workflow.nodes) {
203
- const type = node.type.toLowerCase();
204
- const name = node.name;
205
- // Core AI agent
206
- if (type.includes('agent') || type.includes('lmchat') || type.includes('anthropic') || type.includes('openai')) {
207
- groups.core_agent.push(name);
208
- }
209
- // Knowledge ingestion
210
- else if (type.includes('loader') || type.includes('splitter') || type.includes('embedding') || (type.includes('vectorstore') && type.includes('insert'))) {
211
- groups.knowledge_ingestion.push(name);
212
- }
213
- // Retrieval
214
- else if (type.includes('vectorstore') || type.includes('rerank')) {
215
- groups.retrieval.push(name);
216
- }
217
- // Organization
218
- else if (type.includes('sticky')) {
219
- groups.organization.push(name);
220
- }
221
- // Transformation
222
- else if (type.includes('code') || type.includes('set') || type.includes('function')) {
223
- groups.transformation.push(name);
224
- }
225
- // Integration
226
- else {
227
- groups.integration.push(name);
228
- }
229
- }
230
- // Remove empty groups
231
- return Object.fromEntries(Object.entries(groups).filter(([_, nodes]) => nodes.length > 0));
232
- }
233
- /**
234
- * Generate flow description (AMAZING: Makes it readable for AI agents)
235
- */
236
- static generateFlowDescription(workflow, pattern) {
237
- // We'll generate this based on pattern + node analysis
238
- // For now, placeholder
239
- return `Workflow pattern: ${pattern}. Detailed flow analysis coming soon.`;
240
- }
241
- /**
242
- * AMAZING: Extract tool capabilities for AI agents
243
- */
244
- static extractToolCapabilities(workflow) {
245
- const tools = [];
246
- for (const node of workflow.nodes) {
247
- const type = node.type;
248
- // Vector search tools
249
- if (type.toLowerCase().includes('vectorstore')) {
250
- tools.push({
251
- toolName: node.name,
252
- nodeType: type,
253
- purpose: 'Search vector database for relevant context',
254
- parameters: ['query', 'topK', 'filter']
255
- });
256
- }
257
- // HTTP request tools
258
- if (type.toLowerCase().includes('httprequest')) {
259
- tools.push({
260
- toolName: node.name,
261
- nodeType: type,
262
- purpose: 'Make HTTP API requests',
263
- parameters: ['url', 'method', 'body', 'headers']
264
- });
265
- }
266
- // Code execution tools
267
- if (type.toLowerCase().includes('code')) {
268
- tools.push({
269
- toolName: node.name,
270
- nodeType: type,
271
- purpose: 'Execute custom logic',
272
- parameters: ['code', 'items']
273
- });
274
- }
275
- }
276
- return tools;
277
- }
278
- /**
279
- * AMAZING: Extract decision points for autonomous agents
280
- */
281
- static extractDecisionPoints(workflow) {
282
- const decisions = [];
283
- for (const node of workflow.nodes) {
284
- const type = node.type.toLowerCase();
285
- if (type.includes('if')) {
286
- const connections = workflow.connections[node.name];
287
- const branches = connections ? Object.keys(connections) : [];
288
- decisions.push({
289
- nodeId: node.id,
290
- nodeName: node.name,
291
- type: 'IF',
292
- condition: JSON.stringify(node.parameters?.conditions || {}),
293
- branches
294
- });
295
- }
296
- if (type.includes('switch')) {
297
- const connections = workflow.connections[node.name];
298
- const branches = connections ? Object.keys(connections) : [];
299
- decisions.push({
300
- nodeId: node.id,
301
- nodeName: node.name,
302
- type: 'Switch',
303
- condition: JSON.stringify(node.parameters?.rules || {}),
304
- branches
305
- });
306
- }
307
- }
308
- return decisions;
309
- }
310
- /**
311
- * AMAZING: Extract memory requirements
312
- */
313
- static extractMemoryRequirements(workflow) {
314
- const memory = [];
315
- for (const node of workflow.nodes) {
316
- const type = node.type.toLowerCase();
317
- if (type.includes('pinecone') || type.includes('weaviate') || type.includes('qdrant')) {
318
- memory.push({
319
- nodeId: node.id,
320
- nodeName: node.name,
321
- type: 'vector-store',
322
- purpose: 'Store and retrieve embeddings for RAG'
323
- });
324
- }
325
- if (type.includes('redis')) {
326
- memory.push({
327
- nodeId: node.id,
328
- nodeName: node.name,
329
- type: 'cache',
330
- purpose: 'Cache frequently accessed data'
331
- });
332
- }
333
- if (type.includes('postgres') || type.includes('mysql') || type.includes('mongodb')) {
334
- memory.push({
335
- nodeId: node.id,
336
- nodeName: node.name,
337
- type: 'database',
338
- purpose: 'Persistent data storage'
339
- });
340
- }
341
- }
342
- return memory;
343
- }
344
- }
345
- exports.N8nWorkflowAnalyzer = N8nWorkflowAnalyzer;
346
- //# sourceMappingURL=n8n-analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"n8n-analyzer.js","sourceRoot":"","sources":["../../src/enrichment/n8n-analyzer.ts"],"names":[],"mappings":"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"}