faf-cli 2.5.4 → 3.0.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.
- package/README.md +506 -246
- package/assets/AI-Context /342/232/241/357/270/217 FASF AF.png +0 -0
- package/assets/Orange-Smiley copy.png +0 -0
- package/assets/Project-DNA-for-ANY-AI-1200x630.png +0 -0
- package/assets/ai-human-balance-50-50.png +0 -0
- package/assets/prd-balance-perfect-green.png +0 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +14 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/ai-analyze.js +2 -35
- package/dist/commands/ai-analyze.js.map +1 -1
- package/dist/commands/ai-enhance.d.ts.map +1 -1
- package/dist/commands/ai-enhance.js +5 -40
- package/dist/commands/ai-enhance.js.map +1 -1
- package/dist/commands/audit.js +2 -35
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/bi-sync.d.ts +1 -1
- package/dist/commands/bi-sync.js +5 -5
- package/dist/commands/bi-sync.js.map +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +11 -2
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/create.d.ts +13 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +78 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +6 -6
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/enhance-real.js +13 -3
- package/dist/commands/enhance-real.js.map +1 -1
- package/dist/commands/faf-recover.js +3 -3
- package/dist/commands/faf-recover.js.map +1 -1
- package/dist/commands/init.js +3 -36
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/lint.js +4 -37
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/search.js +2 -2
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/share.js +3 -3
- package/dist/commands/share.js.map +1 -1
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +3 -39
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/sync.js +4 -37
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/todo.js +2 -2
- package/dist/commands/todo.js.map +1 -1
- package/dist/commands/trust.d.ts +1 -1
- package/dist/commands/trust.js +3 -3
- package/dist/commands/trust.js.map +1 -1
- package/dist/commands/validate.js +2 -35
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/verify.js +2 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/compiler/faf-compiler.js +2 -2
- package/dist/compiler/faf-compiler.js.map +1 -1
- package/dist/converters/faf-converters.js +3 -3
- package/dist/converters/faf-converters.js.map +1 -1
- package/dist/engines/c-mirror/core/claude-to-faf.js +2 -35
- package/dist/engines/c-mirror/core/claude-to-faf.js.map +1 -1
- package/dist/engines/c-mirror/core/faf-to-claude.js +2 -35
- package/dist/engines/c-mirror/core/faf-to-claude.js.map +1 -1
- package/dist/engines/c-mirror/core/mirror-engine.js +3 -3
- package/dist/engines/c-mirror/core/mirror-engine.js.map +1 -1
- package/dist/engines/c-mirror/strategies/atomic-write.d.ts +3 -3
- package/dist/engines/c-mirror/strategies/atomic-write.js +4 -4
- package/dist/engines/c-mirror/strategies/atomic-write.js.map +1 -1
- package/dist/enrichment/auto-corrector.d.ts +28 -0
- package/dist/enrichment/auto-corrector.d.ts.map +1 -0
- package/dist/enrichment/auto-corrector.js +106 -0
- package/dist/enrichment/auto-corrector.js.map +1 -0
- package/dist/enrichment/n8n-analyzer.d.ts +259 -0
- package/dist/enrichment/n8n-analyzer.d.ts.map +1 -0
- package/dist/enrichment/n8n-analyzer.js +346 -0
- package/dist/enrichment/n8n-analyzer.js.map +1 -0
- package/dist/enrichment/n8n-faf-generator.d.ts +68 -0
- package/dist/enrichment/n8n-faf-generator.d.ts.map +1 -0
- package/dist/enrichment/n8n-faf-generator.js +354 -0
- package/dist/enrichment/n8n-faf-generator.js.map +1 -0
- package/dist/enrichment/question-asker.d.ts +22 -0
- package/dist/enrichment/question-asker.d.ts.map +1 -0
- package/dist/enrichment/question-asker.js +113 -0
- package/dist/enrichment/question-asker.js.map +1 -0
- package/dist/enrichment/slot-filler.d.ts +73 -0
- package/dist/enrichment/slot-filler.d.ts.map +1 -0
- package/dist/enrichment/slot-filler.js +253 -0
- package/dist/enrichment/slot-filler.js.map +1 -0
- package/dist/fix-once/yaml.d.ts +39 -36
- package/dist/fix-once/yaml.d.ts.map +1 -1
- package/dist/fix-once/yaml.js +117 -39
- package/dist/fix-once/yaml.js.map +1 -1
- package/dist/generators/faf-generator-championship.d.ts.map +1 -1
- package/dist/generators/faf-generator-championship.js +73 -3
- package/dist/generators/faf-generator-championship.js.map +1 -1
- package/dist/utils/announcements.d.ts.map +1 -1
- package/dist/utils/announcements.js +0 -5
- package/dist/utils/announcements.js.map +1 -1
- package/dist/utils/championship-style.js +1 -1
- package/dist/utils/championship-style.js.map +1 -1
- package/dist/utils/chrome-extension-confirmer.d.ts.map +1 -1
- package/dist/utils/chrome-extension-confirmer.js +15 -0
- package/dist/utils/chrome-extension-confirmer.js.map +1 -1
- package/dist/utils/email-opt-in.d.ts.map +1 -1
- package/dist/utils/email-opt-in.js +4 -2
- package/dist/utils/email-opt-in.js.map +1 -1
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +12 -0
- package/dist/utils/file-utils.js.map +1 -1
- package/dist/utils/vibe-sync.d.ts.map +1 -1
- package/dist/utils/vibe-sync.js +2 -1
- package/dist/utils/vibe-sync.js.map +1 -1
- package/package.json +13 -14
|
@@ -0,0 +1,354 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"n8n-faf-generator.js","sourceRoot":"","sources":["../../src/enrichment/n8n-faf-generator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;AAEH,2BAAoC;AACpC,gDAAwB;AACxB,2CAA8D;AAC9D,iDAAqF;AACrF,qDAAiE;AACjE,qDAAiD;AACjD,+CAA2C;AAC3C,oEAAoE;AAQpE,MAAa,eAAe;IAClB,KAAK,CAAgB;IACrB,SAAS,CAAgB;IACzB,MAAM,CAAa;IAE3B;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,8BAAa,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,8BAAa,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,wBAAU,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAEpD,iCAAiC;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,GAAG,8BAAS,CAAC,MAAM,wBAAwB,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,kCAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,kCAAmB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,kCAAmB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,kCAAmB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,kCAAmB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,kCAAmB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE9D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,GAAG,8BAAS,CAAC,WAAW,wBAAwB,CAAC,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,aAAa,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,iBAAiB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAEjD,wBAAwB;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,GAAG,8BAAS,CAAC,UAAU,uBAAuB,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE9C,0BAA0B;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QACtF,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,MAAM,8BAAS,CAAC,WAAW,oBAAoB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7G,CAAC;QAED,0BAA0B;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAC/B,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,KAAK,EACf,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,cAAc,CACf,CAAC;QAEF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,MAAM,8BAAS,CAAC,WAAW,iDAAiD,CAAC,CAAC,CAAC;QACjH,CAAC;QAED,wCAAwC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CACrC,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,SAAS,CACV,CAAC;QAEF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,MAAM,8BAAS,CAAC,WAAW,0BAA0B,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,MAAM,8BAAS,CAAC,WAAW,2BAA2B,CAAC,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,MAAM,8BAAS,CAAC,WAAW,uBAAuB,CAAC,CAAC,CAAC;YACrF,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,MAAM,8BAAS,CAAC,WAAW,wCAAwC,CAAC,CAAC,CAAC;YACxG,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,MAAM,WAAW,GAAG,IAAA,gBAAa,EAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,eAAe,GAAG,UAAU,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE5E,MAAM,aAAE,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAE1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,GAAG,8BAAS,CAAC,KAAK,YAAY,cAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC;YACzI,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,YAAY,eAAe,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,QAAwB,EACxB,OAAe,EACf,QAAkB,EAClB,cAAwB,EACxB,QAAe,EACf,YAAsC,EACtC,KAAU,EACV,OAAuB;QAGvB,kCAAkC;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAE5E,wBAAwB;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEtD,4CAA4C;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAElF,qBAAqB;QACrB,MAAM,MAAM,GAAmB;YAC7B,uBAAuB,EAAE,OAAO;YAEhC,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,cAAc;gBACpB,aAAa,EAAE,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAC,GAAG,OAAO;gBACnE,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG,EAAE;aACzC;YAED,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,WAAW,EAAE,QAAQ,CAAC,EAAE;gBACxB,UAAU,EAAE,QAAQ,CAAC,SAAS;gBAC9B,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;gBAEzD,YAAY,EAAE;oBACZ,OAAO,EAAE,OAAc;oBACvB,UAAU;iBACX;gBAED,QAAQ;gBAER,KAAK,EAAE;oBACL,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;oBAC5B,SAAS,EAAE,YAAY;iBACxB;gBAED,oBAAoB,EAAE,WAAW;gBAEjC,qBAAqB,EAAE;oBACrB,SAAS,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;oBACrD,cAAc,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;iBACvE;gBAED,gBAAgB,EAAE,eAAe;aAClC;YAED,UAAU,EAAE;gBACV,eAAe,EAAE,KAAK;gBACtB,gBAAgB,EAAE,4BAA4B;gBAC9C,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;gBAC1C,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC;gBAC3D,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;aACjD;YAED,aAAa,EAAE,KAAK;YAEpB,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;YAEtD,eAAe,EAAE;gBACf,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;aAC/D;YAED,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;YAE/D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,OAAO;SACrB,CAAC;QAEF,qCAAqC;QACrC,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YACnD,MAAM,CAAC,aAAa,GAAG;gBACrB,OAAO,EAAE,OAAc;gBACvB,eAAe,EAAE,kCAAmB,CAAC,uBAAuB,CAAC,QAAQ,CAAC;gBACtE,eAAe,EAAE,kCAAmB,CAAC,qBAAqB,CAAC,QAAQ,CAAC;gBACpE,eAAe,EAAE,kCAAmB,CAAC,yBAAyB,CAAC,QAAQ,CAAC;aACzE,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,OAAe,EAAE,QAAe,EAAE,YAAsC;QACjG,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,kCAAkC;QAClC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAChD,UAAU,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YAC7B,UAAU,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,+BAA+B;QAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACjE,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC9D,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAED,yBAAyB;QACzB,IAAI,YAAY,CAAC,UAAU,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,QAAwB;QACjD,MAAM,KAAK,GAA2B,EAAE,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBACxD,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,SAAS,CAAC;gBACrC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,QAAwB,EAAE,OAAe,EAAE,QAAe;QACxF,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,WAAW,GAAG,6BAA6B,CAAC;YAC5C,WAAW,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACjI,WAAW,IAAI,iBAAiB,CAAC;YACjC,WAAW,IAAI,0FAA0F,CAAC;QAC5G,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,iBAAiB,QAAQ,CAAC,KAAK,CAAC,MAAM,wBAAwB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,QAAkB;QACzC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAE5C,MAAM,GAAG,GAA2B,EAAE,CAAC;QAEvC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC;YAClB,CAAC;iBAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrD,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;YACzB,CAAC;iBAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;YACvB,CAAC;iBAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACpB,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,cAAwB;QACrD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAElD,MAAM,GAAG,GAA2B,EAAE,CAAC;QAEvC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC7B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;YACxB,CAAC;iBAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtI,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;YACvB,CAAC;iBAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,QAAwB;QAClD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QAEvC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAEvB,8BAA8B;YAC9B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACtC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,SAAS;YACX,CAAC;YAED,sCAAsC;YACtC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvE,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,UAAkB;QAC5C,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,6BAA6B;QAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnF,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1B,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,iCAAiC;YACzC,QAAQ,EAAE,qBAAqB;YAC/B,QAAQ,EAAE,QAAiB;SAC5B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,KAAU,EAAE,OAAe,EAAE,QAAwB;QAClF,IAAI,OAAO,GAAG,WAAW,KAAK,CAAC,IAAI,OAAO,CAAC;QAC3C,OAAO,IAAI,YAAY,KAAK,CAAC,GAAG,IAAI,CAAC;QACrC,OAAO,IAAI,aAAa,KAAK,CAAC,GAAG,MAAM,CAAC;QAExC,OAAO,IAAI,mBAAmB,CAAC;QAC/B,OAAO,IAAI,uDAAuD,CAAC;QACnE,OAAO,IAAI,qCAAqC,CAAC;QACjD,OAAO,IAAI,+BAA+B,CAAC;QAE3C,OAAO,IAAI,mBAAmB,CAAC;QAC/B,OAAO,IAAI,uCAAuC,CAAC;QACnD,OAAO,IAAI,wCAAwC,CAAC;QACpD,OAAO,IAAI,kCAAkC,CAAC;QAE9C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,KAAU,EAAE,OAAuB,EAAE,QAAwB,EAAE,OAAe;QACpG,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,OAAO;QAEvB,yCAAyC;QACzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;YAC1C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE;YAAE,KAAK,IAAI,EAAE,CAAC;QAE9D,4BAA4B;QAC5B,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;YAAE,KAAK,IAAI,EAAE,CAAC;QAE5D,2BAA2B;QAC3B,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;YAAE,KAAK,IAAI,CAAC,CAAC;QAE3C,wBAAwB;QACxB,IAAI,OAAO,KAAK,SAAS;YAAE,KAAK,IAAI,CAAC,CAAC;QAEtC,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC;YAC/B,sBAAsB,EAAE,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAChF,kBAAkB,EAAE,KAAK;SAC1B,CAAC;IACJ,CAAC;CACF;AA5ZD,0CA4ZC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot-filler.d.ts","sourceRoot":"","sources":["../../src/enrichment/slot-filler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjE,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,UAAU;IAErB;;OAEG;IACH,OAAO,CACL,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,MAAM,EAAE,EAClB,cAAc,EAAE,MAAM,EAAE,GACvB,KAAK;IAeR;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IA6BvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAyBnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,OAAO;IAoBf;;OAEG;IACH,OAAO,CAAC,QAAQ;IAkBhB;;OAEG;IACH,OAAO,CAAC,OAAO;IAIf;;OAEG;IACH,OAAO,CAAC,SAAS;IAgCjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IA+BhB;;OAEG;IACH,OAAO,CAAC,OAAO;CAsChB"}
|