UNPKG

trace.ai-cli

Version:

A powerful AI-powered CLI tool

126 lines (114 loc) • 4.6 kB
#!/usr/bin/env node const TraceAI = require('./cli/traceAI'); const { analyzeFile } = require('./services/fileAnalyzer'); const { analyzeFolderStructure } = require('./services/folderAnalyzer'); const { extractTextFromImage } = require('./services/imageService'); const { processWithAI } = require('./services/aiService'); // Handle CLI arguments async function handleCliArgs() { const args = process.argv.slice(2); if (args.length === 0) { const traceAI = new TraceAI(); await traceAI.start(); return; } const command = args[0]; if (command === 'file' && args[1]) { const filePath = args[1]; const query = args.slice(2).join(' '); try { console.log('šŸ“„ Analyzing file...'); const result = await analyzeFile(filePath, query); console.log('\nšŸ“„ File Analysis:'); console.log('=' .repeat(50)); console.log(result.text || result); console.log('=' .repeat(50)); } catch (error) { console.error('āŒ Error:', error.message); process.exit(1); } } else if (command === 'folder' && args[1]) { const folderPath = args[1]; const query = args.slice(2).join(' '); try { console.log('šŸ“ Analyzing folder...'); const result = await analyzeFolderStructure(folderPath, query); console.log('\nšŸ“ Folder Analysis:'); console.log('=' .repeat(50)); console.log(result.text); console.log('=' .repeat(50)); } catch (error) { console.error('āŒ Error:', error.message); process.exit(1); } } else if (command === 'image' && args[1]) { try { const imagePath = args[1]; const question = args.slice(2).join(' '); console.log('šŸ–¼ļø Analysing Image...'); const result = await extractTextFromImage(imagePath, question); console.log('\nšŸ–¼ļø Image Analysis:'); console.log('=' .repeat(50)); console.log(result); console.log('=' .repeat(50)); } catch (error) { console.error('āŒ Error:', error.message); process.exit(1); } } else if (command === 'ask') { const query = args.slice(1).join(' '); if (!query) { console.error('āŒ Please provide a question after "ask"'); process.exit(1); } try { console.log('Processing your question...'); const result = await processWithAI(query); console.log('\nTrace.Ai Response:'); console.log('=' .repeat(50)); console.log(result); console.log('=' .repeat(50)); } catch (error) { console.error('āŒ Error:', error.message); if (error.code === 'ENOENT') { console.error('File not found. Please check the path and try again.'); } process.exit(1); } } else { console.log('Trace.Ai - AI powered CLI tool '); console.log('\nUsage:'); console.log(' trace-ai - Start interactive mode'); console.log(' trace-ai file "path" question - Analyze a file'); console.log(' trace-ai folder "path" question - Analyze a folder'); console.log(' trace-ai image "path" - Analyze a image'); console.log(' trace-ai ask question - Ask a question'); console.log('\nExamples:'); console.log(' trace-ai file ./app.js'); console.log(' trace-ai file ./app.js explain this code"'); console.log(' trace-ai file ./app.js find security vulnerabilities'); console.log(' trace-ai folder ./project'); console.log(' trace-ai folder ./src what is the architecture?'); console.log(' trace-ai image screenshot.png'); console.log(' trace-ai ask Explain quantum computing'); } } // Error handling process.on('unhandledRejection', (reason, promise) => { console.error('āŒ Unhandled Rejection at:', promise, 'reason:', reason); }); process.on('uncaughtException', (error) => { console.error('āŒ Uncaught Exception:', error); process.exit(1); }); // Start the application if (require.main === module) { handleCliArgs().catch(console.error); } module.exports = { TraceAI, processWithAI, extractTextFromImage, analyzeFile, analyzeFolderStructure };