faf-cli 3.0.5 → 3.0.6

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 (67) hide show
  1. package/README.md +41 -9
  2. package/dist/big-orange/bigo-push.d.ts +18 -0
  3. package/dist/big-orange/bigo-push.d.ts.map +1 -0
  4. package/dist/big-orange/bigo-push.js +88 -0
  5. package/dist/big-orange/bigo-push.js.map +1 -0
  6. package/dist/big-orange/compare.d.ts +11 -0
  7. package/dist/big-orange/compare.d.ts.map +1 -0
  8. package/dist/big-orange/compare.js +174 -0
  9. package/dist/big-orange/compare.js.map +1 -0
  10. package/dist/big-orange/faf-generator.d.ts +22 -0
  11. package/dist/big-orange/faf-generator.d.ts.map +1 -0
  12. package/dist/big-orange/faf-generator.js +215 -0
  13. package/dist/big-orange/faf-generator.js.map +1 -0
  14. package/dist/big-orange/index.d.ts +7 -0
  15. package/dist/big-orange/index.d.ts.map +1 -0
  16. package/dist/big-orange/index.js +96 -0
  17. package/dist/big-orange/index.js.map +1 -0
  18. package/dist/big-orange/types.d.ts +62 -0
  19. package/dist/big-orange/types.d.ts.map +1 -0
  20. package/dist/big-orange/types.js +7 -0
  21. package/dist/big-orange/types.js.map +1 -0
  22. package/dist/cli.js +0 -0
  23. package/package.json +4 -1
  24. package/dist/commands/create.d.ts +0 -13
  25. package/dist/commands/create.d.ts.map +0 -1
  26. package/dist/commands/create.js +0 -78
  27. package/dist/commands/create.js.map +0 -1
  28. package/dist/core/platform-adapters.d.ts +0 -76
  29. package/dist/core/platform-adapters.d.ts.map +0 -1
  30. package/dist/core/platform-adapters.js +0 -407
  31. package/dist/core/platform-adapters.js.map +0 -1
  32. package/dist/core/universal-intelligence-generator.d.ts +0 -156
  33. package/dist/core/universal-intelligence-generator.d.ts.map +0 -1
  34. package/dist/core/universal-intelligence-generator.js +0 -352
  35. package/dist/core/universal-intelligence-generator.js.map +0 -1
  36. package/dist/enrichment/auto-corrector.d.ts +0 -28
  37. package/dist/enrichment/auto-corrector.d.ts.map +0 -1
  38. package/dist/enrichment/auto-corrector.js +0 -106
  39. package/dist/enrichment/auto-corrector.js.map +0 -1
  40. package/dist/enrichment/n8n-analyzer.d.ts +0 -259
  41. package/dist/enrichment/n8n-analyzer.d.ts.map +0 -1
  42. package/dist/enrichment/n8n-analyzer.js +0 -346
  43. package/dist/enrichment/n8n-analyzer.js.map +0 -1
  44. package/dist/enrichment/n8n-faf-generator.d.ts +0 -68
  45. package/dist/enrichment/n8n-faf-generator.d.ts.map +0 -1
  46. package/dist/enrichment/n8n-faf-generator.js +0 -354
  47. package/dist/enrichment/n8n-faf-generator.js.map +0 -1
  48. package/dist/enrichment/question-asker.d.ts +0 -22
  49. package/dist/enrichment/question-asker.d.ts.map +0 -1
  50. package/dist/enrichment/question-asker.js +0 -113
  51. package/dist/enrichment/question-asker.js.map +0 -1
  52. package/dist/enrichment/slot-filler.d.ts +0 -73
  53. package/dist/enrichment/slot-filler.d.ts.map +0 -1
  54. package/dist/enrichment/slot-filler.js +0 -253
  55. package/dist/enrichment/slot-filler.js.map +0 -1
  56. package/dist/scoring/championship-scorer.d.ts +0 -114
  57. package/dist/scoring/championship-scorer.d.ts.map +0 -1
  58. package/dist/scoring/championship-scorer.js +0 -380
  59. package/dist/scoring/championship-scorer.js.map +0 -1
  60. package/dist/scoring/score-calculator.d.ts +0 -29
  61. package/dist/scoring/score-calculator.d.ts.map +0 -1
  62. package/dist/scoring/score-calculator.js +0 -520
  63. package/dist/scoring/score-calculator.js.map +0 -1
  64. package/dist/tests/manual-validation.d.ts +0 -8
  65. package/dist/tests/manual-validation.d.ts.map +0 -1
  66. package/dist/tests/manual-validation.js +0 -114
  67. package/dist/tests/manual-validation.js.map +0 -1
