vantaverse-ai-reviewer 0.2.0 → 0.2.1
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/dist/ai/agent.d.ts +1 -1
- package/dist/ai/agent.d.ts.map +1 -1
- package/dist/ai/agent.js +15 -5
- package/dist/ai/agent.js.map +1 -1
- package/dist/commands/scan.d.ts +2 -2
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +118 -42
- package/dist/commands/scan.js.map +1 -1
- package/dist/core/framework-detector.d.ts.map +1 -1
- package/dist/core/framework-detector.js +48 -17
- package/dist/core/framework-detector.js.map +1 -1
- package/dist/utils/interactive-logger.d.ts +49 -0
- package/dist/utils/interactive-logger.d.ts.map +1 -0
- package/dist/utils/interactive-logger.js +190 -0
- package/dist/utils/interactive-logger.js.map +1 -0
- package/package.json +1 -1
package/dist/ai/agent.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export declare class AIAgent {
|
|
|
37
37
|
/**
|
|
38
38
|
* Run the full analysis pipeline
|
|
39
39
|
*/
|
|
40
|
-
analyze(scanResult: ScanResult, onProgress?: (stage: string) => void): Promise<AgentResult>;
|
|
40
|
+
analyze(scanResult: ScanResult, onProgress?: (stage: string, detail?: string) => void): Promise<AgentResult>;
|
|
41
41
|
/**
|
|
42
42
|
* Run a single analysis type
|
|
43
43
|
*/
|
package/dist/ai/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/ai/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAIlF,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAWD;;GAEG;AACH,qBAAa,OAAO;IAChB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW;IAKrD;;OAEG;IACG,OAAO,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/ai/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAIlF,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAWD;;GAEG;AACH,qBAAa,OAAO;IAChB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW;IAKrD;;OAEG;IACG,OAAO,CACT,UAAU,EAAE,UAAU,EACtB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,GACtD,OAAO,CAAC,WAAW,CAAC;IAsDvB;;OAEG;YACW,WAAW;IAoDzB;;OAEG;IACH,OAAO,CAAC,0BAA0B;CAgCrC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,WAAW,CAAC,GAAG,OAAO,CASrI"}
|
package/dist/ai/agent.js
CHANGED
|
@@ -30,7 +30,7 @@ export class AIAgent {
|
|
|
30
30
|
const sections = [];
|
|
31
31
|
let totalTokens = 0;
|
|
32
32
|
// PHASE 1 OPTIMIZATION: Run local checks in parallel
|
|
33
|
-
onProgress?.('Running local checks in parallel...');
|
|
33
|
+
onProgress?.('local', '⚡ Running local checks in parallel...');
|
|
34
34
|
const [context, typeErrors, lintIssues] = await Promise.all([
|
|
35
35
|
gatherRepoContext(this.config.repoRoot),
|
|
36
36
|
runTypeCheck(this.config.repoRoot),
|
|
@@ -39,20 +39,26 @@ export class AIAgent {
|
|
|
39
39
|
// Add check results to context
|
|
40
40
|
if (typeErrors.length > 0) {
|
|
41
41
|
context['type_errors'] = `${typeErrors.length} TypeScript errors found`;
|
|
42
|
+
onProgress?.('local', `⚠️ Found ${typeErrors.length} TypeScript errors`);
|
|
42
43
|
}
|
|
43
44
|
if (lintIssues.length > 0) {
|
|
44
45
|
context['lint_issues'] = `${lintIssues.length} lint issues found`;
|
|
46
|
+
onProgress?.('local', `⚠️ Found ${lintIssues.length} lint issues`);
|
|
45
47
|
}
|
|
46
48
|
// Determine which files to analyze for each type
|
|
47
49
|
const filesByType = this.categorizeFilesForAnalysis(scanResult);
|
|
48
|
-
// Run each analysis type
|
|
50
|
+
// Run each analysis type with progress updates
|
|
49
51
|
for (const analysisType of this.config.analysisTypes) {
|
|
50
52
|
const files = filesByType[analysisType] || scanResult.files.slice(0, 20);
|
|
51
53
|
if (files.length === 0)
|
|
52
54
|
continue;
|
|
53
|
-
|
|
55
|
+
// Report start of this analysis phase
|
|
56
|
+
onProgress?.(analysisType, `🔍 Analyzing ${files.length} files...`);
|
|
57
|
+
const section = await this.runAnalysis(analysisType, files, context, onProgress);
|
|
54
58
|
sections.push(section);
|
|
55
59
|
totalTokens += section.tokensUsed;
|
|
60
|
+
// Report completion
|
|
61
|
+
onProgress?.(analysisType, `✅ ${SECTION_TITLES[analysisType]} complete`);
|
|
56
62
|
}
|
|
57
63
|
return {
|
|
58
64
|
sections,
|
|
@@ -66,14 +72,16 @@ export class AIAgent {
|
|
|
66
72
|
/**
|
|
67
73
|
* Run a single analysis type
|
|
68
74
|
*/
|
|
69
|
-
async runAnalysis(type, files, context) {
|
|
70
|
-
// Read file contents
|
|
75
|
+
async runAnalysis(type, files, context, onProgress) {
|
|
76
|
+
// Read file contents with progress updates
|
|
71
77
|
const fileContents = new Map();
|
|
72
78
|
let totalChars = 0;
|
|
73
79
|
for (const file of files) {
|
|
74
80
|
if (totalChars >= this.config.maxCharsPerBatch)
|
|
75
81
|
break;
|
|
76
82
|
try {
|
|
83
|
+
// Report file being read
|
|
84
|
+
onProgress?.(type, `📄 Reading ${file.relativePath}...`);
|
|
77
85
|
const content = await safeReadFile(file.path, this.config.repoRoot, 100 * 1024 // 100KB max per file
|
|
78
86
|
);
|
|
79
87
|
if (totalChars + content.length <= this.config.maxCharsPerBatch) {
|
|
@@ -89,6 +97,8 @@ export class AIAgent {
|
|
|
89
97
|
const basePrompt = getPrompt(type);
|
|
90
98
|
const frameworkHints = this.config.framework.description;
|
|
91
99
|
const prompt = createContextualPrompt(basePrompt, frameworkHints, context);
|
|
100
|
+
// Report AI thinking
|
|
101
|
+
onProgress?.(type, `🤖 AI is analyzing ${fileContents.size} files...`);
|
|
92
102
|
// Run analysis
|
|
93
103
|
const result = await this.client.analyzeMultiple(prompt, fileContents, '');
|
|
94
104
|
return {
|
package/dist/ai/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/ai/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAmB,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AA2B/E,MAAM,cAAc,GAA+B;IAC/C,QAAQ,EAAE,sBAAsB;IAChC,WAAW,EAAE,wBAAwB;IACrC,aAAa,EAAE,uBAAuB;IACtC,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE,4BAA4B;IACrC,QAAQ,EAAE,qBAAqB;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,OAAO;IACR,MAAM,CAAe;IACrB,MAAM,CAAc;IAE5B,YAAY,MAAoB,EAAE,MAAmB;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/ai/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/scan.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Scan Command - Main analysis command with
|
|
2
|
+
* Scan Command - Main analysis command with interactive CLI
|
|
3
3
|
*/
|
|
4
4
|
export interface ScanOptions {
|
|
5
5
|
output?: string;
|
|
@@ -13,7 +13,7 @@ export interface ScanOptions {
|
|
|
13
13
|
security?: boolean;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
* Execute the scan command
|
|
16
|
+
* Execute the scan command with interactive CLI
|
|
17
17
|
*/
|
|
18
18
|
export declare function scan(options?: ScanOptions): Promise<void>;
|
|
19
19
|
//# sourceMappingURL=scan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH,MAAM,WAAW,WAAW;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAuBD;;GAEG;AACH,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmSnE"}
|
package/dist/commands/scan.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Scan Command - Main analysis command with
|
|
2
|
+
* Scan Command - Main analysis command with interactive CLI
|
|
3
3
|
*/
|
|
4
4
|
import path from 'path';
|
|
5
|
+
import chalk from 'chalk';
|
|
5
6
|
import * as logger from '../utils/logger.js';
|
|
6
7
|
import { ensureToken, getToken } from '../auth/token-manager.js';
|
|
7
8
|
import { detectFramework, getFrameworkHints } from '../core/framework-detector.js';
|
|
8
|
-
import { scanRepository
|
|
9
|
+
import { scanRepository } from '../core/scanner.js';
|
|
9
10
|
import { createGeminiClient } from '../ai/gemini-client.js';
|
|
10
11
|
import { createAgent } from '../ai/agent.js';
|
|
11
12
|
import { generateMarkdownReport, writeReport, generateJsonReport } from '../reporters/markdown.js';
|
|
@@ -14,8 +15,27 @@ import { runSecurityScan } from '../core/security-scanner.js';
|
|
|
14
15
|
import { estimateScanCost, formatEstimate } from '../utils/token-estimator.js';
|
|
15
16
|
import fs from 'fs';
|
|
16
17
|
import inquirer from 'inquirer';
|
|
18
|
+
// Phase icons for display
|
|
19
|
+
const PHASE_ICONS = {
|
|
20
|
+
local: '⚡',
|
|
21
|
+
overview: '📋',
|
|
22
|
+
security: '🔐',
|
|
23
|
+
codeQuality: '🧹',
|
|
24
|
+
accessibility: '♿',
|
|
25
|
+
uiux: '🎨',
|
|
26
|
+
testing: '🧪'
|
|
27
|
+
};
|
|
28
|
+
// Agentic thinking messages
|
|
29
|
+
const THINKING_MESSAGES = [
|
|
30
|
+
'🤖 AI is thinking deeply...',
|
|
31
|
+
'🧠 Processing code patterns...',
|
|
32
|
+
'💭 Formulating insights...',
|
|
33
|
+
'🔮 Generating recommendations...',
|
|
34
|
+
'✨ Almost there...',
|
|
35
|
+
'🎯 Focusing on key issues...'
|
|
36
|
+
];
|
|
17
37
|
/**
|
|
18
|
-
* Execute the scan command
|
|
38
|
+
* Execute the scan command with interactive CLI
|
|
19
39
|
*/
|
|
20
40
|
export async function scan(options = {}) {
|
|
21
41
|
const repoRoot = process.cwd();
|
|
@@ -24,7 +44,6 @@ export async function scan(options = {}) {
|
|
|
24
44
|
const existingToken = getToken();
|
|
25
45
|
let token;
|
|
26
46
|
if (!existingToken) {
|
|
27
|
-
// No spinner when prompting for token
|
|
28
47
|
token = await ensureToken();
|
|
29
48
|
}
|
|
30
49
|
else {
|
|
@@ -34,7 +53,7 @@ export async function scan(options = {}) {
|
|
|
34
53
|
const spin = logger.spinner('Validating API access...');
|
|
35
54
|
spin.start();
|
|
36
55
|
try {
|
|
37
|
-
// Validate token
|
|
56
|
+
// Validate token
|
|
38
57
|
const client = createGeminiClient(token);
|
|
39
58
|
const validation = await client.validateKey();
|
|
40
59
|
if (!validation.valid) {
|
|
@@ -49,36 +68,32 @@ export async function scan(options = {}) {
|
|
|
49
68
|
}
|
|
50
69
|
spin.succeed('API access validated');
|
|
51
70
|
// Detect framework
|
|
52
|
-
spin.start('Detecting project framework...');
|
|
71
|
+
spin.start('🔍 Detecting project framework...');
|
|
53
72
|
const framework = await detectFramework(repoRoot);
|
|
54
|
-
spin.succeed(`Detected: ${framework.displayName}`);
|
|
73
|
+
spin.succeed(`Detected: ${chalk.cyan(framework.displayName)}`);
|
|
55
74
|
if (options.verbose) {
|
|
56
75
|
logger.info(`Framework hints: ${getFrameworkHints(framework.name)}`);
|
|
57
76
|
}
|
|
58
|
-
//
|
|
77
|
+
// Diff-based or full scanning
|
|
59
78
|
let scanResult;
|
|
60
79
|
let diffMode = false;
|
|
61
80
|
if (options.diff && !options.full) {
|
|
62
|
-
spin.start('Analyzing git changes...');
|
|
81
|
+
spin.start('📊 Analyzing git changes...');
|
|
63
82
|
const diffResult = await getChangedFiles(repoRoot, options.base || 'main');
|
|
64
83
|
if (diffResult.hasChanges) {
|
|
65
84
|
diffMode = true;
|
|
66
|
-
spin.succeed(`Diff mode: ${diffResult.summary}`);
|
|
67
|
-
// Get related files for context
|
|
85
|
+
spin.succeed(`Diff mode: ${chalk.green(diffResult.summary)}`);
|
|
68
86
|
const relatedFiles = await getRelatedFiles(repoRoot, diffResult.changedFiles);
|
|
69
87
|
const allRelevantFiles = [...new Set([...diffResult.changedFiles, ...relatedFiles])];
|
|
70
88
|
if (options.verbose) {
|
|
71
89
|
logger.info(`Changed: ${diffResult.changedFiles.length}, Related: ${relatedFiles.length}`);
|
|
72
90
|
}
|
|
73
|
-
|
|
74
|
-
spin.start('Scanning changed files...');
|
|
91
|
+
spin.start('📂 Scanning changed files...');
|
|
75
92
|
const fullScan = await scanRepository(repoRoot, framework);
|
|
76
|
-
// Filter to only changed/related files
|
|
77
93
|
scanResult = {
|
|
78
94
|
...fullScan,
|
|
79
95
|
files: fullScan.files.filter(f => allRelevantFiles.some(cf => f.relativePath.endsWith(cf) || cf.endsWith(f.relativePath)))
|
|
80
96
|
};
|
|
81
|
-
// Re-categorize
|
|
82
97
|
scanResult.byCategory = {
|
|
83
98
|
component: [], page: [], api: [], utility: [],
|
|
84
99
|
config: [], test: [], style: [], type: [], other: []
|
|
@@ -93,14 +108,24 @@ export async function scan(options = {}) {
|
|
|
93
108
|
}
|
|
94
109
|
}
|
|
95
110
|
else {
|
|
96
|
-
|
|
97
|
-
spin.start('Scanning repository...');
|
|
111
|
+
spin.start('📂 Scanning repository...');
|
|
98
112
|
scanResult = await scanRepository(repoRoot, framework);
|
|
99
113
|
}
|
|
100
|
-
spin.succeed(`Found ${scanResult.files.length} files${diffMode ? ' (diff mode)' : ''}`);
|
|
114
|
+
spin.succeed(`Found ${chalk.cyan(scanResult.files.length)} files${diffMode ? chalk.gray(' (diff mode)') : ''}`);
|
|
115
|
+
// Show scanned files in verbose mode
|
|
101
116
|
if (options.verbose) {
|
|
102
117
|
console.log();
|
|
103
|
-
console.log(
|
|
118
|
+
console.log(chalk.gray(' Scanned files:'));
|
|
119
|
+
const displayFiles = scanResult.files.slice(0, 15);
|
|
120
|
+
for (const file of displayFiles) {
|
|
121
|
+
const ext = file.extension || 'file';
|
|
122
|
+
const icon = getFileIcon(ext);
|
|
123
|
+
console.log(` ${icon} ${chalk.gray(file.relativePath)} ${chalk.green('[scanned]')}`);
|
|
124
|
+
}
|
|
125
|
+
if (scanResult.files.length > 15) {
|
|
126
|
+
console.log(chalk.gray(` ... and ${scanResult.files.length - 15} more files`));
|
|
127
|
+
}
|
|
128
|
+
console.log();
|
|
104
129
|
}
|
|
105
130
|
if (scanResult.files.length === 0) {
|
|
106
131
|
logger.warn('No files found to analyze. Check your project structure.');
|
|
@@ -110,13 +135,13 @@ export async function scan(options = {}) {
|
|
|
110
135
|
const analysisTypes = options.types
|
|
111
136
|
? options.types.split(',')
|
|
112
137
|
: ['overview', 'security', 'codeQuality', 'accessibility'];
|
|
113
|
-
//
|
|
138
|
+
// Token estimation
|
|
114
139
|
const estimate = estimateScanCost(scanResult.files, analysisTypes);
|
|
115
140
|
if (options.verbose) {
|
|
116
|
-
console.log();
|
|
117
141
|
console.log(formatEstimate(estimate));
|
|
118
142
|
console.log();
|
|
119
143
|
}
|
|
144
|
+
// Budget check
|
|
120
145
|
if (options.budget && estimate.estimatedCost > options.budget) {
|
|
121
146
|
logger.warn(`Estimated cost ($${estimate.estimatedCost.toFixed(4)}) exceeds budget ($${options.budget.toFixed(2)})`);
|
|
122
147
|
const { proceed } = await inquirer.prompt([
|
|
@@ -132,9 +157,9 @@ export async function scan(options = {}) {
|
|
|
132
157
|
process.exit(0);
|
|
133
158
|
}
|
|
134
159
|
}
|
|
135
|
-
//
|
|
160
|
+
// Free security scanning
|
|
136
161
|
if (options.security !== false) {
|
|
137
|
-
spin.start('Running free security checks...');
|
|
162
|
+
spin.start('🔐 Running free security checks...');
|
|
138
163
|
const securityScan = await runSecurityScan(scanResult.files, repoRoot);
|
|
139
164
|
if (securityScan.hasIssues) {
|
|
140
165
|
spin.warn('Security issues found');
|
|
@@ -164,23 +189,54 @@ export async function scan(options = {}) {
|
|
|
164
189
|
spin.succeed('No secrets or critical vulnerabilities detected');
|
|
165
190
|
}
|
|
166
191
|
}
|
|
167
|
-
// Run AI analysis
|
|
168
|
-
|
|
169
|
-
logger.
|
|
192
|
+
// Run AI analysis with interactive progress
|
|
193
|
+
console.log();
|
|
194
|
+
logger.header('🤖 Running AI Analysis');
|
|
195
|
+
console.log(chalk.gray(` Analysis types: ${analysisTypes.join(', ')}`));
|
|
170
196
|
if (diffMode) {
|
|
171
|
-
|
|
197
|
+
console.log(chalk.gray(` Mode: Diff-based (${scanResult.files.length} files)`));
|
|
172
198
|
}
|
|
173
199
|
console.log();
|
|
174
|
-
|
|
200
|
+
// Create agentic progress display
|
|
201
|
+
let currentPhase = '';
|
|
202
|
+
let thinkingIndex = 0;
|
|
203
|
+
let thinkingInterval = null;
|
|
204
|
+
const agentSpin = logger.spinner('Starting analysis...');
|
|
205
|
+
agentSpin.start();
|
|
175
206
|
const agent = createAgent(client, {
|
|
176
207
|
repoRoot,
|
|
177
208
|
framework,
|
|
178
209
|
analysisTypes
|
|
179
210
|
});
|
|
180
|
-
const result = await agent.analyze(scanResult, (
|
|
181
|
-
|
|
211
|
+
const result = await agent.analyze(scanResult, (phase, detail) => {
|
|
212
|
+
const icon = PHASE_ICONS[phase] || '🔄';
|
|
213
|
+
if (phase !== currentPhase) {
|
|
214
|
+
currentPhase = phase;
|
|
215
|
+
// Show phase transition
|
|
216
|
+
if (thinkingInterval) {
|
|
217
|
+
clearInterval(thinkingInterval);
|
|
218
|
+
thinkingInterval = null;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (detail) {
|
|
222
|
+
// Check if this is an AI thinking phase
|
|
223
|
+
if (detail.includes('AI is analyzing')) {
|
|
224
|
+
// Start rotating thinking messages
|
|
225
|
+
thinkingIndex = 0;
|
|
226
|
+
thinkingInterval = setInterval(() => {
|
|
227
|
+
agentSpin.text = `${icon} ${THINKING_MESSAGES[thinkingIndex % THINKING_MESSAGES.length]}`;
|
|
228
|
+
thinkingIndex++;
|
|
229
|
+
}, 1500);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
agentSpin.text = `${icon} ${detail}`;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
182
235
|
});
|
|
183
|
-
|
|
236
|
+
if (thinkingInterval) {
|
|
237
|
+
clearInterval(thinkingInterval);
|
|
238
|
+
}
|
|
239
|
+
agentSpin.succeed(`Analysis complete in ${chalk.cyan((result.duration / 1000).toFixed(1) + 's')}`);
|
|
184
240
|
// Generate report
|
|
185
241
|
const outputFile = options.output || 'AI_REVIEW_REPORT.md';
|
|
186
242
|
const metadata = {
|
|
@@ -198,20 +254,20 @@ export async function scan(options = {}) {
|
|
|
198
254
|
const markdownReport = generateMarkdownReport(result, metadata);
|
|
199
255
|
const reportPath = await writeReport(markdownReport, outputFile);
|
|
200
256
|
logger.success(`Report generated: ${outputFile}`);
|
|
201
|
-
// Summary
|
|
257
|
+
// Summary box
|
|
202
258
|
console.log();
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
});
|
|
259
|
+
console.log(chalk.cyan(' ┌' + '─'.repeat(50) + '┐'));
|
|
260
|
+
console.log(chalk.cyan(' │') + chalk.white.bold(' 📊 Analysis Summary'.padEnd(50)) + chalk.cyan('│'));
|
|
261
|
+
console.log(chalk.cyan(' ├' + '─'.repeat(50) + '┤'));
|
|
262
|
+
console.log(chalk.cyan(' │') + ` Files Analyzed: ${chalk.green(scanResult.files.length)}`.padEnd(59) + chalk.cyan('│'));
|
|
263
|
+
console.log(chalk.cyan(' │') + ` Tokens Used: ${chalk.yellow(result.totalTokens.toLocaleString())}`.padEnd(59) + chalk.cyan('│'));
|
|
264
|
+
console.log(chalk.cyan(' │') + ` Est. Cost: ${chalk.gray('$' + estimate.estimatedCost.toFixed(4))}`.padEnd(59) + chalk.cyan('│'));
|
|
265
|
+
console.log(chalk.cyan(' │') + ` Duration: ${chalk.cyan((result.duration / 1000).toFixed(1) + 's')}`.padEnd(59) + chalk.cyan('│'));
|
|
266
|
+
console.log(chalk.cyan(' │') + ` Report: ${chalk.green(reportPath)}`.padEnd(59) + chalk.cyan('│'));
|
|
211
267
|
if (diffMode) {
|
|
212
|
-
|
|
268
|
+
console.log(chalk.cyan(' │') + ` Mode: ${chalk.magenta('Diff-based (optimized)')}`.padEnd(59) + chalk.cyan('│'));
|
|
213
269
|
}
|
|
214
|
-
|
|
270
|
+
console.log(chalk.cyan(' └' + '─'.repeat(50) + '┘'));
|
|
215
271
|
console.log();
|
|
216
272
|
logger.success('Analysis complete! 🎉');
|
|
217
273
|
}
|
|
@@ -224,4 +280,24 @@ export async function scan(options = {}) {
|
|
|
224
280
|
process.exit(1);
|
|
225
281
|
}
|
|
226
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Get icon for file extension
|
|
285
|
+
*/
|
|
286
|
+
function getFileIcon(ext) {
|
|
287
|
+
const icons = {
|
|
288
|
+
'ts': '📘',
|
|
289
|
+
'tsx': '⚛️',
|
|
290
|
+
'js': '📙',
|
|
291
|
+
'jsx': '⚛️',
|
|
292
|
+
'py': '🐍',
|
|
293
|
+
'vue': '💚',
|
|
294
|
+
'svelte': '🧡',
|
|
295
|
+
'css': '🎨',
|
|
296
|
+
'scss': '🎨',
|
|
297
|
+
'html': '📄',
|
|
298
|
+
'json': '📋',
|
|
299
|
+
'md': '📝'
|
|
300
|
+
};
|
|
301
|
+
return icons[ext] || '📄';
|
|
302
|
+
}
|
|
227
303
|
//# sourceMappingURL=scan.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-detector.d.ts","sourceRoot":"","sources":["../../src/core/framework-detector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,MAAM,SAAS,GACf,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAEhB,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACvB;AAuED;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"framework-detector.d.ts","sourceRoot":"","sources":["../../src/core/framework-detector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,MAAM,SAAS,GACf,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAEhB,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACvB;AAuED;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA0G9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAgB9D"}
|
|
@@ -84,7 +84,16 @@ export async function detectFramework(repoRoot) {
|
|
|
84
84
|
return false;
|
|
85
85
|
}
|
|
86
86
|
};
|
|
87
|
-
|
|
87
|
+
const readPackageJson = async () => {
|
|
88
|
+
try {
|
|
89
|
+
const content = await fs.promises.readFile(path.join(repoRoot, 'package.json'), 'utf-8');
|
|
90
|
+
return JSON.parse(content);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
// Check for Next.js (config files or package.json)
|
|
88
97
|
if (await exists('next.config.js') || await exists('next.config.ts') || await exists('next.config.mjs')) {
|
|
89
98
|
return { name: 'nextjs', ...FRAMEWORK_CONFIGS.nextjs };
|
|
90
99
|
}
|
|
@@ -92,15 +101,15 @@ export async function detectFramework(repoRoot) {
|
|
|
92
101
|
if (await exists('angular.json')) {
|
|
93
102
|
return { name: 'angular', ...FRAMEWORK_CONFIGS.angular };
|
|
94
103
|
}
|
|
95
|
-
// Check for Vue
|
|
104
|
+
// Check for Vue/Nuxt
|
|
96
105
|
if (await exists('vue.config.js') || await exists('nuxt.config.js') || await exists('nuxt.config.ts')) {
|
|
97
106
|
return { name: 'vue', ...FRAMEWORK_CONFIGS.vue };
|
|
98
107
|
}
|
|
99
|
-
// Check for Svelte
|
|
108
|
+
// Check for Svelte/SvelteKit
|
|
100
109
|
if (await exists('svelte.config.js') || await exists('svelte.config.ts')) {
|
|
101
110
|
return { name: 'svelte', ...FRAMEWORK_CONFIGS.svelte };
|
|
102
111
|
}
|
|
103
|
-
// Check for Vite
|
|
112
|
+
// Check for Vite
|
|
104
113
|
if (await exists('vite.config.js') || await exists('vite.config.ts')) {
|
|
105
114
|
return { name: 'vite', ...FRAMEWORK_CONFIGS.vite };
|
|
106
115
|
}
|
|
@@ -112,23 +121,45 @@ export async function detectFramework(repoRoot) {
|
|
|
112
121
|
if (await exists('manage.py')) {
|
|
113
122
|
return { name: 'django', ...FRAMEWORK_CONFIGS.django };
|
|
114
123
|
}
|
|
115
|
-
// Check for Flask
|
|
124
|
+
// Check for Flask
|
|
116
125
|
if (await exists('app.py') || await exists('wsgi.py')) {
|
|
117
126
|
return { name: 'flask', ...FRAMEWORK_CONFIGS.flask };
|
|
118
127
|
}
|
|
119
|
-
// Check for
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
if (pkg.dependencies?.react || pkg.devDependencies?.react) {
|
|
127
|
-
return { name: 'react', ...FRAMEWORK_CONFIGS.react };
|
|
128
|
-
}
|
|
128
|
+
// Check package.json for dependencies
|
|
129
|
+
const pkg = await readPackageJson();
|
|
130
|
+
if (pkg) {
|
|
131
|
+
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
132
|
+
// Next.js via package.json
|
|
133
|
+
if (deps['next']) {
|
|
134
|
+
return { name: 'nextjs', ...FRAMEWORK_CONFIGS.nextjs };
|
|
129
135
|
}
|
|
130
|
-
|
|
131
|
-
|
|
136
|
+
// NestJS via package.json
|
|
137
|
+
if (deps['@nestjs/core']) {
|
|
138
|
+
return { name: 'nestjs', ...FRAMEWORK_CONFIGS.nestjs };
|
|
139
|
+
}
|
|
140
|
+
// Vue via package.json
|
|
141
|
+
if (deps['vue'] || deps['nuxt']) {
|
|
142
|
+
return { name: 'vue', ...FRAMEWORK_CONFIGS.vue };
|
|
143
|
+
}
|
|
144
|
+
// Angular via package.json
|
|
145
|
+
if (deps['@angular/core']) {
|
|
146
|
+
return { name: 'angular', ...FRAMEWORK_CONFIGS.angular };
|
|
147
|
+
}
|
|
148
|
+
// Svelte via package.json
|
|
149
|
+
if (deps['svelte']) {
|
|
150
|
+
return { name: 'svelte', ...FRAMEWORK_CONFIGS.svelte };
|
|
151
|
+
}
|
|
152
|
+
// Express
|
|
153
|
+
if (deps['express']) {
|
|
154
|
+
return { name: 'express', ...FRAMEWORK_CONFIGS.express };
|
|
155
|
+
}
|
|
156
|
+
// React (check after more specific frameworks)
|
|
157
|
+
if (deps['react']) {
|
|
158
|
+
return { name: 'react', ...FRAMEWORK_CONFIGS.react };
|
|
159
|
+
}
|
|
160
|
+
// Vite
|
|
161
|
+
if (deps['vite']) {
|
|
162
|
+
return { name: 'vite', ...FRAMEWORK_CONFIGS.vite };
|
|
132
163
|
}
|
|
133
164
|
}
|
|
134
165
|
return { name: 'unknown', ...FRAMEWORK_CONFIGS.unknown };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-detector.js","sourceRoot":"","sources":["../../src/core/framework-detector.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"framework-detector.js","sourceRoot":"","sources":["../../src/core/framework-detector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAuBxB,MAAM,iBAAiB,GAAmD;IACtE,MAAM,EAAE;QACJ,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,8BAA8B;QAC3C,YAAY,EAAE,CAAC,0BAA0B,EAAE,4BAA4B,EAAE,iCAAiC,CAAC;QAC3G,cAAc,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC;KAClD;IACD,KAAK,EAAE;QACH,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,WAAW;QACxB,YAAY,EAAE,CAAC,0BAA0B,EAAE,iCAAiC,CAAC;QAC7E,cAAc,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC;KAClD;IACD,IAAI,EAAE;QACF,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,uBAAuB;QACpC,YAAY,EAAE,CAAC,qCAAqC,CAAC;QACrD,cAAc,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC;KACjD;IACD,OAAO,EAAE;QACL,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,CAAC,6BAA6B,CAAC;QAC7C,cAAc,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,aAAa,CAAC;KAChE;IACD,GAAG,EAAE;QACD,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,CAAC,sBAAsB,CAAC;QACtC,cAAc,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC;KACjD;IACD,MAAM,EAAE;QACJ,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,CAAC,yBAAyB,CAAC;QACzC,cAAc,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;KACpE;IACD,MAAM,EAAE;QACJ,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,yBAAyB;QACtC,YAAY,EAAE,CAAC,SAAS,EAAE,wBAAwB,CAAC;QACnD,cAAc,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,CAAC;KAC1E;IACD,KAAK,EAAE;QACH,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,wBAAwB;QACrC,YAAY,EAAE,CAAC,SAAS,EAAE,qBAAqB,CAAC;QAChD,cAAc,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,CAAC;KACzD;IACD,OAAO,EAAE;QACL,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,yBAAyB;QACtC,YAAY,EAAE,CAAC,cAAc,EAAE,qBAAqB,EAAE,0BAA0B,CAAC;QACjF,cAAc,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC;KACjD;IACD,MAAM,EAAE;QACJ,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,0BAA0B;QACvC,YAAY,EAAE,CAAC,aAAa,CAAC;QAC7B,cAAc,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC;KACjD;IACD,OAAO,EAAE;QACL,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,CAAC,oCAAoC,CAAC;QACpD,cAAc,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC;KAC1F;CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB;IAClD,MAAM,MAAM,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QAClC,IAAI,CAAC;YACD,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,KAAK,IAAkB,EAAE;QAC7C,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;YACzF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;IAEF,mDAAmD;IACnD,IAAI,MAAM,MAAM,CAAC,gBAAgB,CAAC,IAAI,MAAM,MAAM,CAAC,gBAAgB,CAAC,IAAI,MAAM,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACtG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC;IAC3D,CAAC;IAED,oBAAoB;IACpB,IAAI,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAC7D,CAAC;IAED,qBAAqB;IACrB,IAAI,MAAM,MAAM,CAAC,eAAe,CAAC,IAAI,MAAM,MAAM,CAAC,gBAAgB,CAAC,IAAI,MAAM,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpG,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC;IACrD,CAAC;IAED,6BAA6B;IAC7B,IAAI,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,MAAM,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC;IAC3D,CAAC;IAED,iBAAiB;IACjB,IAAI,MAAM,MAAM,CAAC,gBAAgB,CAAC,IAAI,MAAM,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;IACvD,CAAC;IAED,mBAAmB;IACnB,IAAI,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC;IAC3D,CAAC;IAED,mBAAmB;IACnB,IAAI,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC;IAC3D,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,sCAAsC;IACtC,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;IACpC,IAAI,GAAG,EAAE,CAAC;QACN,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;QAE7D,2BAA2B;QAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACf,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC;QAC3D,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC;QAC3D,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC;QACrD,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAC7D,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC;QAC3D,CAAC;QAED,UAAU;QACV,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC;QAC7D,CAAC;QAED,+CAA+C;QAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAChB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC;QACzD,CAAC;QAED,OAAO;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACf,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACvD,CAAC;IACL,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAoB;IAClD,MAAM,KAAK,GAA8B;QACrC,MAAM,EAAE,+FAA+F;QACvG,KAAK,EAAE,2FAA2F;QAClG,IAAI,EAAE,+EAA+E;QACrF,OAAO,EAAE,+EAA+E;QACxF,GAAG,EAAE,+EAA+E;QACpF,MAAM,EAAE,4EAA4E;QACpF,MAAM,EAAE,iFAAiF;QACzF,KAAK,EAAE,4EAA4E;QACnF,OAAO,EAAE,gFAAgF;QACzF,MAAM,EAAE,6EAA6E;QACrF,OAAO,EAAE,+BAA+B;KAC3C,CAAC;IAEF,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive Logger - Agentic CLI output with motivating messages
|
|
3
|
+
*/
|
|
4
|
+
import { type Ora } from 'ora';
|
|
5
|
+
declare const AGENTIC_MESSAGES: {
|
|
6
|
+
scanning: string[];
|
|
7
|
+
security: string[];
|
|
8
|
+
codeQuality: string[];
|
|
9
|
+
accessibility: string[];
|
|
10
|
+
uiux: string[];
|
|
11
|
+
testing: string[];
|
|
12
|
+
overview: string[];
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Create an interactive spinner with rotating agentic messages
|
|
16
|
+
*/
|
|
17
|
+
export declare function createAgenticSpinner(initialText: string): {
|
|
18
|
+
spinner: Ora;
|
|
19
|
+
updatePhase: (phase: keyof typeof AGENTIC_MESSAGES) => void;
|
|
20
|
+
updateFile: (fileName: string, action: string) => void;
|
|
21
|
+
showThinking: () => void;
|
|
22
|
+
stop: () => void;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Display file scanning progress
|
|
26
|
+
*/
|
|
27
|
+
export declare function showFileScanProgress(files: string[], onFile?: (file: string) => void): void;
|
|
28
|
+
/**
|
|
29
|
+
* Show analysis phase header with agentic messaging
|
|
30
|
+
*/
|
|
31
|
+
export declare function showAnalysisPhase(phase: string, fileCount: number): void;
|
|
32
|
+
/**
|
|
33
|
+
* Show analysis complete for a phase
|
|
34
|
+
*/
|
|
35
|
+
export declare function showAnalysisComplete(phase: string, duration: number, findings: number): void;
|
|
36
|
+
/**
|
|
37
|
+
* Show real-time AI thinking indicator
|
|
38
|
+
*/
|
|
39
|
+
export declare function showAIThinking(message: string): void;
|
|
40
|
+
/**
|
|
41
|
+
* Display test file detection
|
|
42
|
+
*/
|
|
43
|
+
export declare function showTestFileSearch(pattern: string): void;
|
|
44
|
+
/**
|
|
45
|
+
* Create boxed status display
|
|
46
|
+
*/
|
|
47
|
+
export declare function showStatusBox(items: Record<string, string | number>): void;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=interactive-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive-logger.d.ts","sourceRoot":"","sources":["../../src/utils/interactive-logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAGpC,QAAA,MAAM,gBAAgB;;;;;;;;CAkDrB,CAAC;AAgBF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG;IACvD,OAAO,EAAE,GAAG,CAAC;IACb,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,OAAO,gBAAgB,KAAK,IAAI,CAAC;IAC5D,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,IAAI,CAAC;CACpB,CA6CA;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAChC,IAAI,CAQN;AA2BD;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAClB,IAAI,CAIN;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACjB,IAAI,CAIN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAS1E"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive Logger - Agentic CLI output with motivating messages
|
|
3
|
+
*/
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
// Agentic thinking messages for different phases
|
|
7
|
+
const AGENTIC_MESSAGES = {
|
|
8
|
+
scanning: [
|
|
9
|
+
'🔍 Scanning project structure...',
|
|
10
|
+
'📂 Discovering source files...',
|
|
11
|
+
'🧬 Analyzing file patterns...',
|
|
12
|
+
'🔎 Indexing codebase...',
|
|
13
|
+
'📊 Building file tree...'
|
|
14
|
+
],
|
|
15
|
+
security: [
|
|
16
|
+
'🔐 Analyzing security patterns...',
|
|
17
|
+
'🛡️ Checking for vulnerabilities...',
|
|
18
|
+
'🔒 Scanning for exposed secrets...',
|
|
19
|
+
'⚠️ Reviewing authentication flows...',
|
|
20
|
+
'🔑 Validating access controls...'
|
|
21
|
+
],
|
|
22
|
+
codeQuality: [
|
|
23
|
+
'🧹 Reviewing code quality...',
|
|
24
|
+
'🔧 Analyzing code patterns...',
|
|
25
|
+
'📐 Checking architecture...',
|
|
26
|
+
'🎯 Identifying code smells...',
|
|
27
|
+
'✨ Evaluating best practices...'
|
|
28
|
+
],
|
|
29
|
+
accessibility: [
|
|
30
|
+
'♿ Checking accessibility...',
|
|
31
|
+
'🎨 Reviewing WCAG compliance...',
|
|
32
|
+
'🖥️ Analyzing screen reader support...',
|
|
33
|
+
'⌨️ Testing keyboard navigation...',
|
|
34
|
+
'👁️ Checking color contrast...'
|
|
35
|
+
],
|
|
36
|
+
uiux: [
|
|
37
|
+
'🎨 Analyzing user experience...',
|
|
38
|
+
'📱 Reviewing responsive design...',
|
|
39
|
+
'⚡ Checking loading states...',
|
|
40
|
+
'💫 Reviewing interactions...',
|
|
41
|
+
'🎭 Analyzing UI patterns...'
|
|
42
|
+
],
|
|
43
|
+
testing: [
|
|
44
|
+
'🧪 Analyzing test coverage...',
|
|
45
|
+
'✅ Reviewing test patterns...',
|
|
46
|
+
'🔬 Identifying test gaps...',
|
|
47
|
+
'📋 Suggesting test cases...',
|
|
48
|
+
'🎯 Finding edge cases...'
|
|
49
|
+
],
|
|
50
|
+
overview: [
|
|
51
|
+
'📋 Building project overview...',
|
|
52
|
+
'🏗️ Analyzing architecture...',
|
|
53
|
+
'📊 Evaluating project health...',
|
|
54
|
+
'🎯 Identifying priorities...',
|
|
55
|
+
'💡 Generating recommendations...'
|
|
56
|
+
]
|
|
57
|
+
};
|
|
58
|
+
// Motivational messages during AI analysis
|
|
59
|
+
const MOTIVATIONAL_MESSAGES = [
|
|
60
|
+
'🤖 AI is thinking deeply...',
|
|
61
|
+
'🧠 Processing code patterns...',
|
|
62
|
+
'💭 Formulating insights...',
|
|
63
|
+
'🔮 Generating recommendations...',
|
|
64
|
+
'📝 Crafting detailed analysis...',
|
|
65
|
+
'✨ Almost there...',
|
|
66
|
+
'🎯 Focusing on key issues...',
|
|
67
|
+
'💡 Finding improvements...',
|
|
68
|
+
'🔍 Deep diving into code...',
|
|
69
|
+
'📊 Building comprehensive report...'
|
|
70
|
+
];
|
|
71
|
+
/**
|
|
72
|
+
* Create an interactive spinner with rotating agentic messages
|
|
73
|
+
*/
|
|
74
|
+
export function createAgenticSpinner(initialText) {
|
|
75
|
+
const spin = ora({
|
|
76
|
+
text: initialText,
|
|
77
|
+
color: 'cyan',
|
|
78
|
+
spinner: 'dots'
|
|
79
|
+
});
|
|
80
|
+
let messageInterval = null;
|
|
81
|
+
let currentPhase = 'scanning';
|
|
82
|
+
let messageIndex = 0;
|
|
83
|
+
const updatePhase = (phase) => {
|
|
84
|
+
currentPhase = phase;
|
|
85
|
+
messageIndex = 0;
|
|
86
|
+
const messages = AGENTIC_MESSAGES[phase];
|
|
87
|
+
if (messages && messages.length > 0) {
|
|
88
|
+
spin.text = messages[0];
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const updateFile = (fileName, action) => {
|
|
92
|
+
const shortName = fileName.length > 40
|
|
93
|
+
? '...' + fileName.slice(-37)
|
|
94
|
+
: fileName;
|
|
95
|
+
spin.text = `${action} ${chalk.cyan(shortName)}`;
|
|
96
|
+
};
|
|
97
|
+
const showThinking = () => {
|
|
98
|
+
if (messageInterval)
|
|
99
|
+
clearInterval(messageInterval);
|
|
100
|
+
let thinkingIndex = 0;
|
|
101
|
+
messageInterval = setInterval(() => {
|
|
102
|
+
spin.text = MOTIVATIONAL_MESSAGES[thinkingIndex % MOTIVATIONAL_MESSAGES.length];
|
|
103
|
+
thinkingIndex++;
|
|
104
|
+
}, 2000);
|
|
105
|
+
};
|
|
106
|
+
const stop = () => {
|
|
107
|
+
if (messageInterval) {
|
|
108
|
+
clearInterval(messageInterval);
|
|
109
|
+
messageInterval = null;
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
return { spinner: spin, updatePhase, updateFile, showThinking, stop };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Display file scanning progress
|
|
116
|
+
*/
|
|
117
|
+
export function showFileScanProgress(files, onFile) {
|
|
118
|
+
for (const file of files) {
|
|
119
|
+
const ext = file.split('.').pop() || '';
|
|
120
|
+
const icon = getFileIcon(ext);
|
|
121
|
+
const shortName = file.length > 50 ? '...' + file.slice(-47) : file;
|
|
122
|
+
console.log(` ${icon} ${chalk.gray(shortName)} ${chalk.green('[scanned]')}`);
|
|
123
|
+
onFile?.(file);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get icon for file extension
|
|
128
|
+
*/
|
|
129
|
+
function getFileIcon(ext) {
|
|
130
|
+
const icons = {
|
|
131
|
+
'ts': '📘',
|
|
132
|
+
'tsx': '⚛️',
|
|
133
|
+
'js': '📙',
|
|
134
|
+
'jsx': '⚛️',
|
|
135
|
+
'py': '🐍',
|
|
136
|
+
'vue': '💚',
|
|
137
|
+
'svelte': '🧡',
|
|
138
|
+
'css': '🎨',
|
|
139
|
+
'scss': '🎨',
|
|
140
|
+
'html': '📄',
|
|
141
|
+
'json': '📋',
|
|
142
|
+
'md': '📝',
|
|
143
|
+
'yaml': '⚙️',
|
|
144
|
+
'yml': '⚙️',
|
|
145
|
+
'test': '🧪',
|
|
146
|
+
'spec': '🧪'
|
|
147
|
+
};
|
|
148
|
+
return icons[ext] || '📄';
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Show analysis phase header with agentic messaging
|
|
152
|
+
*/
|
|
153
|
+
export function showAnalysisPhase(phase, fileCount) {
|
|
154
|
+
console.log();
|
|
155
|
+
console.log(chalk.bold.cyan(` ┌─ ${phase}`));
|
|
156
|
+
console.log(chalk.gray(` │ Analyzing ${fileCount} files...`));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Show analysis complete for a phase
|
|
160
|
+
*/
|
|
161
|
+
export function showAnalysisComplete(phase, duration, findings) {
|
|
162
|
+
const icon = findings > 0 ? '⚠️' : '✅';
|
|
163
|
+
console.log(chalk.gray(` │ ${icon} ${findings} findings (${duration}ms)`));
|
|
164
|
+
console.log(chalk.cyan(` └─ Complete`));
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Show real-time AI thinking indicator
|
|
168
|
+
*/
|
|
169
|
+
export function showAIThinking(message) {
|
|
170
|
+
process.stdout.write(`\r ${chalk.yellow('🤖')} ${chalk.gray(message)} `);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Display test file detection
|
|
174
|
+
*/
|
|
175
|
+
export function showTestFileSearch(pattern) {
|
|
176
|
+
console.log(chalk.gray(` 🔍 Searching for ${chalk.cyan(pattern)} files...`));
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Create boxed status display
|
|
180
|
+
*/
|
|
181
|
+
export function showStatusBox(items) {
|
|
182
|
+
const maxKeyLen = Math.max(...Object.keys(items).map(k => k.length));
|
|
183
|
+
console.log(chalk.cyan(' ┌' + '─'.repeat(50) + '┐'));
|
|
184
|
+
for (const [key, value] of Object.entries(items)) {
|
|
185
|
+
const paddedKey = key.padEnd(maxKeyLen);
|
|
186
|
+
console.log(chalk.cyan(' │') + ` ${paddedKey}: ${chalk.white(value)}`.padEnd(50) + chalk.cyan('│'));
|
|
187
|
+
}
|
|
188
|
+
console.log(chalk.cyan(' └' + '─'.repeat(50) + '┘'));
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=interactive-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive-logger.js","sourceRoot":"","sources":["../../src/utils/interactive-logger.ts"],"names":[],"mappings":"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"}
|