@aionlabsai/aion 0.2.2 → 0.2.4
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/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +27 -14
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/ci.d.ts +3 -0
- package/dist/cli/commands/ci.d.ts.map +1 -0
- package/dist/cli/commands/ci.js +143 -0
- package/dist/cli/commands/ci.js.map +1 -0
- package/dist/cli/menu.d.ts.map +1 -1
- package/dist/cli/menu.js +115 -65
- package/dist/cli/menu.js.map +1 -1
- package/dist/cli/tui.d.ts +1 -0
- package/dist/cli/tui.d.ts.map +1 -1
- package/dist/cli/tui.js +7 -3
- package/dist/cli/tui.js.map +1 -1
- package/dist/core/pipelines/audit-file-scanner.d.ts +19 -0
- package/dist/core/pipelines/audit-file-scanner.d.ts.map +1 -0
- package/dist/core/pipelines/audit-file-scanner.js +108 -0
- package/dist/core/pipelines/audit-file-scanner.js.map +1 -0
- package/dist/core/pipelines/audit-pipeline.d.ts +2 -9
- package/dist/core/pipelines/audit-pipeline.d.ts.map +1 -1
- package/dist/core/pipelines/audit-pipeline.js +20 -113
- package/dist/core/pipelines/audit-pipeline.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/infra/audit-report-writer.d.ts.map +1 -1
- package/dist/infra/audit-report-writer.js +0 -1
- package/dist/infra/audit-report-writer.js.map +1 -1
- package/dist/infra/update-check.d.ts.map +1 -1
- package/dist/infra/update-check.js +1 -1
- package/dist/infra/update-check.js.map +1 -1
- package/dist/providers/cli-provider.d.ts.map +1 -1
- package/dist/providers/cli-provider.js +15 -2
- package/dist/providers/cli-provider.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgIzC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuGpD"}
|
|
@@ -24,23 +24,34 @@ function renderAuditReport(report, durationMs) {
|
|
|
24
24
|
console.log(chalk.dim(` ... ${report.topPriorities.length - 3} more in HTML`));
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
function renderDryRun(pipeline, stats, maxFilesForAi) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
console.log(
|
|
33
|
-
console.log(
|
|
34
|
-
console.log(
|
|
35
|
-
console.log(`
|
|
27
|
+
async function renderDryRun(pipeline, stats, maxFilesForAi, nScanners, policy) {
|
|
28
|
+
const { SessionBudget } = await import('../../core/cost-tracker.js');
|
|
29
|
+
const sessionBudget = new SessionBudget(process.cwd(), policy.claudeMaxBudgetUsd);
|
|
30
|
+
const estimated = sessionBudget.estimatedCost(nScanners, policy.claudeModel);
|
|
31
|
+
const remaining = sessionBudget.remaining();
|
|
32
|
+
console.log('\n' + chalk.bold.cyan('Audit dry run') + chalk.gray(' — no agents started, no tokens used'));
|
|
33
|
+
console.log('');
|
|
34
|
+
console.log(chalk.bold('Files:'));
|
|
35
|
+
console.log(` ${chalk.cyan(stats.auditFiles.length)} source files (${stats.totalFiles} total, ${stats.ignoredDirs} dirs ignored, ${stats.oversizedFiles} oversized)`);
|
|
36
|
+
console.log(` ${chalk.cyan(Math.min(stats.auditFiles.length, maxFilesForAi))} files will be sent to AI (--max-files ${maxFilesForAi})`);
|
|
37
|
+
console.log('');
|
|
38
|
+
console.log(chalk.bold('Cost estimate:'));
|
|
39
|
+
console.log(` ${chalk.cyan(nScanners)} scanners × est. ${chalk.yellow('$' + (estimated / nScanners).toFixed(3))} each = ${chalk.yellow.bold('~$' + estimated.toFixed(3))}`);
|
|
40
|
+
console.log(` session budget remaining: ${remaining >= 10 ? chalk.green('$' + remaining.toFixed(2)) : chalk.red('$' + remaining.toFixed(2))}`);
|
|
41
|
+
if (remaining < estimated)
|
|
42
|
+
console.log(chalk.red.bold(' ⚠ Estimated cost exceeds remaining budget — scanners will be reduced'));
|
|
43
|
+
console.log('');
|
|
36
44
|
const exts = Object.entries(stats.byExtension).sort((a, b) => b[1] - a[1]);
|
|
37
45
|
if (exts.length > 0) {
|
|
38
|
-
console.log('
|
|
39
|
-
|
|
46
|
+
console.log(chalk.bold('Extensions: ') + exts.map(([ext, n]) => `${ext}:${n}`).join(' '));
|
|
47
|
+
console.log('');
|
|
40
48
|
}
|
|
41
49
|
if (stats.auditFiles.length > 0) {
|
|
42
|
-
|
|
43
|
-
|
|
50
|
+
const targetFiles = pipeline.prioritizeFiles(stats.auditFiles, maxFilesForAi);
|
|
51
|
+
console.log(chalk.bold(`AI target files (top ${Math.min(targetFiles.length, 20)} by risk):`));
|
|
52
|
+
targetFiles.slice(0, 20).forEach((file) => console.log(` ${chalk.dim('·')} ${file}`));
|
|
53
|
+
if (targetFiles.length > 20)
|
|
54
|
+
console.log(chalk.dim(` ... ${targetFiles.length - 20} more`));
|
|
44
55
|
}
|
|
45
56
|
}
|
|
46
57
|
function parseBudget(value) {
|
|
@@ -121,7 +132,9 @@ export function registerAudit(program) {
|
|
|
121
132
|
const policy = createRuntimePolicy(policyInput);
|
|
122
133
|
if (options.dryRun) {
|
|
123
134
|
const pipeline = new AuditPipeline(process.cwd(), policy, new CostTracker(), () => { }, () => { });
|
|
124
|
-
|
|
135
|
+
const { domains: dryDomains } = await (await import('../../infra/persona-presets.js')).resolveDomainsFromConfig(process.cwd(), mergedOptions.preset, mergedOptions.domains, explicitN);
|
|
136
|
+
const dryN = Math.min(dryDomains.length || policy.maxAgents, explicitN ?? policy.maxAgents);
|
|
137
|
+
await renderDryRun(pipeline, pipeline.collectAuditStats(target), maxFilesForAi, dryN, policy);
|
|
125
138
|
return;
|
|
126
139
|
}
|
|
127
140
|
const renderer = new Renderer();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/cli/commands/audit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/cli/commands/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ci.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BzC,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsIjD"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Orchestrator } from '../../core/orchestrator.js';
|
|
2
|
+
import { AuditPipeline } from '../../core/pipelines/audit-pipeline.js';
|
|
3
|
+
import { createRuntimePolicy } from '../../core/runtime-policy.js';
|
|
4
|
+
import { CostTracker } from '../../core/cost-tracker.js';
|
|
5
|
+
import { saveAuditReport } from '../../infra/audit-report-writer.js';
|
|
6
|
+
import { SEVERITY_RANK } from '../../infra/audit-model.js';
|
|
7
|
+
const SEVERITY_LEVELS = ['critical', 'high', 'medium', 'low'];
|
|
8
|
+
function parseBudget(v) {
|
|
9
|
+
return (['low', 'normal', 'deep'].includes(v) ? v : 'low');
|
|
10
|
+
}
|
|
11
|
+
function parseFailOn(v) {
|
|
12
|
+
return (SEVERITY_LEVELS.includes(v) ? v : 'high');
|
|
13
|
+
}
|
|
14
|
+
export function registerCi(program) {
|
|
15
|
+
program
|
|
16
|
+
.command('ci [target]')
|
|
17
|
+
.description('CI-mode audit: structured output + exit codes (0=clean, 1=high, 2=critical)')
|
|
18
|
+
.option('--budget <budget>', 'low | normal | deep', 'low')
|
|
19
|
+
.option('--preset <name>', 'persona preset')
|
|
20
|
+
.option('--domains <list>', 'comma-separated scanner domains')
|
|
21
|
+
.option('-n, --scanners <n>', 'number of scanner agents')
|
|
22
|
+
.option('--fail-on <severity>', 'exit non-zero if findings at or above this severity (default: high)', 'high')
|
|
23
|
+
.option('--max-files <n>', 'max source files sent to AI scanners')
|
|
24
|
+
.option('--local-only', 'deterministic scans only; no AI tokens')
|
|
25
|
+
.option('--format <fmt>', 'output format: json | text (default: json)', 'json')
|
|
26
|
+
.option('--dry-run', 'show file stats + cost estimate, no agents')
|
|
27
|
+
.action(async (target = '.', options) => {
|
|
28
|
+
const budget = parseBudget(options.budget);
|
|
29
|
+
const failOn = parseFailOn(options.failOn);
|
|
30
|
+
const failRank = SEVERITY_RANK[failOn] ?? 3;
|
|
31
|
+
const maxFilesForAi = options.maxFiles
|
|
32
|
+
? Math.max(1, Math.min(500, parseInt(options.maxFiles, 10) || 30))
|
|
33
|
+
: budget === 'deep' ? 120 : budget === 'normal' ? 60 : 30;
|
|
34
|
+
const policy = createRuntimePolicy({ budget });
|
|
35
|
+
if (options.dryRun) {
|
|
36
|
+
const pipeline = new AuditPipeline(process.cwd(), policy, new CostTracker(), () => { }, () => { });
|
|
37
|
+
const stats = pipeline.collectAuditStats(target);
|
|
38
|
+
const { SessionBudget } = await import('../../core/cost-tracker.js');
|
|
39
|
+
const sessionBudget = new SessionBudget(process.cwd(), policy.claudeMaxBudgetUsd);
|
|
40
|
+
const { resolveDomainsFromConfig } = await import('../../infra/persona-presets.js');
|
|
41
|
+
const { domains } = resolveDomainsFromConfig(process.cwd(), options.preset, options.domains, undefined);
|
|
42
|
+
const nScanners = Math.min(domains.length || policy.maxAgents, policy.maxAgents);
|
|
43
|
+
const estimated = sessionBudget.estimatedCost(nScanners, policy.claudeModel);
|
|
44
|
+
if (options.format === 'json') {
|
|
45
|
+
process.stdout.write(JSON.stringify({
|
|
46
|
+
dryRun: true,
|
|
47
|
+
totalFiles: stats.totalFiles,
|
|
48
|
+
auditFiles: stats.auditFiles.length,
|
|
49
|
+
aiTargetFiles: Math.min(stats.auditFiles.length, maxFilesForAi),
|
|
50
|
+
estimatedCostUsd: parseFloat(estimated.toFixed(4)),
|
|
51
|
+
scanners: nScanners,
|
|
52
|
+
budget,
|
|
53
|
+
}, null, 2) + '\n');
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
process.stdout.write(`DRY RUN\n`);
|
|
57
|
+
process.stdout.write(` files: ${stats.auditFiles.length} source / ${stats.totalFiles} total\n`);
|
|
58
|
+
process.stdout.write(` AI target: ${Math.min(stats.auditFiles.length, maxFilesForAi)} files\n`);
|
|
59
|
+
process.stdout.write(` scanners: ${nScanners}\n`);
|
|
60
|
+
process.stdout.write(` estimated cost: $${estimated.toFixed(4)}\n`);
|
|
61
|
+
}
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const allOutput = [];
|
|
65
|
+
const orch = new Orchestrator(process.cwd(), { budget });
|
|
66
|
+
if (options.format === 'text') {
|
|
67
|
+
orch.on('agent:output', ({ text }) => process.stderr.write(text));
|
|
68
|
+
}
|
|
69
|
+
const { resolveDomainsFromConfig } = await import('../../infra/persona-presets.js');
|
|
70
|
+
const explicitN = options.scanners ? Math.max(1, Math.min(15, parseInt(options.scanners, 10) || 5)) : undefined;
|
|
71
|
+
const { domains: explicitDomains } = resolveDomainsFromConfig(process.cwd(), options.preset, options.domains, explicitN);
|
|
72
|
+
const start = Date.now();
|
|
73
|
+
try {
|
|
74
|
+
const report = await orch.runAuditPipeline(target, explicitN, explicitDomains.length > 0 ? explicitDomains : undefined, {
|
|
75
|
+
localOnly: options.localOnly,
|
|
76
|
+
maxFilesForAi,
|
|
77
|
+
});
|
|
78
|
+
const durationMs = Date.now() - start;
|
|
79
|
+
const costSummary = {
|
|
80
|
+
totalUsd: orch.costs.totalUsd(),
|
|
81
|
+
model: policy.claudeModel,
|
|
82
|
+
perAgent: orch.costs.byAgent().map((e) => ({
|
|
83
|
+
name: e.agentName,
|
|
84
|
+
costUsd: e.costUsd,
|
|
85
|
+
inputTokens: e.usage.inputTokens,
|
|
86
|
+
outputTokens: e.usage.outputTokens,
|
|
87
|
+
})),
|
|
88
|
+
};
|
|
89
|
+
const saved = saveAuditReport(process.cwd(), report, durationMs, 8000, costSummary);
|
|
90
|
+
const failingFindings = report.findings.filter((f) => (SEVERITY_RANK[f.severity] ?? 0) >= failRank);
|
|
91
|
+
if (options.format === 'json') {
|
|
92
|
+
process.stdout.write(JSON.stringify({
|
|
93
|
+
passed: failingFindings.length === 0,
|
|
94
|
+
failOn,
|
|
95
|
+
summary: report.summary,
|
|
96
|
+
totalFiles: report.totalFiles,
|
|
97
|
+
durationMs,
|
|
98
|
+
costUsd: costSummary.totalUsd,
|
|
99
|
+
counts: {
|
|
100
|
+
total: report.findings.length,
|
|
101
|
+
critical: report.criticalCount,
|
|
102
|
+
high: report.highCount,
|
|
103
|
+
},
|
|
104
|
+
topPriorities: report.topPriorities.slice(0, 5),
|
|
105
|
+
findings: report.findings.slice(0, 50).map((f) => ({
|
|
106
|
+
severity: f.severity,
|
|
107
|
+
file: f.file,
|
|
108
|
+
line: f.line,
|
|
109
|
+
category: f.category,
|
|
110
|
+
finding: f.finding,
|
|
111
|
+
recommendation: f.recommendation,
|
|
112
|
+
})),
|
|
113
|
+
reports: { html: saved.html, dashboard: saved.dashboard },
|
|
114
|
+
}, null, 2) + '\n');
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
process.stdout.write(`AUDIT RESULT: ${failingFindings.length === 0 ? 'PASS' : 'FAIL'}\n`);
|
|
118
|
+
process.stdout.write(` findings: ${report.findings.length} (${report.criticalCount} critical, ${report.highCount} high)\n`);
|
|
119
|
+
process.stdout.write(` cost: $${costSummary.totalUsd.toFixed(4)} | duration: ${(durationMs / 1000).toFixed(1)}s\n`);
|
|
120
|
+
process.stdout.write(` html: ${saved.html}\n`);
|
|
121
|
+
if (failingFindings.length > 0) {
|
|
122
|
+
process.stdout.write(`\nFailing findings (${failOn}+):\n`);
|
|
123
|
+
failingFindings.slice(0, 20).forEach((f, i) => {
|
|
124
|
+
process.stdout.write(` ${i + 1}. [${f.severity}] ${f.file}${f.line ? `:${f.line}` : ''} — ${f.finding}\n`);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
void allOutput;
|
|
129
|
+
process.exit(report.criticalCount > 0 ? 2 : failingFindings.length > 0 ? 1 : 0);
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
133
|
+
if (options.format === 'json') {
|
|
134
|
+
process.stdout.write(JSON.stringify({ passed: false, error: msg }) + '\n');
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
process.stderr.write(`ERROR: ${msg}\n`);
|
|
138
|
+
}
|
|
139
|
+
process.exit(3);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=ci.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../src/cli/commands/ci.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/menu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/cli/menu.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/cli/menu.ts"],"names":[],"mappings":"AAuOA,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFxD"}
|
package/dist/cli/menu.js
CHANGED
|
@@ -3,7 +3,7 @@ import chalk from 'chalk';
|
|
|
3
3
|
import { selectOne, selectMany, printHeader } from './tui.js';
|
|
4
4
|
const ALL_DOMAINS = [
|
|
5
5
|
{ label: 'security', hint: 'pentester finding attack vectors', value: 'security' },
|
|
6
|
-
{ label: 'bugs', hint: 'QA hunting logic failures & null
|
|
6
|
+
{ label: 'bugs', hint: 'QA hunting logic failures & null dereferences', value: 'bugs' },
|
|
7
7
|
{ label: 'redundancy', hint: 'architect eliminating dead/duplicate code', value: 'redundancy' },
|
|
8
8
|
{ label: 'error-handling', hint: 'SRE finding silent failure points', value: 'error-handling' },
|
|
9
9
|
{ label: 'architecture', hint: 'tech lead evaluating coupling & debt', value: 'architecture' },
|
|
@@ -26,23 +26,48 @@ const PRESETS = [
|
|
|
26
26
|
{ label: '✨ Quality', hint: 'bugs, architecture, testing, redundancy, error-handling', value: 'quality' },
|
|
27
27
|
{ label: '🏢 SaaS', hint: 'multitenancy, compliance, security, resilience, observability', value: 'saas' },
|
|
28
28
|
{ label: '🏦 FinTech', hint: 'compliance, security, data, multitenancy, error-handling', value: 'fintech' },
|
|
29
|
-
{ label: '🌍 Full', hint: 'all 15 personas
|
|
29
|
+
{ label: '🌍 Full', hint: 'all 15 personas (requires --force-full)', value: 'full' },
|
|
30
30
|
{ label: '📝 Custom…', hint: 'select individual personas with Space', value: 'custom' },
|
|
31
31
|
{ label: '← Back', value: 'back' },
|
|
32
32
|
];
|
|
33
33
|
const BUDGETS = [
|
|
34
|
-
{ label: 'low', hint: '
|
|
35
|
-
{ label: 'normal', hint: '
|
|
36
|
-
{ label: 'deep', hint: '
|
|
34
|
+
{ label: 'low', hint: 'fast & cheap · est. $0.10–0.50', value: 'low' },
|
|
35
|
+
{ label: 'normal', hint: 'balanced · est. $0.50–2.00', value: 'normal' },
|
|
36
|
+
{ label: 'deep', hint: 'thorough · est. $2.00–5.00', value: 'deep' },
|
|
37
37
|
];
|
|
38
38
|
const SCAN_ITEMS = [
|
|
39
39
|
{ label: 'api-map', hint: 'endpoints with auth/rate-limit status', value: 'api-map' },
|
|
40
40
|
{ label: 'env-audit', hint: 'env vars documented vs undocumented', value: 'env-audit' },
|
|
41
41
|
{ label: 'cognitive-load', hint: 'nesting, magic numbers, long functions', value: 'cognitive-load' },
|
|
42
|
-
{ label: 'secrets', hint: 'hardcoded credentials in
|
|
42
|
+
{ label: 'secrets', hint: 'hardcoded credentials in source files', value: 'secrets' },
|
|
43
43
|
{ label: 'sbom', hint: 'software bill of materials + unpinned deps', value: 'sbom' },
|
|
44
44
|
{ label: '← Back', value: 'back' },
|
|
45
45
|
];
|
|
46
|
+
const MAIN_ITEMS = [
|
|
47
|
+
{ label: 'Analyze', value: '', header: true },
|
|
48
|
+
{ label: '🔍 Audit', hint: 'multi-persona AI analysis', value: 'audit' },
|
|
49
|
+
{ label: '💊 Health', hint: 'composite score 0-100', value: 'health' },
|
|
50
|
+
{ label: '🔬 Scan', hint: 'zero-token local scans', value: 'scan' },
|
|
51
|
+
{ label: '🔀 Diff', hint: 'compare two audit runs', value: 'diff' },
|
|
52
|
+
{ label: 'Explore', value: '', header: true },
|
|
53
|
+
{ label: '🌐 Graph', hint: 'interactive dependency map', value: 'graph' },
|
|
54
|
+
{ label: '📈 Churn', hint: 'git churn + bus factor', value: 'churn' },
|
|
55
|
+
{ label: '🌲 Tree', hint: 'tree view with finding hotspots', value: 'tree' },
|
|
56
|
+
{ label: '🏗️ Patterns', hint: 'architecture pattern detection', value: 'patterns' },
|
|
57
|
+
{ label: 'AI Assist', value: '', header: true },
|
|
58
|
+
{ label: '➡️ Next', hint: 'recommended low-token next action', value: 'next' },
|
|
59
|
+
{ label: '💬 Explain', hint: 'AI explanation + onboarding guide', value: 'explain' },
|
|
60
|
+
{ label: '🧾 Context', hint: 'compact AI-safe context', value: 'context' },
|
|
61
|
+
{ label: '🔧 Fix', hint: 'AI-guided fix for a finding', value: 'fix' },
|
|
62
|
+
{ label: '💭 Chat', hint: 'interactive AI chat about the repo', value: 'chat' },
|
|
63
|
+
{ label: 'Utilities', value: '', header: true },
|
|
64
|
+
{ label: '📊 Report', hint: 'health + findings + context.md', value: 'report' },
|
|
65
|
+
{ label: '🔎 Search', hint: 'repo index search', value: 'search' },
|
|
66
|
+
{ label: '📚 Docs', hint: 'quick start, providers, examples', value: 'docs' },
|
|
67
|
+
{ label: '', value: 'sep', separator: true },
|
|
68
|
+
{ label: '❯ Natural language', hint: 'type a request in Portuguese or English', value: 'nl' },
|
|
69
|
+
{ label: ' Quit', value: 'quit' },
|
|
70
|
+
];
|
|
46
71
|
function run(args) {
|
|
47
72
|
const result = spawnSync(process.execPath, [process.argv[1], ...args], {
|
|
48
73
|
stdio: 'inherit',
|
|
@@ -51,39 +76,64 @@ function run(args) {
|
|
|
51
76
|
if (result.error)
|
|
52
77
|
console.error(chalk.red(result.error.message));
|
|
53
78
|
}
|
|
79
|
+
async function promptLine(question) {
|
|
80
|
+
const rl = (await import('readline')).createInterface({ input: process.stdin, output: process.stdout });
|
|
81
|
+
return new Promise((resolve) => {
|
|
82
|
+
rl.question(chalk.cyan(` ${question}: `), (ans) => { rl.close(); resolve(ans.trim()); });
|
|
83
|
+
});
|
|
84
|
+
}
|
|
54
85
|
async function runAuditMenu(cwd) {
|
|
55
86
|
const preset = await selectOne('Select persona preset', PRESETS, 'Each preset is a team of specialized AI personas');
|
|
56
87
|
if (!preset || preset === 'back')
|
|
57
88
|
return;
|
|
58
|
-
let
|
|
89
|
+
let domainArgs;
|
|
59
90
|
if (preset === 'custom') {
|
|
60
91
|
const chosen = await selectMany('Select personas', ALL_DOMAINS, 'Space to toggle, Enter to confirm');
|
|
61
92
|
if (!chosen || chosen.length === 0)
|
|
62
93
|
return;
|
|
63
|
-
|
|
94
|
+
domainArgs = ['--domains', chosen.join(',')];
|
|
64
95
|
}
|
|
65
96
|
else {
|
|
66
|
-
|
|
97
|
+
domainArgs = ['--preset', preset];
|
|
67
98
|
}
|
|
68
99
|
const budget = await selectOne('Select budget', BUDGETS);
|
|
69
100
|
if (!budget)
|
|
70
101
|
return;
|
|
71
|
-
const
|
|
102
|
+
const budgetHint = BUDGETS.find((b) => b.value === budget)?.hint ?? '';
|
|
103
|
+
const confirm = await selectOne(`Run audit? preset=${preset} budget=${budget} ${budgetHint}`, [
|
|
72
104
|
{ label: '✓ Run now', value: 'run' },
|
|
73
105
|
{ label: '✗ Cancel', value: 'cancel' },
|
|
74
106
|
]);
|
|
75
107
|
if (confirm !== 'run')
|
|
76
108
|
return;
|
|
77
109
|
console.log(chalk.bold.cyan('\nStarting audit…\n'));
|
|
78
|
-
run(['--cwd', cwd, 'audit', '.',
|
|
110
|
+
run(['--cwd', cwd, 'audit', '.', ...domainArgs, '--budget', budget]);
|
|
79
111
|
}
|
|
80
112
|
async function runScanMenu(cwd) {
|
|
81
113
|
const item = await selectOne('Select scan type', SCAN_ITEMS);
|
|
82
114
|
if (!item || item === 'back')
|
|
83
115
|
return;
|
|
84
|
-
console.log(chalk.bold.cyan(`\nRunning scan ${item}…\n`));
|
|
116
|
+
console.log(chalk.bold.cyan(`\nRunning scan: ${item}…\n`));
|
|
85
117
|
run(['--cwd', cwd, 'scan', item]);
|
|
86
118
|
}
|
|
119
|
+
async function runSearchMenu(cwd) {
|
|
120
|
+
const query = await promptLine('Search query');
|
|
121
|
+
if (!query)
|
|
122
|
+
return;
|
|
123
|
+
console.log(chalk.bold.cyan(`\nSearching: ${query}…\n`));
|
|
124
|
+
run(['--cwd', cwd, 'search', query]);
|
|
125
|
+
}
|
|
126
|
+
async function runFixMenu(cwd) {
|
|
127
|
+
const file = await promptLine('File to fix (relative path)');
|
|
128
|
+
if (!file)
|
|
129
|
+
return;
|
|
130
|
+
const issue = await promptLine('Describe the issue (optional, Enter to skip)');
|
|
131
|
+
const args = ['--cwd', cwd, 'fix', file];
|
|
132
|
+
if (issue)
|
|
133
|
+
args.push('--issue', issue);
|
|
134
|
+
console.log(chalk.bold.cyan(`\nRunning fix on ${file}…\n`));
|
|
135
|
+
run(args);
|
|
136
|
+
}
|
|
87
137
|
async function runExplainMenu(cwd) {
|
|
88
138
|
const mode = await selectOne('Select mode', [
|
|
89
139
|
{ label: 'explain <file>', hint: 'what a file does and why it matters', value: 'explain' },
|
|
@@ -95,14 +145,10 @@ async function runExplainMenu(cwd) {
|
|
|
95
145
|
return;
|
|
96
146
|
if (mode === 'onboard') {
|
|
97
147
|
console.log(chalk.bold.cyan('\nGenerating onboarding guide…\n'));
|
|
98
|
-
run(['--cwd', cwd, 'onboard']);
|
|
148
|
+
run(['--cwd', cwd, 'explain', '--onboard']);
|
|
99
149
|
return;
|
|
100
150
|
}
|
|
101
|
-
|
|
102
|
-
const rl = (await import('readline')).createInterface({ input: process.stdin, output: process.stdout });
|
|
103
|
-
const file = await new Promise((resolve) => {
|
|
104
|
-
rl.question(chalk.cyan(` File path: `), (ans) => { rl.close(); resolve(ans.trim()); });
|
|
105
|
-
});
|
|
151
|
+
const file = await promptLine('File path');
|
|
106
152
|
if (!file)
|
|
107
153
|
return;
|
|
108
154
|
console.log(chalk.bold.cyan(`\nRunning ${mode} on ${file}…\n`));
|
|
@@ -117,9 +163,9 @@ function printDocumentation() {
|
|
|
117
163
|
console.log(` ${chalk.cyan('aion menu')} open this menu`);
|
|
118
164
|
console.log(` ${chalk.cyan('aion next')} recommended low-token flow`);
|
|
119
165
|
console.log(` ${chalk.cyan('aion audit . --preset security')} security-focused audit`);
|
|
120
|
-
console.log(` ${chalk.cyan('aion audit . --max-files 20')}
|
|
166
|
+
console.log(` ${chalk.cyan('aion audit . --max-files 20')} cap AI file scope`);
|
|
121
167
|
console.log(` ${chalk.cyan('aion context --audit')} compact AI-safe audit context`);
|
|
122
|
-
console.log(` ${chalk.cyan('aion search "
|
|
168
|
+
console.log(` ${chalk.cyan('aion search "<query>"')} search repo index`);
|
|
123
169
|
console.log(` ${chalk.cyan('aion tree --hotspots')} tree view with latest findings`);
|
|
124
170
|
console.log(` ${chalk.cyan('aion report latest')} latest report paths`);
|
|
125
171
|
console.log(` ${chalk.cyan('aion scan secrets')} local secret scan`);
|
|
@@ -131,10 +177,9 @@ function printDocumentation() {
|
|
|
131
177
|
console.log(` ${chalk.cyan('ANTHROPIC_API_KEY')} Claude SDK provider`);
|
|
132
178
|
console.log(` ${chalk.cyan('claude /login')} Claude CLI fallback`);
|
|
133
179
|
console.log(` ${chalk.cyan('OPENROUTER_API_KEY')} OpenRouter provider`);
|
|
134
|
-
console.log(` ${chalk.cyan('AI_RUNTIME_CODEX_MODEL')} Codex model override`);
|
|
135
180
|
console.log('');
|
|
136
181
|
console.log(chalk.bold(' Audit presets'));
|
|
137
|
-
console.log(' security
|
|
182
|
+
console.log(' security · ai · backend · devops · quality · saas · fintech · full');
|
|
138
183
|
console.log('');
|
|
139
184
|
console.log(chalk.bold(' Natural language examples'));
|
|
140
185
|
console.log(` ${chalk.cyan('aion "audit this repo for dependency risks"')}`);
|
|
@@ -142,32 +187,13 @@ function printDocumentation() {
|
|
|
142
187
|
console.log(` ${chalk.cyan('aion "explain the payment flow"')}`);
|
|
143
188
|
console.log('');
|
|
144
189
|
console.log(chalk.bold(' Runtime files'));
|
|
145
|
-
console.log(` ${chalk.cyan('.ai-runtime/')}
|
|
146
|
-
console.log(` ${chalk.cyan('.ai-runtime/reports/audits/')}
|
|
147
|
-
console.log(` ${chalk.cyan('.
|
|
148
|
-
console.log(` ${chalk.cyan('AI_RUNTIME_DB_PATH')} task store override`);
|
|
190
|
+
console.log(` ${chalk.cyan('.ai-runtime/reports/index.html')} audit dashboard`);
|
|
191
|
+
console.log(` ${chalk.cyan('.ai-runtime/reports/audits/')} per-run reports`);
|
|
192
|
+
console.log(` ${chalk.cyan('~/.aion/update-check.json')} update cache`);
|
|
149
193
|
console.log('');
|
|
150
|
-
console.log(chalk.dim('
|
|
194
|
+
console.log(chalk.dim(' npm: https://www.npmjs.com/package/@aionlabsai/aion'));
|
|
151
195
|
console.log('');
|
|
152
196
|
}
|
|
153
|
-
const MAIN_ITEMS = [
|
|
154
|
-
{ label: '🔍 Audit', hint: 'multi-persona code analysis', value: 'audit' },
|
|
155
|
-
{ label: '➡️ Next', hint: 'recommended low-token flow', value: 'next' },
|
|
156
|
-
{ label: '🧾 Context', hint: 'compact AI-safe context', value: 'context' },
|
|
157
|
-
{ label: '🔎 Search', hint: 'repo index search without tokens', value: 'search' },
|
|
158
|
-
{ label: '🌲 Tree', hint: 'tree + latest finding hotspots', value: 'tree' },
|
|
159
|
-
{ label: '📊 Report', hint: 'health + findings + context.md', value: 'report' },
|
|
160
|
-
{ label: '🌐 Graph', hint: 'interactive dependency map', value: 'graph' },
|
|
161
|
-
{ label: '📈 Churn', hint: 'git churn + bus factor', value: 'churn' },
|
|
162
|
-
{ label: '🔬 Scan', hint: 'quick zero-token scans', value: 'scan' },
|
|
163
|
-
{ label: '🏗️ Patterns', hint: 'architecture pattern detection', value: 'patterns' },
|
|
164
|
-
{ label: '💊 Health', hint: 'composite score 0-100', value: 'health' },
|
|
165
|
-
{ label: '💬 Explain / Onboard', hint: 'AI explanation + onboarding', value: 'explain' },
|
|
166
|
-
{ label: '📚 Documentation', hint: 'quick start, providers, scans', value: 'docs' },
|
|
167
|
-
{ label: '─', value: 'sep', separator: true },
|
|
168
|
-
{ label: '❯ Natural language', hint: 'type a request in Portuguese or English', value: 'nl' },
|
|
169
|
-
{ label: ' Quit', value: 'quit' },
|
|
170
|
-
];
|
|
171
197
|
function runMenuFallback(cwd) {
|
|
172
198
|
const projectName = cwd.split('/').pop() ?? cwd;
|
|
173
199
|
console.log('');
|
|
@@ -178,16 +204,14 @@ function runMenuFallback(cwd) {
|
|
|
178
204
|
console.log(chalk.bold(' Available commands:'));
|
|
179
205
|
console.log('');
|
|
180
206
|
console.log(` ${chalk.cyan('aion menu')} interactive menu`);
|
|
207
|
+
console.log(` ${chalk.cyan('aion next')} recommended next action`);
|
|
181
208
|
console.log(` ${chalk.cyan('aion audit . --preset ai')} AI/LLM audit`);
|
|
182
|
-
console.log(` ${chalk.cyan('aion audit --list-personas')} show all personas`);
|
|
183
209
|
console.log(` ${chalk.cyan('aion health')} composite health score`);
|
|
184
210
|
console.log(` ${chalk.cyan('aion report --md')} full markdown report`);
|
|
185
211
|
console.log(` ${chalk.cyan('aion graph')} dependency graph`);
|
|
186
212
|
console.log(` ${chalk.cyan('aion churn')} git churn analysis`);
|
|
187
|
-
console.log(` ${chalk.cyan('aion scan
|
|
213
|
+
console.log(` ${chalk.cyan('aion scan secrets')} secret scan`);
|
|
188
214
|
console.log(` ${chalk.cyan('aion patterns')} architecture patterns`);
|
|
189
|
-
console.log(` ${chalk.cyan('aion onboard')} developer guide (AI)`);
|
|
190
|
-
console.log(` ${chalk.cyan('aion menu')} includes documentation`);
|
|
191
215
|
console.log('');
|
|
192
216
|
}
|
|
193
217
|
export async function runMenu(cwd) {
|
|
@@ -195,7 +219,6 @@ export async function runMenu(cwd) {
|
|
|
195
219
|
runMenuFallback(cwd);
|
|
196
220
|
return;
|
|
197
221
|
}
|
|
198
|
-
// Show project info
|
|
199
222
|
let info = cwd.split('/').pop() ?? cwd;
|
|
200
223
|
try {
|
|
201
224
|
const { GraphAgent } = await import('../agents/graph-agent.js');
|
|
@@ -205,12 +228,45 @@ export async function runMenu(cwd) {
|
|
|
205
228
|
info += ` · ${index.stats.files} files`;
|
|
206
229
|
}
|
|
207
230
|
catch { /* best-effort */ }
|
|
231
|
+
// Show last audit summary in header if available
|
|
232
|
+
try {
|
|
233
|
+
const { existsSync, readFileSync } = await import('fs');
|
|
234
|
+
const { join } = await import('path');
|
|
235
|
+
const historyFile = join(cwd, '.ai-runtime', 'reports', 'audit-history.json');
|
|
236
|
+
if (existsSync(historyFile)) {
|
|
237
|
+
const history = JSON.parse(readFileSync(historyFile, 'utf8'));
|
|
238
|
+
const last = history.at(-1);
|
|
239
|
+
if (last) {
|
|
240
|
+
const ago = Math.round((Date.now() - new Date(last.createdAt).getTime()) / 60000);
|
|
241
|
+
const agoStr = ago < 60 ? `${ago}m ago` : `${Math.round(ago / 60)}h ago`;
|
|
242
|
+
const crit = last.criticalCount > 0 ? chalk.red(`${last.criticalCount} critical`) : '';
|
|
243
|
+
const high = last.highCount > 0 ? chalk.yellow(`${last.highCount} high`) : '';
|
|
244
|
+
const counts = [crit, high].filter(Boolean).join(', ');
|
|
245
|
+
info += ` · last audit ${agoStr}${counts ? ': ' + counts : ' — clean'}`;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
catch { /* best-effort */ }
|
|
250
|
+
const cmdMap = {
|
|
251
|
+
report: ['--cwd', cwd, 'report'],
|
|
252
|
+
next: ['--cwd', cwd, 'next'],
|
|
253
|
+
context: ['--cwd', cwd, 'context', '--audit'],
|
|
254
|
+
tree: ['--cwd', cwd, 'tree', '--hotspots'],
|
|
255
|
+
graph: ['--cwd', cwd, 'graph'],
|
|
256
|
+
churn: ['--cwd', cwd, 'churn'],
|
|
257
|
+
patterns: ['--cwd', cwd, 'patterns'],
|
|
258
|
+
health: ['--cwd', cwd, 'health'],
|
|
259
|
+
chat: ['--cwd', cwd, 'chat'],
|
|
260
|
+
diff: ['--cwd', cwd, 'diff'],
|
|
261
|
+
};
|
|
208
262
|
while (true) {
|
|
209
263
|
console.log('');
|
|
210
264
|
printHeader(cwd.split('/').pop() ?? cwd, info);
|
|
211
265
|
const action = await selectOne('What do you want to run?', MAIN_ITEMS);
|
|
212
266
|
if (!action || action === 'quit')
|
|
213
267
|
break;
|
|
268
|
+
if (action === 'sep' || action === '')
|
|
269
|
+
continue;
|
|
214
270
|
if (action === 'audit') {
|
|
215
271
|
await runAuditMenu(cwd);
|
|
216
272
|
continue;
|
|
@@ -223,34 +279,28 @@ export async function runMenu(cwd) {
|
|
|
223
279
|
await runExplainMenu(cwd);
|
|
224
280
|
continue;
|
|
225
281
|
}
|
|
282
|
+
if (action === 'search') {
|
|
283
|
+
await runSearchMenu(cwd);
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
if (action === 'fix') {
|
|
287
|
+
await runFixMenu(cwd);
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
226
290
|
if (action === 'docs') {
|
|
227
291
|
printDocumentation();
|
|
228
|
-
}
|
|
229
|
-
if (action === 'sep')
|
|
230
292
|
continue;
|
|
293
|
+
}
|
|
231
294
|
if (action === 'nl') {
|
|
232
295
|
const { runInteractive } = await import('./interactive.js');
|
|
233
296
|
await runInteractive(cwd);
|
|
234
297
|
break;
|
|
235
298
|
}
|
|
236
|
-
// Simple commands
|
|
237
|
-
const cmdMap = {
|
|
238
|
-
report: ['--cwd', cwd, 'report'],
|
|
239
|
-
next: ['--cwd', cwd, 'next'],
|
|
240
|
-
context: ['--cwd', cwd, 'context', '--audit'],
|
|
241
|
-
search: ['--cwd', cwd, 'search', 'audit reports'],
|
|
242
|
-
tree: ['--cwd', cwd, 'tree', '--hotspots'],
|
|
243
|
-
graph: ['--cwd', cwd, 'graph'],
|
|
244
|
-
churn: ['--cwd', cwd, 'churn'],
|
|
245
|
-
patterns: ['--cwd', cwd, 'patterns'],
|
|
246
|
-
health: ['--cwd', cwd, 'health'],
|
|
247
|
-
};
|
|
248
299
|
const args = cmdMap[action];
|
|
249
300
|
if (args) {
|
|
250
301
|
console.log(chalk.bold.cyan(`\nRunning ${action}…\n`));
|
|
251
302
|
run(args);
|
|
252
303
|
}
|
|
253
|
-
// After command, ask to continue
|
|
254
304
|
const cont = await selectOne('', [
|
|
255
305
|
{ label: '← Back to menu', value: 'menu' },
|
|
256
306
|
{ label: ' Quit', value: 'quit' },
|