@@ -1,68 +0,0 @@
1
- /**
2
- * 🏎️ n8n .faf Generator - THE Orchestrator
3
- *
4
- * Brings everything together:
5
- * 1. Analyzes n8n workflow (structure, pattern, tech stack)
6
- * 2. Asks 3 questions (minimal friction)
7
- * 3. Auto-corrects typos (helpful, non-invasive)
8
- * 4. Fills 6 W's (POOR → RICH transformation)
9
- * 5. Generates championship .faf (85%+ score)
10
- *
11
- * This is where the magic happens.
12
- */
13
- export interface GenerateOptions {
14
- workflowFile: string;
15
- outputFile?: string;
16
- quiet?: boolean;
17
- }
18
- export declare class N8nFafGenerator {
19
- private asker;
20
- private corrector;
21
- private filler;
22
- constructor();
23
- /**
24
- * Generate RICH .faf from n8n workflow JSON
25
- */
26
- generate(options: GenerateOptions): Promise<string>;
27
- /**
28
- * Generate the complete .faf document
29
- */
30
- private generateFafDocument;
31
- /**
32
- * Generate architecture components list
33
- */
34
- private generateComponents;
35
- /**
36
- * Extract credentials from workflow
37
- */
38
- private extractCredentials;
39
- /**
40
- * Generate flow description
41
- */
42
- private generateFlowDescription;
43
- /**
44
- * Build AI models map
45
- */
46
- private buildAIModelsMap;
47
- /**
48
- * Build infrastructure map
49
- */
50
- private buildInfrastructureMap;
51
- /**
52
- * Extract integrations (unique service types)
53
- */
54
- private extractIntegrations;
55
- /**
56
- * Generate known issues from Q2
57
- */
58
- private generateKnownIssues;
59
- /**
60
- * Generate AI instructions
61
- */
62
- private generateAIInstructions;
63
- /**
64
- * Calculate FAF scores
65
- */
66
- private calculateScores;
67
- }
68
- //# sourceMappingURL=n8n-faf-generator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"n8n-faf-generator.d.ts","sourceRoot":"","sources":["../../src/enrichment/n8n-faf-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,MAAM,CAAa;;IAQ3B;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA8FzD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8F3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,eAAe;CA0BxB"}
@@ -1,354 +0,0 @@
1
- "use strict";
2
- /**
3
- * 🏎️ n8n .faf Generator - THE Orchestrator
4
- *
5
- * Brings everything together:
6
- * 1. Analyzes n8n workflow (structure, pattern, tech stack)
7
- * 2. Asks 3 questions (minimal friction)
8
- * 3. Auto-corrects typos (helpful, non-invasive)
9
- * 4. Fills 6 W's (POOR → RICH transformation)
10
- * 5. Generates championship .faf (85%+ score)
11
- *
12
- * This is where the magic happens.
13
- */
14
- var __importDefault = (this && this.__importDefault) || function (mod) {
15
- return (mod && mod.__esModule) ? mod : { "default": mod };
16
- };
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.N8nFafGenerator = void 0;
19
- const fs_1 = require("fs");
20
- const path_1 = __importDefault(require("path"));
21
- const yaml_1 = require("../fix-once/yaml");
22
- const n8n_analyzer_1 = require("./n8n-analyzer");
23
- const question_asker_1 = require("./question-asker");
24
- const auto_corrector_1 = require("./auto-corrector");
25
- const slot_filler_1 = require("./slot-filler");
26
- const championship_style_1 = require("../utils/championship-style");
27
- class N8nFafGenerator {
28
- asker;
29
- corrector;
30
- filler;
31
- constructor() {
32
- this.asker = new question_asker_1.QuestionAsker();
33
- this.corrector = new auto_corrector_1.AutoCorrector();
34
- this.filler = new slot_filler_1.SlotFiller();
35
- }
36
- /**
37
- * Generate RICH .faf from n8n workflow JSON
38
- */
39
- async generate(options) {
40
- const { workflowFile, outputFile, quiet } = options;
41
- // 1. ANALYZE: Parse the workflow
42
- if (!quiet) {
43
- console.log();
44
- console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.rocket} Analyzing workflow...`));
45
- }
46
- const workflow = await n8n_analyzer_1.N8nWorkflowAnalyzer.parse(workflowFile);
47
- const pattern = n8n_analyzer_1.N8nWorkflowAnalyzer.detectPattern(workflow);
48
- const aiModels = n8n_analyzer_1.N8nWorkflowAnalyzer.extractAIModels(workflow);
49
- const infrastructure = n8n_analyzer_1.N8nWorkflowAnalyzer.extractInfrastructure(workflow);
50
- const triggers = n8n_analyzer_1.N8nWorkflowAnalyzer.extractTriggers(workflow);
51
- const groupedNodes = n8n_analyzer_1.N8nWorkflowAnalyzer.groupNodes(workflow);
52
- if (!quiet) {
53
- console.log(championship_style_1.FAF_COLORS.fafGreen(`${championship_style_1.FAF_ICONS.green_heart} n8n workflow detected`));
54
- console.log(championship_style_1.FAF_COLORS.fafWhite(` Nodes: ${workflow.nodes.length}`));
55
- console.log(championship_style_1.FAF_COLORS.fafWhite(` Pattern: ${pattern}`));
56
- if (aiModels.length > 0) {
57
- console.log(championship_style_1.FAF_COLORS.fafWhite(` AI Models: ${aiModels.join(', ')}`));
58
- }
59
- }
60
- // 2. ASK: Get human context (3 questions)
61
- const answers = await this.asker.ask3Questions();
62
- // 3. CORRECT: Fix typos
63
- if (!quiet) {
64
- console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.magic_wand} Enriching context...`));
65
- }
66
- const corrected = this.corrector.fix(answers);
67
- // Show corrections if any
68
- const corrections = this.corrector.getCorrections(answers.useCase, corrected.useCase);
69
- if (!quiet && corrections.length > 0) {
70
- console.log(championship_style_1.FAF_COLORS.fafOrange(` ${championship_style_1.FAF_ICONS.green_heart} Auto-corrected: ${corrections.join(', ')}`));
71
- }
72
- // 4. FILL: Generate 6 W's
73
- const sixWs = this.filler.fill6Ws(corrected.useCase, corrected.other, workflow, pattern, aiModels, infrastructure);
74
- if (!quiet) {
75
- console.log(championship_style_1.FAF_COLORS.fafGreen(` ${championship_style_1.FAF_ICONS.green_heart} Filled the 6 W's (who/what/why/where/when/how)`));
76
- }
77
- // 5. GENERATE: Create the .faf document
78
- const fafDoc = this.generateFafDocument(workflow, pattern, aiModels, infrastructure, triggers, groupedNodes, sixWs, corrected);
79
- if (!quiet) {
80
- console.log(championship_style_1.FAF_COLORS.fafGreen(` ${championship_style_1.FAF_ICONS.green_heart} Generated human_context`));
81
- console.log(championship_style_1.FAF_COLORS.fafGreen(` ${championship_style_1.FAF_ICONS.green_heart} Added tech_stack details`));
82
- console.log(championship_style_1.FAF_COLORS.fafGreen(` ${championship_style_1.FAF_ICONS.green_heart} Created known_issues`));
83
- if (pattern === 'RAG') {
84
- console.log(championship_style_1.FAF_COLORS.fafGreen(` ${championship_style_1.FAF_ICONS.green_heart} Added agent_context (AI-agent ready!)`));
85
- }
86
- }
87
- // 6. SAVE: Write to file
88
- const yamlContent = (0, yaml_1.stringify)(fafDoc);
89
- const finalOutputPath = outputFile || workflowFile.replace('.json', '.faf');
90
- await fs_1.promises.writeFile(finalOutputPath, yamlContent, 'utf-8');
91
- if (!quiet) {
92
- console.log();
93
- console.log(championship_style_1.FAF_COLORS.fafGreen(`${championship_style_1.FAF_ICONS.party} Created ${path_1.default.basename(finalOutputPath)} with ${fafDoc.scores.faf_score}% score!`));
94
- console.log();
95
- console.log(championship_style_1.FAF_COLORS.fafWhite(`📁 File: ${finalOutputPath}`));
96
- console.log(championship_style_1.FAF_COLORS.fafWhite(`🎯 Ready for: FAF-MCP indexing`));
97
- console.log();
98
- }
99
- return finalOutputPath;
100
- }
101
- /**
102
- * Generate the complete .faf document
103
- */
104
- generateFafDocument(workflow, pattern, aiModels, infrastructure, triggers, groupedNodes, sixWs, answers) {
105
- // Generate unique components list
106
- const components = this.generateComponents(pattern, triggers, groupedNodes);
107
- // Build credentials map
108
- const credentials = this.extractCredentials(workflow);
109
- // Extract flow description based on pattern
110
- const flowDescription = this.generateFlowDescription(workflow, pattern, triggers);
111
- // Build the document
112
- const fafDoc = {
113
- workflow_schema_version: '1.0.0',
114
- project: {
115
- name: workflow.name,
116
- type: 'n8n-workflow',
117
- workflow_file: path_1.default.basename(workflow.name || 'workflow') + '.json',
118
- purpose: `${sixWs.what} to ${sixWs.why}`
119
- },
120
- n8n_workflow: {
121
- name: workflow.name,
122
- workflow_id: workflow.id,
123
- version_id: workflow.versionId,
124
- status: workflow.meta?.instanceId ? 'active' : 'inactive',
125
- architecture: {
126
- pattern: pattern,
127
- components
128
- },
129
- triggers,
130
- nodes: {
131
- total: workflow.nodes.length,
132
- breakdown: groupedNodes
133
- },
134
- credentials_required: credentials,
135
- external_dependencies: {
136
- ai_models: aiModels.length > 0 ? aiModels : undefined,
137
- infrastructure: infrastructure.length > 0 ? infrastructure : undefined
138
- },
139
- flow_description: flowDescription
140
- },
141
- tech_stack: {
142
- workflow_engine: 'n8n',
143
- primary_language: 'JSON (workflow definition)',
144
- ai_models: this.buildAIModelsMap(aiModels),
145
- infrastructure: this.buildInfrastructureMap(infrastructure),
146
- integrations: this.extractIntegrations(workflow)
147
- },
148
- human_context: sixWs,
149
- known_issues: this.generateKnownIssues(answers.issues),
150
- ai_instructions: {
151
- message: this.generateAIInstructions(sixWs, pattern, workflow)
152
- },
153
- scores: this.calculateScores(sixWs, answers, workflow, pattern),
154
- generated: new Date().toISOString(),
155
- faf_version: '2.6.0'
156
- };
157
- // Add agent_context for AI workflows
158
- if (pattern === 'RAG' || pattern === 'Multi-Agent') {
159
- fafDoc.agent_context = {
160
- pattern: pattern,
161
- tools_available: n8n_analyzer_1.N8nWorkflowAnalyzer.extractToolCapabilities(workflow),
162
- decision_points: n8n_analyzer_1.N8nWorkflowAnalyzer.extractDecisionPoints(workflow),
163
- memory_required: n8n_analyzer_1.N8nWorkflowAnalyzer.extractMemoryRequirements(workflow)
164
- };
165
- }
166
- return fafDoc;
167
- }
168
- /**
169
- * Generate architecture components list
170
- */
171
- generateComponents(pattern, triggers, groupedNodes) {
172
- const components = [];
173
- // Add pattern-specific components
174
- if (pattern === 'RAG') {
175
- components.push('Knowledge ingestion pipeline');
176
- components.push('AI agent with vector tool access');
177
- }
178
- else if (pattern === 'Multi-Agent') {
179
- components.push('Multi-agent coordination');
180
- }
181
- else if (pattern === 'ETL') {
182
- components.push('Data extraction and transformation');
183
- }
184
- // Add trigger-based components
185
- if (triggers.some(t => t.type.toLowerCase().includes('webhook'))) {
186
- components.push('Webhook API for queries');
187
- }
188
- if (triggers.some(t => t.type.toLowerCase().includes('form'))) {
189
- components.push('Form-based input');
190
- }
191
- // Add from grouped nodes
192
- if (groupedNodes.core_agent && groupedNodes.core_agent.length > 0) {
193
- components.push('AI agent core');
194
- }
195
- return [...new Set(components)];
196
- }
197
- /**
198
- * Extract credentials from workflow
199
- */
200
- extractCredentials(workflow) {
201
- const creds = {};
202
- for (const node of workflow.nodes) {
203
- if (node.credentials) {
204
- Object.entries(node.credentials).forEach(([key, value]) => {
205
- creds[key] = `${node.name} access`;
206
- });
207
- }
208
- }
209
- return Object.keys(creds).length > 0 ? creds : undefined;
210
- }
211
- /**
212
- * Generate flow description
213
- */
214
- generateFlowDescription(workflow, pattern, triggers) {
215
- let description = '';
216
- if (pattern === 'RAG') {
217
- description = `KNOWLEDGE INGESTION PATH:\n`;
218
- description += `${triggers.filter(t => t.type.toLowerCase().includes('form')).length > 0 ? 'Form-based document upload\n' : ''}`;
219
- description += `\nQUERY PATH:\n`;
220
- description += `Webhook-triggered AI agent query processing with vector search and response generation\n`;
221
- }
222
- else {
223
- description = `Workflow with ${workflow.nodes.length} nodes, triggered by ${triggers.map(t => t.type).join(', ')}`;
224
- }
225
- return description;
226
- }
227
- /**
228
- * Build AI models map
229
- */
230
- buildAIModelsMap(aiModels) {
231
- if (aiModels.length === 0)
232
- return undefined;
233
- const map = {};
234
- aiModels.forEach((model, idx) => {
235
- if (model.toLowerCase().includes('claude')) {
236
- map.llm = model;
237
- }
238
- else if (model.toLowerCase().includes('embedding')) {
239
- map.embeddings = model;
240
- }
241
- else if (model.toLowerCase().includes('rerank')) {
242
- map.reranker = model;
243
- }
244
- else if (!map.llm) {
245
- map.llm = model;
246
- }
247
- });
248
- return map;
249
- }
250
- /**
251
- * Build infrastructure map
252
- */
253
- buildInfrastructureMap(infrastructure) {
254
- if (infrastructure.length === 0)
255
- return undefined;
256
- const map = {};
257
- infrastructure.forEach(infra => {
258
- if (infra.toLowerCase().includes('vector')) {
259
- map.vector_db = infra;
260
- }
261
- else if (infra.toLowerCase().includes('postgres') || infra.toLowerCase().includes('mysql') || infra.toLowerCase().includes('mongo')) {
262
- map.database = infra;
263
- }
264
- else if (infra.toLowerCase().includes('webhook')) {
265
- map.webhook_server = infra;
266
- }
267
- });
268
- return map;
269
- }
270
- /**
271
- * Extract integrations (unique service types)
272
- */
273
- extractIntegrations(workflow) {
274
- const integrations = new Set();
275
- for (const node of workflow.nodes) {
276
- const type = node.type;
277
- // Skip generic/internal nodes
278
- if (type.toLowerCase().includes('trigger') ||
279
- type.toLowerCase().includes('sticky') ||
280
- type.toLowerCase().includes('set') ||
281
- type.toLowerCase().includes('if')) {
282
- continue;
283
- }
284
- // Extract service name from node type
285
- const serviceName = type.replace(/^n8n-nodes-/, '').replace(/-/g, ' ');
286
- integrations.add(serviceName);
287
- }
288
- const list = Array.from(integrations);
289
- return list.length > 0 ? list : undefined;
290
- }
291
- /**
292
- * Generate known issues from Q2
293
- */
294
- generateKnownIssues(issuesText) {
295
- if (!issuesText || issuesText.trim().length === 0) {
296
- return [];
297
- }
298
- // Split by commas/semicolons
299
- const issues = issuesText.split(/[,;]/).map(issue => issue.trim()).filter(Boolean);
300
- return issues.map(issue => ({
301
- issue: issue,
302
- impact: 'User experience may be affected',
303
- solution: 'Needs investigation',
304
- priority: 'medium'
305
- }));
306
- }
307
- /**
308
- * Generate AI instructions
309
- */
310
- generateAIInstructions(sixWs, pattern, workflow) {
311
- let message = `This is ${sixWs.what}.\n\n`;
312
- message += `Purpose: ${sixWs.why}\n`;
313
- message += `Audience: ${sixWs.who}\n\n`;
314
- message += `WHEN DEBUGGING:\n`;
315
- message += `1. Check workflow triggers are configured correctly\n`;
316
- message += `2. Verify all credentials are set\n`;
317
- message += `3. Test with sample input\n\n`;
318
- message += `WHEN MODIFYING:\n`;
319
- message += `- Test thoroughly before deployment\n`;
320
- message += `- Update this .faf file with changes\n`;
321
- message += `- Document new issues discovered`;
322
- return message;
323
- }
324
- /**
325
- * Calculate FAF scores
326
- */
327
- calculateScores(sixWs, answers, workflow, pattern) {
328
- let score = 50; // Base
329
- // +5 for each W filled with good content
330
- Object.values(sixWs).forEach((value) => {
331
- if (value && value.length > 5)
332
- score += 5;
333
- });
334
- // +10 if issues documented
335
- if (answers.issues && answers.issues.length > 10)
336
- score += 10;
337
- // +10 if additional context
338
- if (answers.other && answers.other.length > 10)
339
- score += 10;
340
- // +5 for complex workflows
341
- if (workflow.nodes.length > 10)
342
- score += 5;
343
- // +5 for known patterns
344
- if (pattern !== 'Unknown')
345
- score += 5;
346
- return {
347
- faf_score: Math.min(score, 100),
348
- ai_compatibility_score: pattern === 'RAG' || pattern === 'Multi-Agent' ? 95 : 85,
349
- completeness_score: score
350
- };
351
- }
352
- }
353
- exports.N8nFafGenerator = N8nFafGenerator;
354
- //# sourceMappingURL=n8n-faf-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"n8n-faf-generator.js","sourceRoot":"","sources":["../../src/enrichment/n8n-faf-generator.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- /**
2
- * 🏎️ Question Asker - Championship 3-Question System
3
- *
4
- * Asks minimal questions to get maximum context
5
- * Uses inquirer for beautiful CLI interaction
6
- */
7
- export interface ThreeQuestions {
8
- useCase: string;
9
- issues: string;
10
- other: string;
11
- }
12
- export declare class QuestionAsker {
13
- /**
14
- * Ask the 3 championship questions
15
- */
16
- ask3Questions(): Promise<ThreeQuestions>;
17
- /**
18
- * Ask use case question ONLY (for quick mode)
19
- */
20
- askUseCaseOnly(): Promise<string>;
21
- }
22
- //# sourceMappingURL=question-asker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"question-asker.d.ts","sourceRoot":"","sources":["../../src/enrichment/question-asker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,aAAa;IAExB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IA8E9C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;CAkBxC"}
@@ -1,113 +0,0 @@
1
- "use strict";
2
- /**
3
- * 🏎️ Question Asker - Championship 3-Question System
4
- *
5
- * Asks minimal questions to get maximum context
6
- * Uses inquirer for beautiful CLI interaction
7
- */
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.QuestionAsker = void 0;
13
- const inquirer_1 = __importDefault(require("inquirer"));
14
- const colors_1 = require("../fix-once/colors");
15
- const championship_style_1 = require("../utils/championship-style");
16
- class QuestionAsker {
17
- /**
18
- * Ask the 3 championship questions
19
- */
20
- async ask3Questions() {
21
- // Check if we're in an interactive terminal
22
- if (!process.stdin.isTTY) {
23
- console.log();
24
- console.log(championship_style_1.FAF_COLORS.fafOrange('⚠️ Interactive questions require a terminal (TTY)'));
25
- console.log();
26
- console.log(championship_style_1.FAF_COLORS.fafWhite('💡 When using AI assistants or CI/CD:'));
27
- console.log(championship_style_1.FAF_COLORS.fafCyan(' faf init - Create basic .faf file'));
28
- console.log(championship_style_1.FAF_COLORS.fafCyan(' faf auto - Automatically enhance context'));
29
- console.log(championship_style_1.FAF_COLORS.fafCyan(' faf enhance - Improve .faf programmatically'));
30
- console.log();
31
- // Return minimal answers for non-interactive mode
32
- return {
33
- useCase: 'Workflow automation (run in terminal for interactive setup)',
34
- issues: '',
35
- other: ''
36
- };
37
- }
38
- console.log();
39
- console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.magic_wand} Now, 3 quick questions to make this championship-grade:\n`));
40
- const answers = await inquirer_1.default.prompt([
41
- {
42
- type: 'input',
43
- name: 'useCase',
44
- message: colors_1.chalk.bold('Q1: What\'s the use case for this workflow?'),
45
- validate: (input) => {
46
- if (!input || input.trim().length < 10) {
47
- return colors_1.chalk.red('Please provide at least 10 characters - this is the most important question!');
48
- }
49
- return true;
50
- },
51
- transformer: (input) => {
52
- // Show character count as they type
53
- return input.length > 0 ? `${input} ${colors_1.chalk.gray(`(${input.length} chars)`)}` : input;
54
- }
55
- },
56
- {
57
- type: 'input',
58
- name: 'issues',
59
- message: colors_1.chalk.bold('Q2: Any specific issues or problems?') + colors_1.chalk.gray(' (optional)'),
60
- default: '',
61
- transformer: (input) => {
62
- return input.length > 0 ? `${input} ${colors_1.chalk.gray(`(${input.length} chars)`)}` : colors_1.chalk.gray('(skip or type)');
63
- }
64
- },
65
- {
66
- type: 'input',
67
- name: 'other',
68
- message: colors_1.chalk.bold('Q3: Anything else important?') + colors_1.chalk.gray(' (optional)'),
69
- default: '',
70
- transformer: (input) => {
71
- return input.length > 0 ? `${input} ${colors_1.chalk.gray(`(${input.length} chars)`)}` : colors_1.chalk.gray('(skip or type)');
72
- }
73
- }
74
- ]);
75
- // Show confirmation
76
- console.log();
77
- if (answers.useCase && answers.useCase.length > 10) {
78
- console.log(championship_style_1.FAF_COLORS.fafGreen(`${championship_style_1.FAF_ICONS.green_heart} Got it!`));
79
- }
80
- if (answers.issues && answers.issues.length > 5) {
81
- console.log(championship_style_1.FAF_COLORS.fafGreen(`${championship_style_1.FAF_ICONS.green_heart} Noted!`));
82
- }
83
- if (answers.other && answers.other.length > 5) {
84
- console.log(championship_style_1.FAF_COLORS.fafGreen(`${championship_style_1.FAF_ICONS.green_heart} Perfect!`));
85
- }
86
- console.log();
87
- console.log(championship_style_1.FAF_COLORS.fafCyan('━'.repeat(60)));
88
- console.log();
89
- return answers;
90
- }
91
- /**
92
- * Ask use case question ONLY (for quick mode)
93
- */
94
- async askUseCaseOnly() {
95
- console.log();
96
- const answer = await inquirer_1.default.prompt([
97
- {
98
- type: 'input',
99
- name: 'useCase',
100
- message: colors_1.chalk.bold('What\'s the use case?'),
101
- validate: (input) => {
102
- if (!input || input.trim().length < 5) {
103
- return colors_1.chalk.red('Please describe what this does');
104
- }
105
- return true;
106
- }
107
- }
108
- ]);
109
- return answer.useCase;
110
- }
111
- }
112
- exports.QuestionAsker = QuestionAsker;
113
- //# sourceMappingURL=question-asker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"question-asker.js","sourceRoot":"","sources":["../../src/enrichment/question-asker.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,wDAAgC;AAChC,+CAA2C;AAC3C,oEAAoE;AAQpE,MAAa,aAAa;IAExB;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,4CAA4C;QAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,oDAAoD,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,kDAAkD;YAClD,OAAO;gBACL,OAAO,EAAE,6DAA6D;gBACtE,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,EAAE;aACV,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,GAAG,8BAAS,CAAC,UAAU,4DAA4D,CAAC,CAAC,CAAC;QAErH,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,cAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC;gBAClE,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;wBACvC,OAAO,cAAK,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;oBACnG,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,WAAW,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC7B,oCAAoC;oBACpC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,cAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBACxF,CAAC;aACF;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,cAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,GAAG,cAAK,CAAC,IAAI,CAAC,aAAa,CAAC;gBACvF,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC7B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,cAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,cAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC/G,CAAC;aACF;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,cAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,GAAG,cAAK,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC/E,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC7B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,cAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,cAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC/G,CAAC;aACF;SACF,CAAC,CAAC;QAEH,oBAAoB;QACpB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,GAAG,8BAAS,CAAC,WAAW,UAAU,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,GAAG,8BAAS,CAAC,WAAW,SAAS,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,GAAG,8BAAS,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,OAAO,OAAyB,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACnC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,cAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC;gBAC5C,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACtC,OAAO,cAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;oBACrD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;CACF;AAxGD,sCAwGC"}
@@ -1,73 +0,0 @@
1
- /**
2
- * 🏎️ Slot Filler - The 6 W's Intelligence
3
- *
4
- * Takes messy natural language and fills structured context slots
5
- * This is where POOR data becomes RICH data
6
- */
7
- import { N8nWorkflowRaw, WorkflowPattern } from './n8n-analyzer';
8
- export interface SixWs {
9
- who: string;
10
- what: string;
11
- why: string;
12
- where: string;
13
- when: string;
14
- how: string;
15
- }
16
- export interface ParsedIntent {
17
- subject: string;
18
- audience: string[];
19
- goal: string;
20
- context: string[];
21
- keywords: string[];
22
- }
23
- export declare class SlotFiller {
24
- /**
25
- * Fill all 6 W's from user input + workflow analysis
26
- */
27
- fill6Ws(useCase: string, other: string, workflow: N8nWorkflowRaw, pattern: WorkflowPattern, aiModels: string[], infrastructure: string[]): SixWs;
28
- /**
29
- * Parse natural language into intent components
30
- */
31
- private parseIntent;
32
- /**
33
- * Extract subject (what system/framework is this about?)
34
- */
35
- private extractSubject;
36
- /**
37
- * Extract audience (who is this for?)
38
- */
39
- private extractAudience;
40
- /**
41
- * Extract goal (why does this exist?)
42
- */
43
- private extractGoal;
44
- /**
45
- * Extract keywords for search
46
- */
47
- private extractKeywords;
48
- /**
49
- * Fill WHO slot
50
- */
51
- private fillWho;
52
- /**
53
- * Fill WHAT slot (infer from pattern + subject)
54
- */
55
- private fillWhat;
56
- /**
57
- * Fill WHY slot
58
- */
59
- private fillWhy;
60
- /**
61
- * Fill WHERE slot (infer from workflow structure)
62
- */
63
- private fillWhere;
64
- /**
65
- * Fill WHEN slot (infer from triggers)
66
- */
67
- private fillWhen;
68
- /**
69
- * Fill HOW slot (tech stack summary)
70
- */
71
- private fillHow;
72
- }
73
- //# sourceMappingURL=slot-filler.d.ts.map