@aionlabsai/aion 0.2.0 → 0.2.2
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/README.md +283 -9
- package/dist/agents/base-agent.d.ts.map +1 -1
- package/dist/agents/base-agent.js +23 -12
- package/dist/agents/base-agent.js.map +1 -1
- package/dist/agents/synthesizer.d.ts +3 -0
- package/dist/agents/synthesizer.d.ts.map +1 -1
- package/dist/agents/synthesizer.js +93 -52
- package/dist/agents/synthesizer.js.map +1 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +115 -121
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/chat.d.ts +3 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +129 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/context.d.ts +3 -0
- package/dist/cli/commands/context.d.ts.map +1 -0
- package/dist/cli/commands/context.js +72 -0
- package/dist/cli/commands/context.js.map +1 -0
- package/dist/cli/commands/diff.d.ts +3 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/diff.js +144 -0
- package/dist/cli/commands/diff.js.map +1 -0
- package/dist/cli/commands/health.d.ts.map +1 -1
- package/dist/cli/commands/health.js +17 -0
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +52 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/next.d.ts +3 -0
- package/dist/cli/commands/next.d.ts.map +1 -0
- package/dist/cli/commands/next.js +49 -0
- package/dist/cli/commands/next.js.map +1 -0
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +52 -392
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +50 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/tree.d.ts +3 -0
- package/dist/cli/commands/tree.d.ts.map +1 -0
- package/dist/cli/commands/tree.js +85 -0
- package/dist/cli/commands/tree.js.map +1 -0
- package/dist/cli/menu.d.ts.map +1 -1
- package/dist/cli/menu.js +56 -1
- package/dist/cli/menu.js.map +1 -1
- package/dist/core/cost-tracker.d.ts +10 -0
- package/dist/core/cost-tracker.d.ts.map +1 -1
- package/dist/core/cost-tracker.js +53 -0
- package/dist/core/cost-tracker.js.map +1 -1
- package/dist/core/orchestrator.d.ts +2 -1
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +2 -2
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/pipelines/audit-pipeline.d.ts +13 -2
- package/dist/core/pipelines/audit-pipeline.d.ts.map +1 -1
- package/dist/core/pipelines/audit-pipeline.js +156 -37
- package/dist/core/pipelines/audit-pipeline.js.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/infra/aion-config.d.ts +26 -0
- package/dist/infra/aion-config.d.ts.map +1 -0
- package/dist/infra/aion-config.js +60 -0
- package/dist/infra/aion-config.js.map +1 -0
- package/dist/infra/aion-ignore.d.ts +3 -0
- package/dist/infra/aion-ignore.d.ts.map +1 -0
- package/dist/infra/aion-ignore.js +35 -0
- package/dist/infra/aion-ignore.js.map +1 -0
- package/dist/infra/audit-cache.d.ts +40 -0
- package/dist/infra/audit-cache.d.ts.map +1 -0
- package/dist/infra/audit-cache.js +94 -0
- package/dist/infra/audit-cache.js.map +1 -0
- package/dist/infra/audit-model.d.ts +72 -0
- package/dist/infra/audit-model.d.ts.map +1 -0
- package/dist/infra/audit-model.js +146 -0
- package/dist/infra/audit-model.js.map +1 -0
- package/dist/infra/audit-report-writer.d.ts +4 -0
- package/dist/infra/audit-report-writer.d.ts.map +1 -0
- package/dist/infra/audit-report-writer.js +290 -0
- package/dist/infra/audit-report-writer.js.map +1 -0
- package/dist/infra/audit-trend.d.ts +17 -0
- package/dist/infra/audit-trend.d.ts.map +1 -0
- package/dist/infra/audit-trend.js +113 -0
- package/dist/infra/audit-trend.js.map +1 -0
- package/dist/infra/code-metrics.d.ts +11 -0
- package/dist/infra/code-metrics.d.ts.map +1 -1
- package/dist/infra/code-metrics.js +62 -0
- package/dist/infra/code-metrics.js.map +1 -1
- package/dist/infra/db/store.d.ts.map +1 -1
- package/dist/infra/db/store.js +14 -7
- package/dist/infra/db/store.js.map +1 -1
- package/dist/infra/embeddings.d.ts +2 -0
- package/dist/infra/embeddings.d.ts.map +1 -1
- package/dist/infra/embeddings.js +33 -15
- package/dist/infra/embeddings.js.map +1 -1
- package/dist/infra/project-report.d.ts +67 -0
- package/dist/infra/project-report.d.ts.map +1 -0
- package/dist/infra/project-report.js +159 -0
- package/dist/infra/project-report.js.map +1 -0
- package/dist/infra/repo-vectors.d.ts +31 -0
- package/dist/infra/repo-vectors.d.ts.map +1 -0
- package/dist/infra/repo-vectors.js +83 -0
- package/dist/infra/repo-vectors.js.map +1 -0
- package/dist/infra/update-check.d.ts +3 -0
- package/dist/infra/update-check.d.ts.map +1 -0
- package/dist/infra/update-check.js +84 -0
- package/dist/infra/update-check.js.map +1 -0
- package/dist/prompts/scanner.d.ts +1 -0
- package/dist/prompts/scanner.d.ts.map +1 -1
- package/dist/prompts/scanner.js +5 -1
- package/dist/prompts/scanner.js.map +1 -1
- package/dist/prompts/synthesizer.d.ts.map +1 -1
- package/dist/prompts/synthesizer.js +7 -23
- package/dist/prompts/synthesizer.js.map +1 -1
- package/dist/providers/cli-provider.d.ts +1 -0
- package/dist/providers/cli-provider.d.ts.map +1 -1
- package/dist/providers/cli-provider.js +22 -2
- package/dist/providers/cli-provider.js.map +1 -1
- package/package.json +24 -19
- package/dist/agents/planner.test.d.ts +0 -2
- package/dist/agents/planner.test.d.ts.map +0 -1
- package/dist/agents/planner.test.js +0 -21
- package/dist/agents/planner.test.js.map +0 -1
- package/dist/core/cost-tracker.test.d.ts +0 -2
- package/dist/core/cost-tracker.test.d.ts.map +0 -1
- package/dist/core/cost-tracker.test.js +0 -36
- package/dist/core/cost-tracker.test.js.map +0 -1
- package/dist/core/pipelines/audit-pipeline.test.d.ts +0 -2
- package/dist/core/pipelines/audit-pipeline.test.d.ts.map +0 -1
- package/dist/core/pipelines/audit-pipeline.test.js +0 -135
- package/dist/core/pipelines/audit-pipeline.test.js.map +0 -1
- package/dist/core/repo-context.d.ts +0 -2
- package/dist/core/repo-context.d.ts.map +0 -1
- package/dist/core/repo-context.js +0 -12
- package/dist/core/repo-context.js.map +0 -1
- package/dist/core/repo-context.test.d.ts +0 -2
- package/dist/core/repo-context.test.d.ts.map +0 -1
- package/dist/core/repo-context.test.js +0 -40
- package/dist/core/repo-context.test.js.map +0 -1
- package/dist/core/runtime-policy.test.d.ts +0 -2
- package/dist/core/runtime-policy.test.d.ts.map +0 -1
- package/dist/core/runtime-policy.test.js +0 -27
- package/dist/core/runtime-policy.test.js.map +0 -1
- package/dist/infra/bm25.test.d.ts +0 -2
- package/dist/infra/bm25.test.d.ts.map +0 -1
- package/dist/infra/bm25.test.js +0 -17
- package/dist/infra/bm25.test.js.map +0 -1
- package/dist/infra/chunker.test.d.ts +0 -2
- package/dist/infra/chunker.test.d.ts.map +0 -1
- package/dist/infra/chunker.test.js +0 -33
- package/dist/infra/chunker.test.js.map +0 -1
- package/dist/infra/db/database.d.ts +0 -4
- package/dist/infra/db/database.d.ts.map +0 -1
- package/dist/infra/db/database.js +0 -25
- package/dist/infra/db/database.js.map +0 -1
- package/dist/infra/evidence-gate.test.d.ts +0 -2
- package/dist/infra/evidence-gate.test.d.ts.map +0 -1
- package/dist/infra/evidence-gate.test.js +0 -36
- package/dist/infra/evidence-gate.test.js.map +0 -1
- package/dist/infra/repo-index.test.d.ts +0 -2
- package/dist/infra/repo-index.test.d.ts.map +0 -1
- package/dist/infra/repo-index.test.js +0 -53
- package/dist/infra/repo-index.test.js.map +0 -1
- package/dist/infra/repo-query.test.d.ts +0 -2
- package/dist/infra/repo-query.test.d.ts.map +0 -1
- package/dist/infra/repo-query.test.js +0 -34
- package/dist/infra/repo-query.test.js.map +0 -1
- package/dist/infra/semgrep.test.d.ts +0 -2
- package/dist/infra/semgrep.test.d.ts.map +0 -1
- package/dist/infra/semgrep.test.js +0 -39
- package/dist/infra/semgrep.test.js.map +0 -1
- package/dist/schemas/audit.test.d.ts +0 -2
- package/dist/schemas/audit.test.d.ts.map +0 -1
- package/dist/schemas/audit.test.js +0 -41
- package/dist/schemas/audit.test.js.map +0 -1
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { readFileSync, readdirSync, existsSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
function loadReport(pathOrAlias, cwd) {
|
|
5
|
+
// Support "latest", "prev", or absolute/relative file paths
|
|
6
|
+
const dir = join(cwd, '.ai-runtime', 'reports');
|
|
7
|
+
if (pathOrAlias === 'latest' || pathOrAlias === 'prev') {
|
|
8
|
+
if (!existsSync(dir))
|
|
9
|
+
throw new Error('No audit reports found. Run `aion audit` first.');
|
|
10
|
+
const files = readdirSync(dir).filter((f) => f.startsWith('audit-') && f.endsWith('.json')).sort();
|
|
11
|
+
if (files.length === 0)
|
|
12
|
+
throw new Error('No audit reports found in .ai-runtime/reports/');
|
|
13
|
+
const idx = pathOrAlias === 'latest' ? files.length - 1 : Math.max(0, files.length - 2);
|
|
14
|
+
const file = files[idx];
|
|
15
|
+
const raw = readFileSync(join(dir, file), 'utf8');
|
|
16
|
+
return { report: JSON.parse(raw), label: file };
|
|
17
|
+
}
|
|
18
|
+
// File path
|
|
19
|
+
const resolvedPath = pathOrAlias.startsWith('/') ? pathOrAlias : join(cwd, pathOrAlias);
|
|
20
|
+
if (!existsSync(resolvedPath))
|
|
21
|
+
throw new Error(`File not found: ${resolvedPath}`);
|
|
22
|
+
const raw = readFileSync(resolvedPath, 'utf8');
|
|
23
|
+
return { report: JSON.parse(raw), label: resolvedPath.split('/').pop() ?? resolvedPath };
|
|
24
|
+
}
|
|
25
|
+
function findingKey(f) {
|
|
26
|
+
return `${f.file}:${f.line ?? ''}:${f.category}:${f.finding.slice(0, 80)}`;
|
|
27
|
+
}
|
|
28
|
+
function severityRank(s) {
|
|
29
|
+
return { critical: 5, high: 4, medium: 3, low: 2, info: 1 }[s] ?? 0;
|
|
30
|
+
}
|
|
31
|
+
const SEV_COLOR = {
|
|
32
|
+
critical: chalk.bgRed.white.bold,
|
|
33
|
+
high: chalk.red.bold,
|
|
34
|
+
medium: chalk.yellow,
|
|
35
|
+
low: chalk.gray,
|
|
36
|
+
info: chalk.dim,
|
|
37
|
+
};
|
|
38
|
+
function renderFinding(f, prefix, prefixColor) {
|
|
39
|
+
const loc = f.line ? `${f.file}:${f.line}` : f.file;
|
|
40
|
+
const sev = (SEV_COLOR[f.severity] ?? chalk.white)(f.severity);
|
|
41
|
+
console.log(prefixColor(`${prefix} [${f.severity}]`) + chalk.bold(` ${loc}`) + (f.persona ? chalk.dim(` (${f.persona})`) : ''));
|
|
42
|
+
console.log(` ${f.finding}`);
|
|
43
|
+
console.log(chalk.dim(` → ${f.recommendation}`));
|
|
44
|
+
console.log();
|
|
45
|
+
}
|
|
46
|
+
export function registerDiff(program) {
|
|
47
|
+
program
|
|
48
|
+
.command('diff [before] [after]')
|
|
49
|
+
.description('Compare two audit runs. Defaults: before=prev, after=latest. Pass file paths or "prev"/"latest".')
|
|
50
|
+
.option('--json', 'output raw JSON diff')
|
|
51
|
+
.action(async (before = 'prev', after = 'latest', options) => {
|
|
52
|
+
const cwd = process.cwd();
|
|
53
|
+
let beforeData;
|
|
54
|
+
let afterData;
|
|
55
|
+
try {
|
|
56
|
+
beforeData = loadReport(before, cwd);
|
|
57
|
+
afterData = loadReport(after, cwd);
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
console.error(chalk.red(err.message));
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
const { report: beforeReport, label: beforeLabel } = beforeData;
|
|
64
|
+
const { report: afterReport, label: afterLabel } = afterData;
|
|
65
|
+
const beforeKeys = new Map(beforeReport.findings.map((f) => [findingKey(f), f]));
|
|
66
|
+
const afterKeys = new Map(afterReport.findings.map((f) => [findingKey(f), f]));
|
|
67
|
+
const added = [];
|
|
68
|
+
const resolved = [];
|
|
69
|
+
const escalated = [];
|
|
70
|
+
for (const [key, f] of afterKeys) {
|
|
71
|
+
if (!beforeKeys.has(key))
|
|
72
|
+
added.push(f);
|
|
73
|
+
else {
|
|
74
|
+
const prev = beforeKeys.get(key);
|
|
75
|
+
if (severityRank(f.severity) > severityRank(prev.severity))
|
|
76
|
+
escalated.push({ before: prev, after: f });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
for (const [key, f] of beforeKeys) {
|
|
80
|
+
if (!afterKeys.has(key))
|
|
81
|
+
resolved.push(f);
|
|
82
|
+
}
|
|
83
|
+
added.sort((a, b) => severityRank(b.severity) - severityRank(a.severity));
|
|
84
|
+
resolved.sort((a, b) => severityRank(b.severity) - severityRank(a.severity));
|
|
85
|
+
if (options.json) {
|
|
86
|
+
console.log(JSON.stringify({ before: beforeLabel, after: afterLabel, added, resolved, escalated }, null, 2));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
console.log('\n' + chalk.bold('═'.repeat(60)));
|
|
90
|
+
console.log(chalk.bold.cyan(' AUDIT DIFF'));
|
|
91
|
+
console.log(chalk.dim(` ${beforeLabel} → ${afterLabel}`));
|
|
92
|
+
console.log(chalk.bold('═'.repeat(60)));
|
|
93
|
+
const beforeCritical = beforeReport.findings.filter((f) => f.severity === 'critical').length;
|
|
94
|
+
const beforeHigh = beforeReport.findings.filter((f) => f.severity === 'high').length;
|
|
95
|
+
const afterCritical = afterReport.findings.filter((f) => f.severity === 'critical').length;
|
|
96
|
+
const afterHigh = afterReport.findings.filter((f) => f.severity === 'high').length;
|
|
97
|
+
const deltaTotal = afterReport.findings.length - beforeReport.findings.length;
|
|
98
|
+
const deltaCritical = afterCritical - beforeCritical;
|
|
99
|
+
const deltaHigh = afterHigh - beforeHigh;
|
|
100
|
+
const sign = (n) => (n > 0 ? chalk.red(`+${n}`) : n < 0 ? chalk.green(String(n)) : chalk.gray('0'));
|
|
101
|
+
console.log('');
|
|
102
|
+
console.log(chalk.bold('Summary:'));
|
|
103
|
+
console.log(` Total findings: ${beforeReport.findings.length} → ${afterReport.findings.length} (${sign(deltaTotal)})`);
|
|
104
|
+
console.log(` Critical: ${beforeCritical} → ${afterCritical} (${sign(deltaCritical)})`);
|
|
105
|
+
console.log(` High: ${beforeHigh} → ${afterHigh} (${sign(deltaHigh)})`);
|
|
106
|
+
console.log(` New findings: ${chalk.red(String(added.length))}`);
|
|
107
|
+
console.log(` Resolved: ${chalk.green(String(resolved.length))}`);
|
|
108
|
+
console.log(` Escalated: ${escalated.length > 0 ? chalk.yellow(String(escalated.length)) : chalk.gray('0')}`);
|
|
109
|
+
if (added.length > 0) {
|
|
110
|
+
console.log('\n' + chalk.red.bold(`── New Findings (${added.length}) ──────────────────────────────────`));
|
|
111
|
+
console.log();
|
|
112
|
+
for (const f of added)
|
|
113
|
+
renderFinding(f, '+', chalk.red.bold);
|
|
114
|
+
}
|
|
115
|
+
if (resolved.length > 0) {
|
|
116
|
+
console.log('\n' + chalk.green.bold(`── Resolved (${resolved.length}) ─────────────────────────────────────`));
|
|
117
|
+
console.log();
|
|
118
|
+
for (const f of resolved)
|
|
119
|
+
renderFinding(f, '-', chalk.green);
|
|
120
|
+
}
|
|
121
|
+
if (escalated.length > 0) {
|
|
122
|
+
console.log('\n' + chalk.yellow.bold(`── Escalated (${escalated.length}) ──────────────────────────────────`));
|
|
123
|
+
console.log();
|
|
124
|
+
for (const { before: bef, after: aft } of escalated) {
|
|
125
|
+
const loc = aft.line ? `${aft.file}:${aft.line}` : aft.file;
|
|
126
|
+
console.log(chalk.yellow(` ↑ ${bef.severity} → ${aft.severity}`) + chalk.bold(` ${loc}`));
|
|
127
|
+
console.log(` ${aft.finding}`);
|
|
128
|
+
console.log();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (added.length === 0 && resolved.length === 0 && escalated.length === 0) {
|
|
132
|
+
console.log('\n' + chalk.green(' No changes between audits.'));
|
|
133
|
+
}
|
|
134
|
+
console.log(chalk.bold('═'.repeat(60)));
|
|
135
|
+
// CI exit code: fail if new criticals or highs introduced
|
|
136
|
+
const newCriticals = added.filter((f) => f.severity === 'critical').length;
|
|
137
|
+
const newHighs = added.filter((f) => f.severity === 'high').length;
|
|
138
|
+
if (newCriticals > 0)
|
|
139
|
+
process.exit(2);
|
|
140
|
+
if (newHighs > 0)
|
|
141
|
+
process.exit(1);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/cli/commands/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4GrD"}
|
|
@@ -6,6 +6,7 @@ import { buildChurnReport } from '../../infra/git-analysis.js';
|
|
|
6
6
|
import { measureCognitiveLoad } from '../../infra/code-metrics.js';
|
|
7
7
|
import { detectPatterns } from '../../infra/pattern-detect.js';
|
|
8
8
|
import { GraphAgent } from '../../agents/graph-agent.js';
|
|
9
|
+
import { appendTrend, loadTrend, renderTrendChart } from '../../infra/audit-trend.js';
|
|
9
10
|
function loadLatestAudit(cwd) {
|
|
10
11
|
const dir = join(cwd, '.ai-runtime', 'reports');
|
|
11
12
|
if (!existsSync(dir))
|
|
@@ -28,6 +29,7 @@ export function registerHealth(program) {
|
|
|
28
29
|
.description('Composite health score (0-100) across security, architecture, tests, churn, and maintainability')
|
|
29
30
|
.option('--threshold <n>', 'exit code 1 if score below threshold (for CI gate)', '0')
|
|
30
31
|
.option('--days <n>', 'git lookback period for churn/bus-factor', '90')
|
|
32
|
+
.option('--trend', 'show historical score chart')
|
|
31
33
|
.option('--json', 'output raw JSON')
|
|
32
34
|
.action(async (options) => {
|
|
33
35
|
const cwd = process.cwd();
|
|
@@ -69,6 +71,21 @@ export function registerHealth(program) {
|
|
|
69
71
|
auditCriticals: audit?.criticalCount,
|
|
70
72
|
auditHighs: audit?.highCount,
|
|
71
73
|
});
|
|
74
|
+
// --trend: show chart and exit
|
|
75
|
+
if (options.trend) {
|
|
76
|
+
const trend = loadTrend(cwd);
|
|
77
|
+
console.log(chalk.bold.cyan('\nHealth Score History\n'));
|
|
78
|
+
renderTrendChart(trend.entries);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// Append to trend history
|
|
82
|
+
appendTrend(cwd, {
|
|
83
|
+
timestamp: new Date().toISOString(),
|
|
84
|
+
score: score.total,
|
|
85
|
+
grade: score.grade,
|
|
86
|
+
dimensions: Object.fromEntries(score.dimensions.map((d) => [d.name, d.score])),
|
|
87
|
+
totalFiles: index.stats.files,
|
|
88
|
+
});
|
|
72
89
|
if (options.json) {
|
|
73
90
|
console.log(JSON.stringify(score, null, 2));
|
|
74
91
|
if (threshold > 0 && score.total < threshold)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/cli/commands/health.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/cli/commands/health.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiDnD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { existsSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
export function registerInit(program) {
|
|
5
|
+
program
|
|
6
|
+
.command('init')
|
|
7
|
+
.description('Create .aionrc.json and .aionignore starter files in the current project')
|
|
8
|
+
.option('--force', 'overwrite existing files')
|
|
9
|
+
.action(async (options) => {
|
|
10
|
+
const cwd = process.cwd();
|
|
11
|
+
const { writeDefaultConfig } = await import('../../infra/aion-config.js');
|
|
12
|
+
const rcPath = join(cwd, '.aionrc.json');
|
|
13
|
+
const ignorePath = join(cwd, '.aionignore');
|
|
14
|
+
if (existsSync(rcPath) && !options.force) {
|
|
15
|
+
console.log(chalk.yellow(` .aionrc.json already exists — use --force to overwrite`));
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
writeDefaultConfig(cwd);
|
|
19
|
+
console.log(chalk.green(` ✓ .aionrc.json created`));
|
|
20
|
+
}
|
|
21
|
+
if (existsSync(ignorePath) && !options.force) {
|
|
22
|
+
console.log(chalk.yellow(` .aionignore already exists — use --force to overwrite`));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
const { writeFileSync } = await import('fs');
|
|
26
|
+
writeFileSync(ignorePath, [
|
|
27
|
+
'# aion ignore patterns (glob syntax)',
|
|
28
|
+
'# Files matching these patterns are skipped during audit',
|
|
29
|
+
'',
|
|
30
|
+
'# Generated files',
|
|
31
|
+
'*.generated.*',
|
|
32
|
+
'*.pb.ts',
|
|
33
|
+
'*.pb.js',
|
|
34
|
+
'',
|
|
35
|
+
'# Test fixtures & mocks',
|
|
36
|
+
'fixtures/**',
|
|
37
|
+
'testdata/**',
|
|
38
|
+
'__mocks__/**',
|
|
39
|
+
'',
|
|
40
|
+
'# Vendored / third-party',
|
|
41
|
+
'vendor/**',
|
|
42
|
+
'third_party/**',
|
|
43
|
+
'',
|
|
44
|
+
].join('\n'), 'utf8');
|
|
45
|
+
console.log(chalk.green(` ✓ .aionignore created`));
|
|
46
|
+
}
|
|
47
|
+
console.log('');
|
|
48
|
+
console.log(chalk.dim(` Edit .aionrc.json to set default preset, budget, and provider.`));
|
|
49
|
+
console.log(chalk.dim(` Edit .aionignore to add project-specific exclusion patterns.`));
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0EAA0E,CAAC;SACvF,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAE1E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAE5C,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7C,aAAa,CAAC,UAAU,EAAE;gBACxB,sCAAsC;gBACtC,0DAA0D;gBAC1D,EAAE;gBACF,mBAAmB;gBACnB,eAAe;gBACf,SAAS;gBACT,SAAS;gBACT,EAAE;gBACF,yBAAyB;gBACzB,aAAa;gBACb,aAAa;gBACb,cAAc;gBACd,EAAE;gBACF,0BAA0B;gBAC1B,WAAW;gBACX,gBAAgB;gBAChB,EAAE;aACH,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/next.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8BnD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { existsSync, readFileSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
function hasLatestAudit(cwd) {
|
|
5
|
+
return existsSync(join(cwd, '.ai-runtime', 'reports', 'latest-audit.json'));
|
|
6
|
+
}
|
|
7
|
+
function latestAiContext(cwd) {
|
|
8
|
+
try {
|
|
9
|
+
const pointer = JSON.parse(readFileSync(join(cwd, '.ai-runtime', 'reports', 'latest-audit.json'), 'utf8'));
|
|
10
|
+
return pointer.aiContext;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function registerNext(program) {
|
|
17
|
+
program
|
|
18
|
+
.command('next')
|
|
19
|
+
.description('Show the recommended low-token next steps for this project')
|
|
20
|
+
.action(() => {
|
|
21
|
+
const cwd = process.cwd();
|
|
22
|
+
const project = cwd.split('/').pop() ?? cwd;
|
|
23
|
+
console.log(chalk.bold.cyan(`\nNext steps for ${project}\n`));
|
|
24
|
+
console.log(chalk.bold('Low-token analysis flow:'));
|
|
25
|
+
console.log(` 1. ${chalk.cyan('aion audit . --dry-run --max-files 20')}`);
|
|
26
|
+
console.log(` 2. ${chalk.cyan('aion audit . --local-only')}`);
|
|
27
|
+
console.log(` 3. ${chalk.cyan('aion audit . --preset security --scanners 2 --max-files 20')}`);
|
|
28
|
+
console.log(` 4. ${chalk.cyan('aion context --audit --budget 6000')}`);
|
|
29
|
+
console.log(` 5. ${chalk.cyan('aion report latest')}`);
|
|
30
|
+
console.log('');
|
|
31
|
+
if (hasLatestAudit(cwd)) {
|
|
32
|
+
console.log(chalk.bold('Latest audit exists:'));
|
|
33
|
+
console.log(` ${chalk.green('ok')} Run ${chalk.cyan('aion report latest')} to see the right files.`);
|
|
34
|
+
const aiContext = latestAiContext(cwd);
|
|
35
|
+
if (aiContext)
|
|
36
|
+
console.log(` Send to AI: ${chalk.cyan(aiContext)}`);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
console.log(chalk.bold('No audit found yet:'));
|
|
40
|
+
console.log(` Start with ${chalk.cyan('aion audit . --local-only')} for a zero-token baseline.`);
|
|
41
|
+
}
|
|
42
|
+
console.log('');
|
|
43
|
+
console.log(chalk.bold('Navigation without AI tokens:'));
|
|
44
|
+
console.log(` ${chalk.cyan('aion tree --hotspots --rebuild')}`);
|
|
45
|
+
console.log(` ${chalk.cyan('aion search "audit report generation" --semantic --rebuild')}`);
|
|
46
|
+
console.log('');
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=next.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../../src/cli/commands/next.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmCrD"}
|