@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
|
@@ -1,97 +1,35 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { mkdirSync, writeFileSync } from 'fs';
|
|
3
|
-
import { join } from 'path';
|
|
4
2
|
import { Orchestrator } from '../../core/orchestrator.js';
|
|
5
3
|
import { AuditPipeline } from '../../core/pipelines/audit-pipeline.js';
|
|
6
4
|
import { createRuntimePolicy } from '../../core/runtime-policy.js';
|
|
7
5
|
import { CostTracker } from '../../core/cost-tracker.js';
|
|
8
6
|
import { Renderer } from '../ui/renderer.js';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
high: chalk.red.bold,
|
|
12
|
-
medium: chalk.yellow,
|
|
13
|
-
low: chalk.gray,
|
|
14
|
-
info: chalk.dim,
|
|
15
|
-
};
|
|
16
|
-
const SEVERITY_ICON = {
|
|
17
|
-
critical: '🔴',
|
|
18
|
-
high: '🟠',
|
|
19
|
-
medium: '🟡',
|
|
20
|
-
low: '⚪',
|
|
21
|
-
info: '🔵',
|
|
22
|
-
};
|
|
7
|
+
import { saveAuditReport } from '../../infra/audit-report-writer.js';
|
|
8
|
+
import { SEVERITY_RANK } from '../../infra/audit-model.js';
|
|
23
9
|
function renderAuditReport(report, durationMs) {
|
|
24
|
-
|
|
25
|
-
console.log(chalk.bold.cyan(' AUDIT REPORT') + chalk.gray(` — ${report.totalFiles} files — ${(durationMs / 1000).toFixed(1)}s`));
|
|
26
|
-
console.log(chalk.bold('═'.repeat(60)));
|
|
27
|
-
// Summary
|
|
28
|
-
console.log('\n' + chalk.bold('Summary:'));
|
|
29
|
-
console.log(' ' + report.summary);
|
|
30
|
-
// Counts
|
|
10
|
+
const bySeverity = report.findings.reduce((acc, f) => { acc[f.severity] = (acc[f.severity] ?? 0) + 1; return acc; }, {});
|
|
31
11
|
const counts = [
|
|
32
12
|
report.criticalCount > 0 ? chalk.bgRed.white.bold(` ${report.criticalCount} critical `) : null,
|
|
33
13
|
report.highCount > 0 ? chalk.red.bold(`${report.highCount} high`) : null,
|
|
34
|
-
chalk.
|
|
35
|
-
chalk.gray(`${
|
|
14
|
+
(bySeverity['medium'] ?? 0) > 0 ? chalk.yellow(`${bySeverity['medium']} medium`) : null,
|
|
15
|
+
(bySeverity['low'] ?? 0) > 0 ? chalk.gray(`${bySeverity['low']} low`) : null,
|
|
36
16
|
].filter(Boolean);
|
|
37
|
-
console.log('\n' + chalk.bold('
|
|
38
|
-
|
|
17
|
+
console.log('\n' + chalk.bold.cyan('Audit complete') + chalk.gray(` — ${report.totalFiles} files, ${(durationMs / 1000).toFixed(1)}s`));
|
|
18
|
+
console.log(chalk.bold('Findings:') + ' ' + counts.join(' ') + chalk.dim(` (${report.findings.length} total)`));
|
|
19
|
+
console.log(' ' + chalk.dim(report.summary));
|
|
39
20
|
if (report.topPriorities.length > 0) {
|
|
40
|
-
console.log(
|
|
41
|
-
report.topPriorities.forEach((p, i) => {
|
|
42
|
-
|
|
43
|
-
|
|
21
|
+
console.log(chalk.bold('\nTop Priorities:'));
|
|
22
|
+
report.topPriorities.slice(0, 3).forEach((p, i) => console.log(chalk.cyan(` ${i + 1}.`) + ' ' + p));
|
|
23
|
+
if (report.topPriorities.length > 3)
|
|
24
|
+
console.log(chalk.dim(` ... ${report.topPriorities.length - 3} more in HTML`));
|
|
44
25
|
}
|
|
45
|
-
// Findings: if sections exist, render by domain; otherwise by severity
|
|
46
|
-
const auditReport = report;
|
|
47
|
-
if (auditReport.sections && auditReport.sections.length > 0) {
|
|
48
|
-
for (const section of auditReport.sections) {
|
|
49
|
-
if (section.findings.length === 0)
|
|
50
|
-
continue;
|
|
51
|
-
console.log('\n' + chalk.bold.blue(` ▸ ${section.domain.toUpperCase()} (${section.findings.length})`));
|
|
52
|
-
for (const f of section.findings) {
|
|
53
|
-
const loc = f.line ? `${f.file}:${f.line}` : f.file;
|
|
54
|
-
const color = SEVERITY_COLOR[f.severity] ?? chalk.white;
|
|
55
|
-
console.log(color(` ${loc}`) + chalk.gray(` [${f.severity}]`));
|
|
56
|
-
console.log(` ${f.finding}`);
|
|
57
|
-
console.log(chalk.dim(` → ${f.recommendation}`));
|
|
58
|
-
console.log();
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
const order = ['critical', 'high', 'medium', 'low', 'info'];
|
|
64
|
-
for (const sev of order) {
|
|
65
|
-
const group = report.findings.filter(f => f.severity === sev);
|
|
66
|
-
if (group.length === 0)
|
|
67
|
-
continue;
|
|
68
|
-
const color = SEVERITY_COLOR[sev] ?? chalk.white;
|
|
69
|
-
const icon = SEVERITY_ICON[sev] ?? '';
|
|
70
|
-
console.log('\n' + color(` ${icon} ${sev.toUpperCase()} (${group.length}) `));
|
|
71
|
-
for (const f of group) {
|
|
72
|
-
const loc = f.line ? `${f.file}:${f.line}` : f.file;
|
|
73
|
-
console.log(chalk.bold(` ${loc}`) + chalk.gray(` [${f.category}]`));
|
|
74
|
-
console.log(` ${f.finding}`);
|
|
75
|
-
console.log(chalk.dim(` → ${f.recommendation}`));
|
|
76
|
-
console.log();
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
console.log(chalk.bold('═'.repeat(60)));
|
|
81
|
-
}
|
|
82
|
-
function saveAuditReport(report, durationMs) {
|
|
83
|
-
const dir = join(process.cwd(), '.ai-runtime', 'reports');
|
|
84
|
-
mkdirSync(dir, { recursive: true });
|
|
85
|
-
const stamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
86
|
-
const file = join(dir, `audit-${stamp}.json`);
|
|
87
|
-
writeFileSync(file, JSON.stringify({ ...report, durationMs, createdAt: new Date().toISOString() }, null, 2), 'utf8');
|
|
88
|
-
return file;
|
|
89
26
|
}
|
|
90
|
-
function renderDryRun(stats) {
|
|
27
|
+
function renderDryRun(pipeline, stats, maxFilesForAi) {
|
|
91
28
|
console.log('\n' + chalk.bold.cyan('Audit dry run'));
|
|
92
29
|
console.log(chalk.gray('No agents were started and no API tokens were used.'));
|
|
93
30
|
console.log(` total files seen: ${stats.totalFiles}`);
|
|
94
31
|
console.log(` audit source files: ${stats.auditFiles.length}`);
|
|
32
|
+
console.log(` AI target files: ${Math.min(stats.auditFiles.length, maxFilesForAi)} prioritized file(s)`);
|
|
95
33
|
console.log(` ignored directories: ${stats.ignoredDirs}`);
|
|
96
34
|
console.log(` ignored/non-source files: ${stats.ignoredFiles}`);
|
|
97
35
|
console.log(` oversized source files: ${stats.oversizedFiles}`);
|
|
@@ -101,83 +39,139 @@ function renderDryRun(stats) {
|
|
|
101
39
|
exts.forEach(([ext, count]) => console.log(` ${ext}: ${count}`));
|
|
102
40
|
}
|
|
103
41
|
if (stats.auditFiles.length > 0) {
|
|
104
|
-
console.log('\n' + chalk.bold('
|
|
105
|
-
stats.auditFiles.slice(0,
|
|
42
|
+
console.log('\n' + chalk.bold('AI target sample:'));
|
|
43
|
+
pipeline.prioritizeFiles(stats.auditFiles, maxFilesForAi).slice(0, 15).forEach((file) => console.log(` ${file}`));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function parseBudget(value) {
|
|
47
|
+
return (['low', 'normal', 'deep'].includes(value) ? value : 'low');
|
|
48
|
+
}
|
|
49
|
+
function parsePositiveInt(value, fallback, max) {
|
|
50
|
+
if (!value)
|
|
51
|
+
return fallback;
|
|
52
|
+
return Math.max(1, Math.min(max, parseInt(String(value), 10) || fallback));
|
|
53
|
+
}
|
|
54
|
+
async function printPersonas() {
|
|
55
|
+
const { listPresets } = await import('../../infra/persona-presets.js');
|
|
56
|
+
console.log(chalk.bold.cyan('\nPersonas (scanner domains):\n'));
|
|
57
|
+
[
|
|
58
|
+
'security', 'bugs', 'redundancy', 'error-handling', 'architecture', 'testing',
|
|
59
|
+
'performance', 'infrastructure', 'observability', 'resilience', 'data',
|
|
60
|
+
'dependencies', 'compliance', 'multitenancy', 'prompt-audit',
|
|
61
|
+
].forEach((d) => console.log(` ${chalk.cyan(d)}`));
|
|
62
|
+
listPresets();
|
|
63
|
+
}
|
|
64
|
+
async function maybeAutoFix(options, report, orch) {
|
|
65
|
+
if (!options.fix)
|
|
66
|
+
return;
|
|
67
|
+
const maxFixes = parsePositiveInt(options.fixMax, 5, 20);
|
|
68
|
+
const minSev = (['critical', 'high', 'medium'].includes(options.fixMinSeverity)
|
|
69
|
+
? options.fixMinSeverity : 'high');
|
|
70
|
+
const eligible = report.findings
|
|
71
|
+
.filter((f) => f.file && f.line && ((SEVERITY_RANK[f.severity] ?? 0) >= (SEVERITY_RANK[minSev] ?? 0)))
|
|
72
|
+
.sort((a, b) => (SEVERITY_RANK[b.severity] ?? 0) - (SEVERITY_RANK[a.severity] ?? 0))
|
|
73
|
+
.slice(0, maxFixes);
|
|
74
|
+
if (options.dryRun) {
|
|
75
|
+
console.log('\n' + chalk.bold.yellow(`Fix dry-run: ${eligible.length} finding(s) would be targeted.`));
|
|
76
|
+
eligible.forEach((f, i) => console.log(` ${i + 1}. ${f.severity} ${f.file}:${f.line} ${f.finding}`));
|
|
77
|
+
}
|
|
78
|
+
else if (report.criticalCount > 0 || report.highCount > 0 || minSev === 'medium') {
|
|
79
|
+
console.log(chalk.bold.yellow(`\nAuto-fixing up to ${maxFixes} ${minSev}+ findings...\n`));
|
|
80
|
+
const fixReport = await orch.runAuditFixPipeline(report, { maxFixes, minSeverity: minSev });
|
|
81
|
+
console.log(chalk.bold(`Fix summary: ${fixReport.succeeded} fixed, ${fixReport.failed} failed, ${fixReport.skipped} skipped`));
|
|
106
82
|
}
|
|
107
83
|
}
|
|
108
84
|
export function registerAudit(program) {
|
|
109
85
|
program
|
|
110
86
|
.command('audit [target]')
|
|
111
|
-
.description('Deep
|
|
87
|
+
.description('Deep audit with local scan, capped AI file scope, and compact reports')
|
|
112
88
|
.option('-n, --scanners <n>', 'number of scanner agents (auto-selected if omitted)')
|
|
113
89
|
.option('--budget <budget>', 'low | normal | deep (default: low)', 'low')
|
|
114
90
|
.option('--provider <provider>', 'claude | openrouter (default: claude)')
|
|
115
|
-
.option('--model <model>', 'model override for openrouter
|
|
91
|
+
.option('--model <model>', 'model override for openrouter')
|
|
116
92
|
.option('--preset <name>', 'persona preset: security, ai, backend, devops, quality, saas, fintech, full')
|
|
117
|
-
.option('--domains <list>', 'comma-separated scanner domains
|
|
93
|
+
.option('--domains <list>', 'comma-separated scanner domains')
|
|
118
94
|
.option('--list-personas', 'show all available personas and presets then exit')
|
|
95
|
+
.option('--local-only', 'run only deterministic local scans; no AI scanners or synthesizer')
|
|
96
|
+
.option('--force-full', 'allow the full preset to start all requested AI scanner domains')
|
|
97
|
+
.option('--max-files <n>', 'max prioritized source files sent to AI scanners')
|
|
98
|
+
.option('--scanner-timeout <seconds>', 'timeout per AI scanner in seconds')
|
|
99
|
+
.option('--ai-context-budget <tokens>', 'max approximate tokens for ai-context.md', '8000')
|
|
119
100
|
.option('--fix', 'auto-fix critical/high findings after audit')
|
|
120
101
|
.option('--fix-max <n>', 'max findings to auto-fix (default: 5)', '5')
|
|
121
102
|
.option('--fix-min-severity <s>', 'minimum severity to fix: critical|high|medium (default: high)', 'high')
|
|
122
103
|
.option('--dry-run', 'collect audit file stats without starting agents')
|
|
104
|
+
.option('--incremental', 'only scan files changed since last audit')
|
|
123
105
|
.action(async (target = '.', options) => {
|
|
124
|
-
if (options.listPersonas)
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
const explicitN = options.scanners ? Math.max(1, Math.min(15, parseInt(options.scanners, 10) || 5)) : undefined;
|
|
136
|
-
const budget = (['low', 'normal', 'deep'].includes(options.budget) ? options.budget : 'low');
|
|
137
|
-
const providerName = options.provider === 'openrouter' ? 'openrouter' : undefined;
|
|
106
|
+
if (options.listPersonas)
|
|
107
|
+
return printPersonas();
|
|
108
|
+
const { loadAionConfig, mergeConfig } = await import('../../infra/aion-config.js');
|
|
109
|
+
const mergedOptions = mergeConfig(options, loadAionConfig(process.cwd()));
|
|
110
|
+
const explicitN = mergedOptions.scanners ? Math.max(1, Math.min(15, parseInt(String(mergedOptions.scanners), 10) || 5)) : undefined;
|
|
111
|
+
const budget = parseBudget(mergedOptions.budget);
|
|
112
|
+
const scannerTimeoutSeconds = mergedOptions.scannerTimeout
|
|
113
|
+
? Math.max(10, Math.min(600, parseInt(String(mergedOptions.scannerTimeout), 10) || 90))
|
|
114
|
+
: budget === 'deep' ? 240 : budget === 'normal' ? 150 : 90;
|
|
115
|
+
const maxFilesForAi = parsePositiveInt(mergedOptions.maxFiles, budget === 'deep' ? 120 : budget === 'normal' ? 60 : 30, 500);
|
|
138
116
|
const policyInput = {
|
|
139
117
|
budget,
|
|
140
|
-
...(
|
|
141
|
-
...(
|
|
142
|
-
plannerProvider: providerName,
|
|
143
|
-
investigatorProvider: providerName,
|
|
144
|
-
developerProvider: providerName,
|
|
145
|
-
reviewerProvider: providerName,
|
|
146
|
-
} : {}),
|
|
118
|
+
...(mergedOptions.model ? { openrouterModel: mergedOptions.model } : {}),
|
|
119
|
+
...(mergedOptions.provider === 'openrouter' ? { plannerProvider: 'openrouter', investigatorProvider: 'openrouter', developerProvider: 'openrouter', reviewerProvider: 'openrouter' } : {}),
|
|
147
120
|
};
|
|
148
121
|
const policy = createRuntimePolicy(policyInput);
|
|
149
|
-
const renderer = new Renderer();
|
|
150
|
-
const orch = new Orchestrator(process.cwd(), policyInput);
|
|
151
122
|
if (options.dryRun) {
|
|
152
123
|
const pipeline = new AuditPipeline(process.cwd(), policy, new CostTracker(), () => { }, () => { });
|
|
153
|
-
renderDryRun(pipeline.collectAuditStats(target));
|
|
124
|
+
renderDryRun(pipeline, pipeline.collectAuditStats(target), maxFilesForAi);
|
|
154
125
|
return;
|
|
155
126
|
}
|
|
127
|
+
const renderer = new Renderer();
|
|
128
|
+
const orch = new Orchestrator(process.cwd(), policyInput);
|
|
156
129
|
orch.on('agent:start', ({ agentName }) => renderer.agentStart(agentName));
|
|
157
130
|
orch.on('agent:output', ({ agentName, text }) => renderer.agentChunk(agentName, text));
|
|
158
131
|
orch.on('agent:done', ({ agentName, durationMs }) => renderer.agentDone(agentName, durationMs));
|
|
159
|
-
// Resolve persona domains
|
|
160
132
|
const { resolveDomainsFromConfig } = await import('../../infra/persona-presets.js');
|
|
161
|
-
const { domains: explicitDomains, source: domainSource } = resolveDomainsFromConfig(process.cwd(),
|
|
133
|
+
const { domains: explicitDomains, source: domainSource } = resolveDomainsFromConfig(process.cwd(), mergedOptions.preset, mergedOptions.domains, explicitN);
|
|
134
|
+
const maxAiScanners = explicitN ?? policy.maxAgents;
|
|
135
|
+
const requestsFullPreset = (mergedOptions.preset === 'full' && explicitN === undefined) || explicitDomains.length > maxAiScanners;
|
|
136
|
+
if (requestsFullPreset && !mergedOptions.forceFull && !mergedOptions.localOnly) {
|
|
137
|
+
console.error(chalk.red.bold('\nRefusing expensive full audit by default.\n'));
|
|
138
|
+
console.error(chalk.gray(`Requested ${explicitDomains.length} domains, but ${budget} budget allows ${maxAiScanners} AI scanner(s).`));
|
|
139
|
+
console.error(` ${chalk.cyan('aion audit . --local-only')} no AI tokens`);
|
|
140
|
+
console.error(` ${chalk.cyan(`aion audit . --preset ${mergedOptions.preset ?? 'security'} --scanners ${maxAiScanners}`)} capped AI audit`);
|
|
141
|
+
console.error(` ${chalk.cyan('aion audit . --preset full --force-full')} explicit full-cost run`);
|
|
142
|
+
process.exitCode = 1;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const label = mergedOptions.localOnly ? 'local-only scan (no AI tokens)'
|
|
146
|
+
: explicitDomains.length > 0 ? `personas: ${explicitDomains.slice(0, maxAiScanners).join(', ')} [${domainSource}]`
|
|
147
|
+
: explicitN ? `${explicitN} scanners` : `auto scanners (${budget} budget)`;
|
|
148
|
+
console.log(chalk.bold.cyan(`\nStarting audit with ${label}...\n`));
|
|
162
149
|
const start = Date.now();
|
|
163
|
-
const nLabel = explicitDomains.length > 0
|
|
164
|
-
? `personas: ${explicitDomains.join(', ')} [${domainSource}]`
|
|
165
|
-
: explicitN ? `${explicitN} scanners` : `auto scanners (${budget} budget)`;
|
|
166
|
-
console.log(chalk.bold.cyan(`\nStarting audit with ${nLabel}...\n`));
|
|
167
150
|
try {
|
|
168
|
-
const report = await orch.runAuditPipeline(target, explicitN, explicitDomains.length > 0 ? explicitDomains : undefined
|
|
151
|
+
const report = await orch.runAuditPipeline(target, explicitN, explicitDomains.length > 0 ? explicitDomains : undefined, {
|
|
152
|
+
incremental: options.incremental,
|
|
153
|
+
localOnly: mergedOptions.localOnly,
|
|
154
|
+
maxAiScanners: mergedOptions.forceFull ? explicitDomains.length || explicitN : maxAiScanners,
|
|
155
|
+
maxFilesForAi,
|
|
156
|
+
scannerTimeoutMs: scannerTimeoutSeconds * 1000,
|
|
157
|
+
});
|
|
169
158
|
const durationMs = Date.now() - start;
|
|
170
159
|
renderAuditReport(report, durationMs);
|
|
171
|
-
|
|
160
|
+
const costSummary = {
|
|
161
|
+
totalUsd: orch.costs.totalUsd(),
|
|
162
|
+
model: policy.claudeModel,
|
|
163
|
+
perAgent: orch.costs.byAgent().map((e) => ({
|
|
164
|
+
name: e.agentName,
|
|
165
|
+
costUsd: e.costUsd,
|
|
166
|
+
inputTokens: e.usage.inputTokens,
|
|
167
|
+
outputTokens: e.usage.outputTokens,
|
|
168
|
+
})),
|
|
169
|
+
};
|
|
170
|
+
const saved = saveAuditReport(process.cwd(), report, durationMs, parsePositiveInt(mergedOptions.aiContextBudget, 8000, 100000), costSummary);
|
|
171
|
+
console.log(chalk.gray(`\nhtml: ${saved.html}`));
|
|
172
|
+
console.log(chalk.gray(`dashboard: ${saved.dashboard}`));
|
|
172
173
|
console.log(chalk.dim(orch.costs.summary()));
|
|
173
|
-
|
|
174
|
-
const maxFixes = Math.max(1, Math.min(20, parseInt(options.fixMax, 10) || 5));
|
|
175
|
-
const minSev = (['critical', 'high', 'medium'].includes(options.fixMinSeverity)
|
|
176
|
-
? options.fixMinSeverity : 'high');
|
|
177
|
-
console.log(chalk.bold.yellow(`\nAuto-fixing up to ${maxFixes} ${minSev}+ findings...\n`));
|
|
178
|
-
const fixReport = await orch.runAuditFixPipeline(report, { maxFixes, minSeverity: minSev });
|
|
179
|
-
console.log(chalk.bold(`Fix summary: ${fixReport.succeeded} fixed, ${fixReport.failed} failed, ${fixReport.skipped} skipped`));
|
|
180
|
-
}
|
|
174
|
+
await maybeAutoFix(options, report, orch);
|
|
181
175
|
process.exit(report.criticalCount > 0 ? 2 : report.highCount > 0 ? 1 : 0);
|
|
182
176
|
}
|
|
183
177
|
catch (err) {
|
|
@@ -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":"chat.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsDzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6FnD"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import * as readline from 'readline';
|
|
3
|
+
import { GraphAgent } from '../../agents/graph-agent.js';
|
|
4
|
+
import { createRuntimePolicy } from '../../core/runtime-policy.js';
|
|
5
|
+
import { CostTracker } from '../../core/cost-tracker.js';
|
|
6
|
+
import { safeProcessEnv } from '../../providers/cli-provider.js';
|
|
7
|
+
const SYSTEM_PROMPT = `You are an expert code assistant with deep knowledge of this repository.
|
|
8
|
+
Answer questions concisely based on the provided repository context.
|
|
9
|
+
When citing code locations use file:line format.
|
|
10
|
+
Never invent file paths or function names not shown in context.
|
|
11
|
+
If unsure, say so rather than guessing.`;
|
|
12
|
+
async function askAI(cwd, question, context, provider, policy, onChunk) {
|
|
13
|
+
const systemPrompt = `${SYSTEM_PROMPT}\n\n--- REPOSITORY CONTEXT ---\n${context}\n--- END CONTEXT ---`;
|
|
14
|
+
const input = { agentName: 'chat', cwd, systemPrompt, userMessage: question, policy };
|
|
15
|
+
if (provider === 'openrouter') {
|
|
16
|
+
const { OpenRouterProvider } = await import('../../providers/openrouter-provider.js');
|
|
17
|
+
await new OpenRouterProvider(policy.openrouterModel).run(input, (_, text) => onChunk(text));
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// SDK provider (ANTHROPIC_API_KEY)
|
|
21
|
+
if (process.env['ANTHROPIC_API_KEY']) {
|
|
22
|
+
const { SdkProvider } = await import('../../providers/sdk-provider.js');
|
|
23
|
+
await new SdkProvider().run(input, (_, text) => onChunk(text));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
// Fallback: claude CLI
|
|
27
|
+
const { spawn } = await import('child_process');
|
|
28
|
+
await new Promise((resolve) => {
|
|
29
|
+
const proc = spawn('claude', ['-p', question, '--system-prompt', systemPrompt], {
|
|
30
|
+
cwd,
|
|
31
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
32
|
+
env: safeProcessEnv(),
|
|
33
|
+
});
|
|
34
|
+
proc.stdout.on('data', (chunk) => onChunk(chunk.toString()));
|
|
35
|
+
proc.on('close', () => resolve());
|
|
36
|
+
proc.on('error', () => resolve());
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export function registerChat(program) {
|
|
40
|
+
program
|
|
41
|
+
.command('chat')
|
|
42
|
+
.description('Interactive Q&A about the codebase using repo index as context')
|
|
43
|
+
.option('--budget <budget>', 'low | normal | deep', 'normal')
|
|
44
|
+
.option('--provider <provider>', 'claude | openrouter')
|
|
45
|
+
.option('--model <model>', 'model override for openrouter')
|
|
46
|
+
.option('--context-limit <n>', 'max chars of repo context injected (default: 6000)', '6000')
|
|
47
|
+
.action(async (options) => {
|
|
48
|
+
const cwd = process.cwd();
|
|
49
|
+
const contextLimit = Math.max(1000, Math.min(20000, parseInt(options.contextLimit, 10) || 6000));
|
|
50
|
+
const budget = (['low', 'normal', 'deep'].includes(options.budget) ? options.budget : 'normal');
|
|
51
|
+
const provider = options.provider ?? (process.env['OPENROUTER_API_KEY'] ? 'openrouter' : 'claude');
|
|
52
|
+
const policyInput = {
|
|
53
|
+
budget,
|
|
54
|
+
...(options.model ? { openrouterModel: options.model } : {}),
|
|
55
|
+
...(provider === 'openrouter' ? {
|
|
56
|
+
plannerProvider: 'openrouter',
|
|
57
|
+
investigatorProvider: 'openrouter',
|
|
58
|
+
developerProvider: 'openrouter',
|
|
59
|
+
reviewerProvider: 'openrouter',
|
|
60
|
+
} : {}),
|
|
61
|
+
};
|
|
62
|
+
const policy = createRuntimePolicy(policyInput);
|
|
63
|
+
const costs = new CostTracker();
|
|
64
|
+
void costs;
|
|
65
|
+
console.log(chalk.dim('\nBuilding repository index…'));
|
|
66
|
+
const graph = new GraphAgent(cwd);
|
|
67
|
+
let repoContext = '';
|
|
68
|
+
try {
|
|
69
|
+
repoContext = await graph.queryWithContext('architecture structure files modules', 20, contextLimit);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
repoContext = '(No repo index available)';
|
|
73
|
+
}
|
|
74
|
+
const projectName = cwd.split('/').pop() ?? cwd;
|
|
75
|
+
console.log(chalk.bold.cyan(`\n 💬 Aion Chat — ${projectName}`));
|
|
76
|
+
console.log(chalk.dim(` Provider: ${provider} Budget: ${budget} Context: ${repoContext.length} chars`));
|
|
77
|
+
console.log(chalk.dim(' Type "exit" or Ctrl+C to quit.'));
|
|
78
|
+
console.log(chalk.dim(' Special: "context" to show injected context, "/context <query>" to refresh it.\n'));
|
|
79
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
80
|
+
rl.on('close', () => console.log(chalk.dim('\nBye!\n')));
|
|
81
|
+
const ask = () => {
|
|
82
|
+
rl.question(chalk.cyan(' You: '), async (raw) => {
|
|
83
|
+
const question = raw.trim();
|
|
84
|
+
if (!question || question === 'exit' || question === 'quit') {
|
|
85
|
+
rl.close();
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (question === 'context') {
|
|
89
|
+
console.log(chalk.dim('\n--- Injected context (first 800 chars) ---'));
|
|
90
|
+
console.log(repoContext.slice(0, 800) + (repoContext.length > 800 ? '\n…' : ''));
|
|
91
|
+
console.log(chalk.dim('---\n'));
|
|
92
|
+
ask();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (question.startsWith('/context ')) {
|
|
96
|
+
const newQuery = question.slice('/context '.length);
|
|
97
|
+
try {
|
|
98
|
+
repoContext = await graph.queryWithContext(newQuery, 20, contextLimit);
|
|
99
|
+
console.log(chalk.dim(` Context updated (${repoContext.length} chars)\n`));
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
console.log(chalk.dim(' Could not update context\n'));
|
|
103
|
+
}
|
|
104
|
+
ask();
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
process.stdout.write(chalk.bold('\n AI: '));
|
|
108
|
+
let gotOutput = false;
|
|
109
|
+
try {
|
|
110
|
+
await askAI(cwd, question, repoContext, provider, policy, (chunk) => {
|
|
111
|
+
gotOutput = true;
|
|
112
|
+
process.stdout.write(chunk);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
console.error(chalk.red(`\n Error: ${err.message}`));
|
|
117
|
+
}
|
|
118
|
+
if (!gotOutput)
|
|
119
|
+
process.stdout.write(chalk.dim('(no response)'));
|
|
120
|
+
if (!repoContext.endsWith('\n'))
|
|
121
|
+
process.stdout.write('\n');
|
|
122
|
+
console.log();
|
|
123
|
+
ask();
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
ask();
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoDzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoBtD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import { GraphAgent } from '../../agents/graph-agent.js';
|
|
5
|
+
import { renderAiContext } from '../../infra/audit-model.js';
|
|
6
|
+
import { queryRepoIndex } from '../../infra/repo-query.js';
|
|
7
|
+
function latestAudit(cwd) {
|
|
8
|
+
try {
|
|
9
|
+
const pointerPath = join(cwd, '.ai-runtime', 'reports', 'latest-audit.json');
|
|
10
|
+
if (!existsSync(pointerPath))
|
|
11
|
+
return null;
|
|
12
|
+
const pointer = JSON.parse(readFileSync(pointerPath, 'utf8'));
|
|
13
|
+
const reportPath = pointer.runDir ? join(pointer.runDir, 'report.json') : pointer.report;
|
|
14
|
+
if (!reportPath || !existsSync(reportPath))
|
|
15
|
+
return null;
|
|
16
|
+
return JSON.parse(readFileSync(reportPath, 'utf8'));
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function trimBudget(text, tokens) {
|
|
23
|
+
const maxChars = Math.max(2000, tokens * 4);
|
|
24
|
+
return text.length > maxChars ? `${text.slice(0, maxChars)}\n\n[truncated to ~${tokens} tokens]` : text;
|
|
25
|
+
}
|
|
26
|
+
async function buildTopicContext(cwd, topic, tokens) {
|
|
27
|
+
const graph = new GraphAgent(cwd);
|
|
28
|
+
const index = await graph.ensureIndex();
|
|
29
|
+
const result = queryRepoIndex(index, topic, 12);
|
|
30
|
+
const lines = [
|
|
31
|
+
'# Aion Project Context',
|
|
32
|
+
'',
|
|
33
|
+
`Topic: ${topic}`,
|
|
34
|
+
`Repository: ${index.stats.files} files, ${index.stats.symbols} symbols, ${index.stats.chunks} chunks`,
|
|
35
|
+
'',
|
|
36
|
+
'## Relevant Files',
|
|
37
|
+
...(result.files.length ? result.files.map((f) => `- ${f.path} (${f.loc} loc${f.isTest ? ', test' : ''})`) : ['No direct file matches.']),
|
|
38
|
+
'',
|
|
39
|
+
'## Relevant Symbols',
|
|
40
|
+
...(result.symbols.length ? result.symbols.map((s) => `- ${s.name} ${s.kind} ${s.file}:${s.line}`) : ['No direct symbol matches.']),
|
|
41
|
+
'',
|
|
42
|
+
'## Dependency Edges Near Matches',
|
|
43
|
+
...(result.imports.length ? result.imports.map((i) => `- ${i.from} -> ${i.resolved ?? i.specifier}`) : ['No nearby imports.']),
|
|
44
|
+
'',
|
|
45
|
+
'## Probable Tests',
|
|
46
|
+
...(result.tests.length ? result.tests.map((t) => `- ${t.source} <= ${t.tests.join(', ')}`) : ['No probable tests found.']),
|
|
47
|
+
'',
|
|
48
|
+
];
|
|
49
|
+
return trimBudget(lines.join('\n'), tokens);
|
|
50
|
+
}
|
|
51
|
+
export function registerContext(program) {
|
|
52
|
+
program
|
|
53
|
+
.command('context [topic...]')
|
|
54
|
+
.description('Generate compact AI-safe context instead of sending raw reports or all files')
|
|
55
|
+
.option('--budget <tokens>', 'approximate max output tokens', '8000')
|
|
56
|
+
.option('--audit', 'use the latest audit as source')
|
|
57
|
+
.option('--out <file>', 'output file path')
|
|
58
|
+
.action(async (topicWords, options) => {
|
|
59
|
+
const cwd = process.cwd();
|
|
60
|
+
const budget = Math.max(1000, Math.min(100000, parseInt(options.budget, 10) || 8000));
|
|
61
|
+
const topic = topicWords.join(' ').trim() || 'project architecture audit hotspots';
|
|
62
|
+
const audit = options.audit || topicWords.length === 0 ? latestAudit(cwd) : null;
|
|
63
|
+
const text = audit ? renderAiContext(audit, budget) : await buildTopicContext(cwd, topic, budget);
|
|
64
|
+
const out = options.out ?? join(cwd, '.ai-runtime', 'context', `${topic.replace(/[^a-z0-9]+/gi, '-').replace(/^-|-$/g, '').toLowerCase() || 'project'}-context.md`);
|
|
65
|
+
mkdirSync(dirname(out), { recursive: true });
|
|
66
|
+
writeFileSync(out, text, 'utf8');
|
|
67
|
+
console.log(chalk.bold.cyan('\nContext generated'));
|
|
68
|
+
console.log(chalk.gray(`file: ${out}`));
|
|
69
|
+
console.log(chalk.gray(`size: ~${Math.round(text.length / 4)} tokens`));
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4GnD"}
|