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,156 +0,0 @@
1
- /**
2
- * 🏆 UNIVERSAL INTELLIGENCE GENERATOR
3
- *
4
- * THE foundational pattern that applies to EVERYTHING:
5
- * - Code projects (package.json, tsconfig, etc.)
6
- * - Automation workflows (n8n, Make, Opal, OpenAI)
7
- * - Documentation centers (markdown, wikis)
8
- * - API specifications (OpenAPI, GraphQL)
9
- * - ANY project that needs AI context
10
- *
11
- * Pattern: interrogation → extraction → filtering → generation
12
- * Output: ALWAYS .faf (universal container for structured intelligence)
13
- *
14
- * FOUNDATIONAL FIRST, UNIVERSAL BY DEFAULT
15
- */
16
- export interface IntelligenceSource {
17
- type: SourceType;
18
- filePath: string;
19
- metadata?: Record<string, any>;
20
- }
21
- export type SourceType = 'code-project' | 'n8n-workflow' | 'make-scenario' | 'opal-miniapp' | 'openai-assistant' | 'documentation' | 'api-spec' | 'custom';
22
- export interface RawIntelligence {
23
- data: any;
24
- confidence: number;
25
- metadata: {
26
- source_type: SourceType;
27
- source_file: string;
28
- extracted_at: string;
29
- };
30
- }
31
- export interface StructuredIntelligence {
32
- project: {
33
- name: string;
34
- type: string;
35
- goal: string;
36
- main_language?: string;
37
- };
38
- architecture?: {
39
- pattern: string;
40
- components: string[];
41
- };
42
- tech_stack?: Record<string, string>;
43
- human_context: {
44
- who: string;
45
- what: string;
46
- why: string;
47
- where: string;
48
- when: string;
49
- how: string;
50
- };
51
- source_data?: any;
52
- scores: {
53
- faf_score: number;
54
- ai_compatibility_score: number;
55
- completeness_score: number;
56
- };
57
- generated: string;
58
- faf_version: string;
59
- }
60
- /**
61
- * Base class implementing the universal pattern
62
- *
63
- * All input adapters (n8n, Make, Opal, etc.) extend this
64
- */
65
- export declare abstract class UniversalIntelligenceGenerator {
66
- /**
67
- * PHASE 1: INTERROGATION
68
- *
69
- * "What is this? What type of intelligence source?"
70
- *
71
- * Detects the input type and determines if we can process it
72
- */
73
- abstract detect(filePath: string): Promise<boolean>;
74
- /**
75
- * PHASE 2: EXTRACTION
76
- *
77
- * "Pull the raw intelligence from the source"
78
- *
79
- * Platform-specific parsing happens here
80
- * Output is raw, unstructured data
81
- */
82
- abstract extract(filePath: string): Promise<RawIntelligence>;
83
- /**
84
- * PHASE 3: FILTERING
85
- *
86
- * "Transform raw data → structured intelligence"
87
- * "Validate, score, enrich"
88
- *
89
- * This is where POOR → RICH transformation happens:
90
- * - Auto-correct typos
91
- * - Fill missing context (6 W's)
92
- * - Ask clarifying questions (minimal friction)
93
- * - Calculate quality scores
94
- */
95
- abstract filter(raw: RawIntelligence): Promise<StructuredIntelligence>;
96
- /**
97
- * PHASE 4: GENERATION
98
- *
99
- * "Output championship .faf"
100
- *
101
- * Converts structured intelligence → YAML .faf file
102
- * Target: 85%+ score (🥉 Bronze or better)
103
- */
104
- generate(intelligence: StructuredIntelligence): string;
105
- /**
106
- * THE COMPLETE FLOW
107
- *
108
- * Orchestrates all 4 phases
109
- */
110
- process(filePath: string): Promise<string>;
111
- /**
112
- * Helper: Convert structured intelligence → YAML
113
- */
114
- protected toYAML(intelligence: StructuredIntelligence): string;
115
- /**
116
- * Helper: Calculate quality scores
117
- *
118
- * Used in FILTERING phase
119
- */
120
- protected calculateScores(data: Partial<StructuredIntelligence>): {
121
- faf_score: number;
122
- ai_compatibility_score: number;
123
- completeness_score: number;
124
- };
125
- }
126
- /**
127
- * Example: n8n Workflow Intelligence Generator
128
- *
129
- * Extends the universal pattern for n8n-specific processing
130
- */
131
- export declare class N8nIntelligenceGenerator extends UniversalIntelligenceGenerator {
132
- detect(filePath: string): Promise<boolean>;
133
- extract(filePath: string): Promise<RawIntelligence>;
134
- filter(raw: RawIntelligence): Promise<StructuredIntelligence>;
135
- }
136
- /**
137
- * Example: OpenAI Assistant Intelligence Generator
138
- *
139
- * Same universal pattern, different input adapter
140
- */
141
- export declare class OpenAIAssistantGenerator extends UniversalIntelligenceGenerator {
142
- detect(filePath: string): Promise<boolean>;
143
- extract(filePath: string): Promise<RawIntelligence>;
144
- filter(raw: RawIntelligence): Promise<StructuredIntelligence>;
145
- private extractActions;
146
- private extractTools;
147
- }
148
- /**
149
- * Factory: Auto-detect and return appropriate generator
150
- */
151
- export declare function createGenerator(filePath: string): Promise<UniversalIntelligenceGenerator | null>;
152
- /**
153
- * Main entry point: Process any file → .faf
154
- */
155
- export declare function generateFafFromAny(filePath: string): Promise<string>;
156
- //# sourceMappingURL=universal-intelligence-generator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"universal-intelligence-generator.d.ts","sourceRoot":"","sources":["../../src/core/universal-intelligence-generator.ts"],"names":[],"mappings":"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"}
@@ -1,352 +0,0 @@
1
- "use strict";
2
- /**
3
- * 🏆 UNIVERSAL INTELLIGENCE GENERATOR
4
- *
5
- * THE foundational pattern that applies to EVERYTHING:
6
- * - Code projects (package.json, tsconfig, etc.)
7
- * - Automation workflows (n8n, Make, Opal, OpenAI)
8
- * - Documentation centers (markdown, wikis)
9
- * - API specifications (OpenAPI, GraphQL)
10
- * - ANY project that needs AI context
11
- *
12
- * Pattern: interrogation → extraction → filtering → generation
13
- * Output: ALWAYS .faf (universal container for structured intelligence)
14
- *
15
- * FOUNDATIONAL FIRST, UNIVERSAL BY DEFAULT
16
- */
17
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- var desc = Object.getOwnPropertyDescriptor(m, k);
20
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
- desc = { enumerable: true, get: function() { return m[k]; } };
22
- }
23
- Object.defineProperty(o, k2, desc);
24
- }) : (function(o, m, k, k2) {
25
- if (k2 === undefined) k2 = k;
26
- o[k2] = m[k];
27
- }));
28
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
- Object.defineProperty(o, "default", { enumerable: true, value: v });
30
- }) : function(o, v) {
31
- o["default"] = v;
32
- });
33
- var __importStar = (this && this.__importStar) || (function () {
34
- var ownKeys = function(o) {
35
- ownKeys = Object.getOwnPropertyNames || function (o) {
36
- var ar = [];
37
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
38
- return ar;
39
- };
40
- return ownKeys(o);
41
- };
42
- return function (mod) {
43
- if (mod && mod.__esModule) return mod;
44
- var result = {};
45
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
46
- __setModuleDefault(result, mod);
47
- return result;
48
- };
49
- })();
50
- Object.defineProperty(exports, "__esModule", { value: true });
51
- exports.OpenAIAssistantGenerator = exports.N8nIntelligenceGenerator = exports.UniversalIntelligenceGenerator = void 0;
52
- exports.createGenerator = createGenerator;
53
- exports.generateFafFromAny = generateFafFromAny;
54
- /**
55
- * Base class implementing the universal pattern
56
- *
57
- * All input adapters (n8n, Make, Opal, etc.) extend this
58
- */
59
- class UniversalIntelligenceGenerator {
60
- /**
61
- * PHASE 4: GENERATION
62
- *
63
- * "Output championship .faf"
64
- *
65
- * Converts structured intelligence → YAML .faf file
66
- * Target: 85%+ score (🥉 Bronze or better)
67
- */
68
- generate(intelligence) {
69
- // Universal YAML generation
70
- return this.toYAML(intelligence);
71
- }
72
- /**
73
- * THE COMPLETE FLOW
74
- *
75
- * Orchestrates all 4 phases
76
- */
77
- async process(filePath) {
78
- // 1. INTERROGATION
79
- const canProcess = await this.detect(filePath);
80
- if (!canProcess) {
81
- throw new Error(`Cannot process file: ${filePath}`);
82
- }
83
- // 2. EXTRACTION
84
- const raw = await this.extract(filePath);
85
- // 3. FILTERING
86
- const structured = await this.filter(raw);
87
- // 4. GENERATION
88
- const fafContent = this.generate(structured);
89
- return fafContent;
90
- }
91
- /**
92
- * Helper: Convert structured intelligence → YAML
93
- */
94
- toYAML(intelligence) {
95
- const yaml = require('yaml');
96
- return yaml.stringify(intelligence);
97
- }
98
- /**
99
- * Helper: Calculate quality scores
100
- *
101
- * Used in FILTERING phase
102
- */
103
- calculateScores(data) {
104
- // Count filled fields
105
- let totalSlots = 0;
106
- let filledSlots = 0;
107
- // Project slots (required)
108
- totalSlots += 3; // name, type, goal
109
- if (data.project?.name)
110
- filledSlots++;
111
- if (data.project?.type)
112
- filledSlots++;
113
- if (data.project?.goal)
114
- filledSlots++;
115
- // Human context slots (6 W's - critical)
116
- totalSlots += 6;
117
- if (data.human_context?.who)
118
- filledSlots++;
119
- if (data.human_context?.what)
120
- filledSlots++;
121
- if (data.human_context?.why)
122
- filledSlots++;
123
- if (data.human_context?.where)
124
- filledSlots++;
125
- if (data.human_context?.when)
126
- filledSlots++;
127
- if (data.human_context?.how)
128
- filledSlots++;
129
- // Architecture slots (if applicable)
130
- if (data.architecture) {
131
- totalSlots += 2;
132
- if (data.architecture.pattern)
133
- filledSlots++;
134
- if (data.architecture.components?.length)
135
- filledSlots++;
136
- }
137
- // Tech stack slots (if applicable)
138
- if (data.tech_stack && Object.keys(data.tech_stack).length > 0) {
139
- totalSlots += Object.keys(data.tech_stack).length;
140
- filledSlots += Object.values(data.tech_stack).filter(v => v).length;
141
- }
142
- const faf_score = Math.round((filledSlots / totalSlots) * 100);
143
- return {
144
- faf_score,
145
- ai_compatibility_score: faf_score, // Aligned for now
146
- completeness_score: faf_score, // Aligned for now
147
- };
148
- }
149
- }
150
- exports.UniversalIntelligenceGenerator = UniversalIntelligenceGenerator;
151
- /**
152
- * Example: n8n Workflow Intelligence Generator
153
- *
154
- * Extends the universal pattern for n8n-specific processing
155
- */
156
- class N8nIntelligenceGenerator extends UniversalIntelligenceGenerator {
157
- async detect(filePath) {
158
- // Check if file is n8n workflow JSON
159
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
160
- try {
161
- const content = await fs.readFile(filePath, 'utf-8');
162
- const json = JSON.parse(content);
163
- return !!(json.nodes && json.connections);
164
- }
165
- catch {
166
- return false;
167
- }
168
- }
169
- async extract(filePath) {
170
- // Use existing n8n analyzer (compiled in dist)
171
- const { N8nWorkflowAnalyzer } = await Promise.resolve().then(() => __importStar(require('../../dist/enrichment/n8n-analyzer')));
172
- const workflow = await N8nWorkflowAnalyzer.parse(filePath);
173
- const pattern = N8nWorkflowAnalyzer.detectPattern(workflow);
174
- return {
175
- data: {
176
- workflow,
177
- pattern,
178
- aiModels: N8nWorkflowAnalyzer.extractAIModels(workflow),
179
- infrastructure: N8nWorkflowAnalyzer.extractInfrastructure(workflow),
180
- triggers: N8nWorkflowAnalyzer.extractTriggers(workflow),
181
- nodes: N8nWorkflowAnalyzer.groupNodes(workflow),
182
- tools: N8nWorkflowAnalyzer.extractToolCapabilities(workflow),
183
- decisionPoints: N8nWorkflowAnalyzer.extractDecisionPoints(workflow),
184
- memory: N8nWorkflowAnalyzer.extractMemoryRequirements(workflow),
185
- },
186
- confidence: 95,
187
- metadata: {
188
- source_type: 'n8n-workflow',
189
- source_file: filePath,
190
- extracted_at: new Date().toISOString(),
191
- },
192
- };
193
- }
194
- async filter(raw) {
195
- const { workflow, pattern, aiModels, infrastructure } = raw.data;
196
- // Use existing n8n-faf-generator for RICH transformation
197
- // This already does: questions → auto-correct → 6 W's filling
198
- const { N8nFafGenerator } = await Promise.resolve().then(() => __importStar(require('../../dist/enrichment/n8n-faf-generator')));
199
- const generator = new N8nFafGenerator();
200
- // Generate full .faf (includes human context enrichment)
201
- // NOTE: N8nFafGenerator.generate() returns FILE PATH, not content
202
- const outputPath = await generator.generate({
203
- workflowFile: raw.metadata.source_file,
204
- quiet: true, // Quiet mode for tests
205
- });
206
- // Read the generated file
207
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
208
- const fafYAML = await fs.readFile(outputPath, 'utf-8');
209
- // Parse back to structured format
210
- const yaml = require('yaml');
211
- const structured = yaml.parse(fafYAML);
212
- return structured;
213
- }
214
- }
215
- exports.N8nIntelligenceGenerator = N8nIntelligenceGenerator;
216
- /**
217
- * Example: OpenAI Assistant Intelligence Generator
218
- *
219
- * Same universal pattern, different input adapter
220
- */
221
- class OpenAIAssistantGenerator extends UniversalIntelligenceGenerator {
222
- async detect(filePath) {
223
- // Detect OpenAI Assistant config (OpenAPI 3.1.0 schema)
224
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
225
- try {
226
- const content = await fs.readFile(filePath, 'utf-8');
227
- const json = JSON.parse(content);
228
- return !!(json.openapi && json.paths);
229
- }
230
- catch {
231
- return false;
232
- }
233
- }
234
- async extract(filePath) {
235
- // Parse OpenAPI schema
236
- const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
237
- const content = await fs.readFile(filePath, 'utf-8');
238
- const schema = JSON.parse(content);
239
- return {
240
- data: {
241
- schema,
242
- actions: this.extractActions(schema),
243
- tools: this.extractTools(schema),
244
- },
245
- confidence: 90,
246
- metadata: {
247
- source_type: 'openai-assistant',
248
- source_file: filePath,
249
- extracted_at: new Date().toISOString(),
250
- },
251
- };
252
- }
253
- async filter(raw) {
254
- const { schema, actions, tools } = raw.data;
255
- // Transform to universal .faf structure
256
- const structured = {
257
- project: {
258
- name: schema.info?.title || 'OpenAI Assistant',
259
- type: 'openai-assistant',
260
- goal: schema.info?.description || 'AI assistant with custom actions',
261
- },
262
- architecture: {
263
- pattern: 'AI Assistant',
264
- components: actions.map((a) => a.name),
265
- },
266
- tech_stack: {
267
- platform: 'OpenAI Assistants API',
268
- schema_version: schema.openapi,
269
- },
270
- human_context: {
271
- who: 'AI Assistant Developer',
272
- what: schema.info?.title || 'OpenAI Assistant',
273
- why: schema.info?.description || 'Custom AI assistant functionality',
274
- where: 'OpenAI Platform',
275
- when: 'Production',
276
- how: `OpenAPI schema with ${actions.length} custom actions`,
277
- },
278
- source_data: raw.data,
279
- scores: this.calculateScores({
280
- project: {
281
- name: schema.info?.title,
282
- type: 'openai-assistant',
283
- goal: schema.info?.description,
284
- },
285
- human_context: {
286
- who: 'AI Assistant Developer',
287
- what: schema.info?.title,
288
- why: schema.info?.description,
289
- where: 'OpenAI Platform',
290
- when: 'Production',
291
- how: `OpenAPI schema with ${actions.length} custom actions`,
292
- },
293
- }),
294
- generated: new Date().toISOString(),
295
- faf_version: '3.0.1',
296
- };
297
- return structured;
298
- }
299
- extractActions(schema) {
300
- const actions = [];
301
- for (const [path, methods] of Object.entries(schema.paths || {})) {
302
- for (const [method, details] of Object.entries(methods)) {
303
- actions.push({
304
- name: details.operationId || `${method.toUpperCase()} ${path}`,
305
- path,
306
- method,
307
- description: details.description,
308
- });
309
- }
310
- }
311
- return actions;
312
- }
313
- extractTools(schema) {
314
- // Extract tool names from action IDs
315
- return this.extractActions(schema).map(a => a.name);
316
- }
317
- }
318
- exports.OpenAIAssistantGenerator = OpenAIAssistantGenerator;
319
- /**
320
- * Factory: Auto-detect and return appropriate generator
321
- */
322
- async function createGenerator(filePath) {
323
- // Import all platform adapters
324
- const { OpalMiniAppGenerator, MakeScenarioGenerator, CodeProjectGenerator, } = await Promise.resolve().then(() => __importStar(require('./platform-adapters')));
325
- const generators = [
326
- // Automation platforms
327
- new N8nIntelligenceGenerator(),
328
- new OpalMiniAppGenerator(),
329
- new MakeScenarioGenerator(),
330
- // AI assistants
331
- new OpenAIAssistantGenerator(),
332
- // Code projects (fallback)
333
- new CodeProjectGenerator(),
334
- ];
335
- for (const generator of generators) {
336
- if (await generator.detect(filePath)) {
337
- return generator;
338
- }
339
- }
340
- return null;
341
- }
342
- /**
343
- * Main entry point: Process any file → .faf
344
- */
345
- async function generateFafFromAny(filePath) {
346
- const generator = await createGenerator(filePath);
347
- if (!generator) {
348
- throw new Error(`No generator found for file: ${filePath}`);
349
- }
350
- return generator.process(filePath);
351
- }
352
- //# sourceMappingURL=universal-intelligence-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"universal-intelligence-generator.js","sourceRoot":"","sources":["../../src/core/universal-intelligence-generator.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- /**
2
- * 🏎️ Auto-Corrector - Google-Style Typo Fixing
3
- *
4
- * Fixes common typos automatically (non-invasive, helpful)
5
- * Focuses on proper nouns and technical terms
6
- */
7
- import { ThreeQuestions } from './question-asker';
8
- export declare class AutoCorrector {
9
- private commonFixes;
10
- constructor();
11
- /**
12
- * Fix typos in all 3 answers
13
- */
14
- fix(answers: ThreeQuestions): ThreeQuestions;
15
- /**
16
- * Fix typos in a single string
17
- */
18
- private fixString;
19
- /**
20
- * Escape special regex characters
21
- */
22
- private escapeRegex;
23
- /**
24
- * Get list of corrections made (for debugging)
25
- */
26
- getCorrections(original: string, fixed: string): string[];
27
- }
28
- //# sourceMappingURL=auto-corrector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto-corrector.d.ts","sourceRoot":"","sources":["../../src/enrichment/auto-corrector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAsB;;IAiDzC;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc;IAQ5C;;OAEG;IACH,OAAO,CAAC,SAAS;IAwBjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CAY1D"}
@@ -1,106 +0,0 @@
1
- "use strict";
2
- /**
3
- * 🏎️ Auto-Corrector - Google-Style Typo Fixing
4
- *
5
- * Fixes common typos automatically (non-invasive, helpful)
6
- * Focuses on proper nouns and technical terms
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.AutoCorrector = void 0;
10
- class AutoCorrector {
11
- commonFixes;
12
- constructor() {
13
- // Common typos/variations in automation/AI space
14
- this.commonFixes = new Map([
15
- // AI/ML Companies & Products
16
- ['hermozis', 'Hormozi'],
17
- ['hermozi', 'Hormozi'],
18
- ['alexhormozi', 'Alex Hormozi'],
19
- ['anthropic', 'Anthropic'],
20
- ['openai', 'OpenAI'],
21
- ['chatgpt', 'ChatGPT'],
22
- // Vector DBs
23
- ['pinecone', 'Pinecone'],
24
- ['weaviate', 'Weaviate'],
25
- ['qdrant', 'Qdrant'],
26
- ['milvus', 'Milvus'],
27
- // Models
28
- ['claude', 'Claude'],
29
- ['sonnet', 'Sonnet'],
30
- ['gpt4', 'GPT-4'],
31
- ['gpt-4', 'GPT-4'],
32
- ['gemini', 'Gemini'],
33
- // Tools
34
- ['n8n', 'n8n'], // preserve lowercase!
35
- ['zapier', 'Zapier'],
36
- ['makecom', 'Make.com'],
37
- ['make.com', 'Make.com'],
38
- // Concepts
39
- ['rag', 'RAG'],
40
- ['etl', 'ETL'],
41
- ['api', 'API'],
42
- ['llm', 'LLM'],
43
- ['ai', 'AI'],
44
- // Common words
45
- ['webhook', 'webhook'],
46
- ['webhooks', 'webhooks'],
47
- ['postgres', 'PostgreSQL'],
48
- ['postgresql', 'PostgreSQL'],
49
- ['mongodb', 'MongoDB'],
50
- ['mysql', 'MySQL']
51
- ]);
52
- }
53
- /**
54
- * Fix typos in all 3 answers
55
- */
56
- fix(answers) {
57
- return {
58
- useCase: this.fixString(answers.useCase),
59
- issues: this.fixString(answers.issues),
60
- other: this.fixString(answers.other)
61
- };
62
- }
63
- /**
64
- * Fix typos in a single string
65
- */
66
- fixString(text) {
67
- if (!text || text.trim().length === 0) {
68
- return text;
69
- }
70
- let fixed = text;
71
- // Case-insensitive replacement
72
- this.commonFixes.forEach((correct, typo) => {
73
- // Word boundary matching to avoid partial replacements
74
- const regex = new RegExp(`\\b${this.escapeRegex(typo)}\\b`, 'gi');
75
- fixed = fixed.replace(regex, (match) => {
76
- // Preserve case if user typed it correctly
77
- if (match === correct) {
78
- return match;
79
- }
80
- return correct;
81
- });
82
- });
83
- return fixed;
84
- }
85
- /**
86
- * Escape special regex characters
87
- */
88
- escapeRegex(str) {
89
- return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
90
- }
91
- /**
92
- * Get list of corrections made (for debugging)
93
- */
94
- getCorrections(original, fixed) {
95
- const corrections = [];
96
- this.commonFixes.forEach((correct, typo) => {
97
- const regex = new RegExp(`\\b${this.escapeRegex(typo)}\\b`, 'gi');
98
- if (regex.test(original) && original !== fixed) {
99
- corrections.push(`"${typo}" → "${correct}"`);
100
- }
101
- });
102
- return corrections;
103
- }
104
- }
105
- exports.AutoCorrector = AutoCorrector;
106
- //# sourceMappingURL=auto-corrector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto-corrector.js","sourceRoot":"","sources":["../../src/enrichment/auto-corrector.ts"],"names":[],"mappings":"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"}