@versatil/sdlc-framework
Version:
š AI-Native SDLC framework with 11-MCP ecosystem, RAG memory, OPERA orchestration, and 6 specialized agents achieving ZERO CONTEXT LOSS. Features complete CI/CD pipeline with 7 GitHub workflows (MCP testing, security scanning, performance benchmarking),
130 lines (106 loc) ⢠4.32 kB
JavaScript
/**
* Analyze a file using VERSATIL Intelligence System
*/
const fs = require('fs');
const path = require('path');
async function analyzeFile() {
const filePath = process.argv[2];
if (!filePath) {
console.log('Usage: npm run analyze -- <file-path>');
console.log('Example: npm run analyze -- ./test/sample.js');
process.exit(1);
}
if (!fs.existsSync(filePath)) {
console.error(`Error: File not found: ${filePath}`);
process.exit(1);
}
const content = fs.readFileSync(filePath, 'utf8');
console.log(`
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā VERSATIL File Analysis ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Analyzing: ${filePath}
File size: ${content.length} bytes
Lines: ${content.split('\n').length}
Running intelligence system...
`);
// Dynamic import for ESM modules
const { createOrchestrator } = await import('../dist/intelligence/agent-orchestrator.js');
const orchestrator = createOrchestrator();
const result = await orchestrator.analyzeFile({
filePath,
content,
language: detectLanguage(filePath),
projectName: 'VERSATIL Test',
userRequest: 'Analyze this file'
});
console.log(`
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
Agent Selected: ${result.agent}
š Level 1 - Pattern Analysis Results:
Quality Score: ${result.level1.score}/100
Issues Found: ${result.level1.patterns.length}
Summary: ${result.level1.summary}
`);
if (result.level1.patterns.length > 0) {
console.log(`\nš Detected Issues:\n`);
result.level1.patterns.forEach((pattern, idx) => {
const icon = pattern.severity === 'critical' ? 'šØ' :
pattern.severity === 'high' ? 'ā ļø ' :
pattern.severity === 'medium' ? 'ā”' : 'ā¹ļø ';
console.log(` ${icon} [${pattern.severity.toUpperCase()}] Line ${pattern.line}`);
console.log(` ${pattern.message}`);
console.log(` š” ${pattern.suggestion}\n`);
});
}
if (result.level1.recommendations.length > 0) {
console.log(`\nšÆ Recommendations:\n`);
result.level1.recommendations.forEach(rec => {
console.log(` ${rec}`);
});
}
console.log(`\nš” Level 2 - Generated Prompt:`);
console.log(` Title: ${result.level2.title}`);
console.log(` Model: ${result.level2.model}`);
console.log(` Priority: ${result.level2.priority}`);
console.log(` Estimated Time: ${result.level2.estimatedTime}`);
if (result.level2.handoffSuggestions.length > 0) {
console.log(`\nš¤ Suggested Agent Handoffs:`);
result.level2.handoffSuggestions.forEach(handoff => {
console.log(` ā ${handoff}`);
});
}
console.log(`\nš Analysis Mode: ${result.mode}`);
console.log(`\nšÆ Next Steps:\n`);
result.nextSteps.forEach(step => {
console.log(` ${step}`);
});
console.log(`\nāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n`);
console.log(`ā
Analysis Complete!\n`);
const statusEmoji = result.level1.score >= 80 ? 'š¢' :
result.level1.score >= 60 ? 'š”' : 'š“';
console.log(`${statusEmoji} Overall Quality: ${result.level1.score}/100\n`);
}
function detectLanguage(filePath) {
const ext = path.extname(filePath).toLowerCase();
const langMap = {
'.js': 'javascript',
'.jsx': 'javascriptreact',
'.ts': 'typescript',
'.tsx': 'typescriptreact',
'.py': 'python',
'.java': 'java',
'.go': 'go',
'.rs': 'rust',
'.php': 'php',
'.rb': 'ruby',
'.vue': 'vue',
'.svelte': 'svelte'
};
return langMap[ext] || 'plaintext';
}
analyzeFile().catch(err => {
console.error('Error during analysis:', err.message);
process.exit(1);
});