UNPKG

faf-cli

Version:

😽 TURBO-CAT: The Rapid Catalytic Converter • Project DNA ✨ for ANY AI • Fully Integrated with React, Next.js, Svelte, TypeScript, Vite & n8n • FREE FOREVER • 10,000+ developers • Championship Edition

247 lines 11.3 kB
"use strict"; /** * 🏆 faf fam - FAF Family Integration Marketplace * * Discovery, status, and marketplace for championship integrations */ Object.defineProperty(exports, "__esModule", { value: true }); exports.famCommand = famCommand; const colors_1 = require("../fix-once/colors"); const championship_style_1 = require("../utils/championship-style"); const registry_1 = require("../family/registry"); /** * Get tier emoji */ function getTierEmoji(tier) { const emojis = { trophy: '🏆', gold: '🥇', silver: '🥈', bronze: '🥉', }; return emojis[tier] || '⚪'; } /** * Format large numbers with commas */ function formatNumber(num) { return num.toLocaleString(); } /** * Check if integration requires TURBO */ function requiresTurbo(name) { // n8n is our LEAD integration requiring TURBO return name === 'n8n'; } /** * Main faf fam command - show integrations */ async function famCommand(subcommand, arg, options) { // Handle subcommands if (subcommand === 'show') { return await showIntegration(arg); } else if (subcommand === 'install') { return await installIntegration(arg); } // Default: List all integrations return await listIntegrations(options); } /** * List all integrations with status */ async function listIntegrations(options) { console.log(); console.log(championship_style_1.FAF_COLORS.fafCyan('🏆 FAF Family - Championship Integrations')); console.log(championship_style_1.FAF_COLORS.fafCyan('═'.repeat(50))); console.log(); try { // Get current directory for detection const projectPath = process.cwd(); const detected = await registry_1.integrationRegistry.detectAll(projectPath); const stats = registry_1.integrationRegistry.getStats(); // Show detected integrations in project if (detected.length > 0) { console.log(championship_style_1.FAF_COLORS.fafOrange('YOUR PROJECT:')); console.log(); detected.forEach((integration) => { const emoji = getTierEmoji(integration.tier); console.log(` ${colors_1.chalk.green('✅')} ${colors_1.chalk.bold(integration.displayName)}`); console.log(` ${emoji} ${colors_1.chalk.cyan(integration.tier)} tier`); console.log(` ${colors_1.chalk.gray(formatNumber(integration.weeklyAdoption) + ' weekly developers')}`); console.log(); }); // Show MCP recommendations const allMcpServers = detected.flatMap(d => d.mcpServers); if (allMcpServers.length > 0) { console.log(championship_style_1.FAF_COLORS.fafCyan(' 🎯 Recommended MCP Servers:')); allMcpServers.forEach(server => { console.log(` ${colors_1.chalk.gray('•')} ${colors_1.chalk.cyan(server)}`); }); console.log(); } console.log(colors_1.chalk.gray('─'.repeat(50))); console.log(); } else { console.log(championship_style_1.FAF_COLORS.fafOrange('YOUR PROJECT:')); console.log(); console.log(colors_1.chalk.gray(' No integrations detected in current project')); console.log(); console.log(colors_1.chalk.gray('─'.repeat(50))); console.log(); } // Show available integrations console.log(championship_style_1.FAF_COLORS.fafOrange('AVAILABLE INTEGRATIONS:')); console.log(); // Get all integrations and sort by weekly adoption const allIntegrations = Array.from(registry_1.integrationRegistry.integrations.values()) .sort((a, b) => b.weeklyAdoption - a.weeklyAdoption); // Filter out already detected ones for "available" section const notDetected = allIntegrations.filter(integration => !detected.find(d => d.name === integration.name)); if (notDetected.length > 0) { notDetected.forEach((integration) => { const emoji = getTierEmoji(integration.tier); const turboTag = requiresTurbo(integration.name) ? ` ${championship_style_1.FAF_COLORS.fafOrange('[TURBO ONLY]')}` : ''; console.log(` ${emoji} ${colors_1.chalk.bold(integration.displayName)}${turboTag}`); console.log(` ${colors_1.chalk.gray(integration.tier + ' tier • ' + formatNumber(integration.weeklyAdoption) + ' weekly developers')}`); console.log(` ${colors_1.chalk.gray(integration.mcpServers.length + ' MCP server(s) • ' + integration.contextContribution.length + ' context slots')}`); console.log(); }); } // Show registry stats console.log(colors_1.chalk.gray('─'.repeat(50))); console.log(); console.log(championship_style_1.FAF_COLORS.fafCyan('📊 ECOSYSTEM STATS:')); console.log(); console.log(` Total integrations: ${colors_1.chalk.cyan(stats.total.toString())}`); console.log(` Total reach: ${colors_1.chalk.cyan(formatNumber(stats.totalWeeklyAdoption))} developers/week`); console.log(); // Show tier breakdown console.log(' By tier:'); Object.entries(stats.byTier).forEach(([tier, count]) => { const emoji = getTierEmoji(tier); console.log(` ${emoji} ${tier}: ${colors_1.chalk.cyan(count.toString())}`); }); console.log(); // Show help console.log(colors_1.chalk.gray('─'.repeat(50))); console.log(); console.log(championship_style_1.FAF_COLORS.fafOrange('💡 COMMANDS:')); console.log(); console.log(` ${colors_1.chalk.cyan('faf fam')} ${colors_1.chalk.gray('# Show all integrations (this view)')}`); console.log(` ${colors_1.chalk.cyan('faf fam show react')} ${colors_1.chalk.gray('# Details about React integration')}`); console.log(` ${colors_1.chalk.cyan('faf fam install n8n')} ${colors_1.chalk.gray('# Install integration (coming soon)')}`); console.log(); } catch (error) { console.error(colors_1.chalk.red('❌ Error loading integrations:'), error); } } /** * Show details about a specific integration */ async function showIntegration(name) { console.log(); const integration = registry_1.integrationRegistry.get(name); if (!integration) { console.log(colors_1.chalk.red(`❌ Integration not found: ${name}`)); console.log(); console.log(championship_style_1.FAF_COLORS.fafOrange('💡 Available integrations:')); const all = registry_1.integrationRegistry.list(); all.forEach(n => console.log(` • ${n}`)); console.log(); return; } const emoji = getTierEmoji(integration.tier); const turboTag = requiresTurbo(integration.name) ? ` ${championship_style_1.FAF_COLORS.fafOrange('[TURBO ONLY]')}` : ''; console.log(championship_style_1.FAF_COLORS.fafCyan(`${emoji} ${integration.displayName}${turboTag}`)); console.log(championship_style_1.FAF_COLORS.fafCyan('═'.repeat(50))); console.log(); console.log(championship_style_1.FAF_COLORS.fafOrange('OVERVIEW:')); console.log(` Tier: ${colors_1.chalk.cyan(integration.tier)}`); console.log(` Quality Score: ${colors_1.chalk.cyan(integration.qualityScore + '/100')}`); console.log(` Weekly Adoption: ${colors_1.chalk.cyan(formatNumber(integration.weeklyAdoption))} developers`); console.log(); console.log(championship_style_1.FAF_COLORS.fafOrange('MCP SERVERS:')); integration.mcpServers.forEach(server => { console.log(` ${colors_1.chalk.cyan('•')} ${server}`); }); console.log(); console.log(championship_style_1.FAF_COLORS.fafOrange('CONTEXT CONTRIBUTION:')); console.log(` Fills ${colors_1.chalk.cyan(integration.contextContribution.length.toString())} .faf slots:`); integration.contextContribution.forEach(slot => { console.log(` ${colors_1.chalk.cyan('•')} ${slot}`); }); console.log(); // Check if detected in current project const projectPath = process.cwd(); const isDetected = await integration.detect(projectPath); if (isDetected) { console.log(colors_1.chalk.green('✅ DETECTED in your project!')); console.log(); } else { console.log(colors_1.chalk.gray('❌ Not detected in your project')); console.log(); } // Show TURBO info if applicable if (requiresTurbo(integration.name)) { console.log(championship_style_1.FAF_COLORS.fafOrange('🚀 TURBO FEATURE:')); console.log(` This integration requires ${colors_1.chalk.cyan('FAF TURBO')} ($19)`); console.log(); console.log(' What you get:'); console.log(` ${colors_1.chalk.cyan('✅')} ${integration.displayName} auto-detection`); console.log(` ${colors_1.chalk.cyan('✅')} MCP server recommendations`); console.log(` ${colors_1.chalk.cyan('✅')} Smart .faf context generation`); console.log(` ${colors_1.chalk.cyan('✅')} Priority integration updates`); console.log(); } console.log(colors_1.chalk.gray('─'.repeat(50))); console.log(); } /** * Install integration (placeholder for now) */ async function installIntegration(name) { console.log(); const integration = registry_1.integrationRegistry.get(name); if (!integration) { console.log(colors_1.chalk.red(`❌ Integration not found: ${name}`)); console.log(); return; } // Check if requires TURBO if (requiresTurbo(integration.name)) { console.log(championship_style_1.FAF_COLORS.fafOrange(`🥇 ${integration.displayName} Integration`)); console.log(); console.log(colors_1.chalk.yellow('⚠️ This integration requires FAF TURBO')); console.log(); console.log('What you get:'); console.log(` ${colors_1.chalk.cyan('✅')} Auto-detection and smart .faf generation`); console.log(` ${colors_1.chalk.cyan('✅')} MCP server setup (${integration.mcpServers.join(', ')})`); console.log(` ${colors_1.chalk.cyan('✅')} ${integration.contextContribution.length} context slots auto-filled`); console.log(` ${colors_1.chalk.cyan('✅')} Priority support and updates`); console.log(); console.log(championship_style_1.FAF_COLORS.fafOrange('💰 Upgrade to TURBO:')); console.log(` Visit: ${colors_1.chalk.cyan('https://faf.one/pricing')}`); console.log(); return; } // For free integrations (future) console.log(championship_style_1.FAF_COLORS.fafCyan(`🎯 Installing ${integration.displayName}...`)); console.log(); console.log(colors_1.chalk.yellow('⚠️ Installation feature coming soon!')); console.log(); console.log('For now:'); console.log(` 1. Add ${integration.displayName} to your project`); console.log(` 2. Run ${colors_1.chalk.cyan('faf init')} to detect it`); console.log(` 3. Run ${colors_1.chalk.cyan('faf fam')} to see it in YOUR PROJECT`); console.log(); } //# sourceMappingURL=fam.js.map