cognium-ai 1.10.18 → 1.20.0
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 +1 -6
- package/dist/cli.d.ts +4 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +328 -170
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# cognium-ai
|
|
2
2
|
|
|
3
|
-
AI-powered static analysis CLI with LLM-enhanced vulnerability detection.
|
|
3
|
+
AI-powered static analysis CLI with LLM-enhanced vulnerability detection.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -137,11 +137,6 @@ jobs:
|
|
|
137
137
|
|
|
138
138
|
CWE-Bench-Java reference: CodeQL 22.5%, IRIS+GPT-4 45.8%.
|
|
139
139
|
|
|
140
|
-
## Related Packages
|
|
141
|
-
|
|
142
|
-
- **[circle-ir](https://github.com/cogniumhq/circle-ir)** -- Core SAST library (open source, MIT)
|
|
143
|
-
- **[circle-ir-ai](https://www.npmjs.com/package/circle-ir-ai)** -- LLM enrichment layer and programmatic API
|
|
144
|
-
|
|
145
140
|
## License
|
|
146
141
|
|
|
147
142
|
MIT
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* cognium-ai CLI
|
|
3
|
+
* cognium-ai CLI — AI-powered static analysis with LLM-enhanced vulnerability detection.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* - Delegates all analysis commands to circle-ir-ai
|
|
5
|
+
* Builds the Commander program (per-command help, LLM-by-default,
|
|
6
|
+
* --exclude/--config/--include global) and layers cognium-ai-specific
|
|
7
|
+
* subcommands on top: `init`, `version`, `doctor`.
|
|
9
8
|
*/
|
|
10
9
|
export {};
|
|
11
10
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
|
package/dist/cli.js
CHANGED
|
@@ -1,38 +1,110 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* cognium-ai CLI
|
|
3
|
+
* cognium-ai CLI — AI-powered static analysis with LLM-enhanced vulnerability detection.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* - Delegates all analysis commands to circle-ir-ai
|
|
5
|
+
* Builds the Commander program (per-command help, LLM-by-default,
|
|
6
|
+
* --exclude/--config/--include global) and layers cognium-ai-specific
|
|
7
|
+
* subcommands on top: `init`, `version`, `doctor`.
|
|
9
8
|
*/
|
|
10
|
-
import { writeFileSync, existsSync } from 'fs';
|
|
11
|
-
|
|
12
|
-
import
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
// Commands
|
|
18
|
-
executeScan, executeTrust, executeCompare, executeQuality, executeHealth, executeSecrets, executeDeadCode, executeMetrics, executeUnderstand, executeSpecDiff, executeCluster, executeGenerateSpec, executeBenchmark, executeAnalyzeSkill, } from 'circle-ir-ai/commands';
|
|
19
|
-
// Local utilities
|
|
9
|
+
import { writeFileSync, existsSync, statSync, readFileSync } from 'fs';
|
|
10
|
+
import * as fs from 'fs';
|
|
11
|
+
import * as path from 'path';
|
|
12
|
+
import { createRequire } from 'node:module';
|
|
13
|
+
import { buildProgram,
|
|
14
|
+
// Command handlers
|
|
15
|
+
executeAnalyze, executeScan, executeTrust, executeCompare, executeQuality, executeHealth, executeSecrets, executeDeadCode, executeMetrics, executeUnderstand, executeSpecDiff, executeCluster, executeGenerateSpec, executeBenchmark, executeAnalyzeSkill, } from 'circle-ir-ai/commands';
|
|
20
16
|
import { version } from './version.js';
|
|
21
|
-
import { showHelp, showVersion } from './utils/args.js';
|
|
22
17
|
import { colors } from './utils/colors.js';
|
|
23
18
|
// ---------------------------------------------------------------------------
|
|
24
|
-
//
|
|
19
|
+
// init — language-aware starter cognium.config.json
|
|
25
20
|
// ---------------------------------------------------------------------------
|
|
21
|
+
const LANG_EXTS = {
|
|
22
|
+
java: ['.java'],
|
|
23
|
+
typescript: ['.ts', '.tsx'],
|
|
24
|
+
javascript: ['.js', '.jsx', '.mjs'],
|
|
25
|
+
python: ['.py'],
|
|
26
|
+
rust: ['.rs'],
|
|
27
|
+
c: ['.c', '.h'],
|
|
28
|
+
cpp: ['.cpp', '.cc', '.cxx', '.hpp', '.hxx'],
|
|
29
|
+
bash: ['.sh', '.bash'],
|
|
30
|
+
html: ['.html', '.htm'],
|
|
31
|
+
};
|
|
32
|
+
const SKIP_DIRS = new Set([
|
|
33
|
+
'node_modules', '.git', 'dist', 'build', 'target', '__pycache__',
|
|
34
|
+
'vendor', 'coverage', '.specifica',
|
|
35
|
+
]);
|
|
36
|
+
/**
|
|
37
|
+
* Walk a directory (one level deep, max 1000 files) and detect which
|
|
38
|
+
* languages are present. Returns languages sorted by file count, descending.
|
|
39
|
+
*/
|
|
40
|
+
function detectLanguages(root) {
|
|
41
|
+
const counts = {};
|
|
42
|
+
let scanned = 0;
|
|
43
|
+
const maxFiles = 1000;
|
|
44
|
+
const walk = (dir, depth) => {
|
|
45
|
+
if (scanned >= maxFiles || depth > 6)
|
|
46
|
+
return;
|
|
47
|
+
let entries;
|
|
48
|
+
try {
|
|
49
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
for (const entry of entries) {
|
|
55
|
+
if (scanned >= maxFiles)
|
|
56
|
+
return;
|
|
57
|
+
if (entry.name.startsWith('.') && entry.isDirectory())
|
|
58
|
+
continue;
|
|
59
|
+
if (SKIP_DIRS.has(entry.name))
|
|
60
|
+
continue;
|
|
61
|
+
const full = path.join(dir, entry.name);
|
|
62
|
+
if (entry.isDirectory()) {
|
|
63
|
+
walk(full, depth + 1);
|
|
64
|
+
}
|
|
65
|
+
else if (entry.isFile()) {
|
|
66
|
+
const ext = path.extname(entry.name).toLowerCase();
|
|
67
|
+
for (const [lang, exts] of Object.entries(LANG_EXTS)) {
|
|
68
|
+
if (exts.includes(ext)) {
|
|
69
|
+
counts[lang] = (counts[lang] || 0) + 1;
|
|
70
|
+
scanned++;
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
walk(root, 0);
|
|
78
|
+
return Object.entries(counts)
|
|
79
|
+
.sort((a, b) => b[1] - a[1])
|
|
80
|
+
.filter(([, n]) => n > 0)
|
|
81
|
+
.map(([lang]) => lang);
|
|
82
|
+
}
|
|
83
|
+
function buildIncludeGlobs(languages) {
|
|
84
|
+
if (languages.length === 0) {
|
|
85
|
+
// No source detected — leave include empty so all supported langs are scanned.
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
const globs = [];
|
|
89
|
+
for (const lang of languages) {
|
|
90
|
+
for (const ext of LANG_EXTS[lang]) {
|
|
91
|
+
globs.push(`**/*${ext}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return globs;
|
|
95
|
+
}
|
|
26
96
|
function handleInit() {
|
|
27
97
|
const configPath = 'cognium.config.json';
|
|
28
98
|
if (existsSync(configPath)) {
|
|
29
|
-
console.log(colors.yellow(
|
|
99
|
+
console.log(colors.yellow(`${configPath} already exists; not overwriting.`));
|
|
30
100
|
return;
|
|
31
101
|
}
|
|
102
|
+
const langs = detectLanguages(process.cwd());
|
|
103
|
+
const include = buildIncludeGlobs(langs);
|
|
32
104
|
const config = {
|
|
33
105
|
version: '1.0',
|
|
34
|
-
include
|
|
35
|
-
exclude: ['**/test/**', '**/node_modules/**', '**/dist/**'],
|
|
106
|
+
include,
|
|
107
|
+
exclude: ['**/test/**', '**/tests/**', '**/node_modules/**', '**/dist/**', '**/build/**'],
|
|
36
108
|
passes: {},
|
|
37
109
|
trust: {
|
|
38
110
|
disabledPasses: [],
|
|
@@ -41,169 +113,255 @@ function handleInit() {
|
|
|
41
113
|
severity: 'low',
|
|
42
114
|
categories: ['security', 'reliability', 'performance', 'maintainability', 'architecture'],
|
|
43
115
|
};
|
|
44
|
-
writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
116
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
45
117
|
console.log(colors.green(`Created ${configPath}`));
|
|
46
|
-
|
|
118
|
+
if (langs.length > 0) {
|
|
119
|
+
console.log(colors.dim(` Detected languages: ${langs.join(', ')}`));
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.log(colors.dim(' No source files detected — include globs left empty (all supported languages will be scanned).'));
|
|
123
|
+
}
|
|
124
|
+
console.log('');
|
|
125
|
+
console.log('Next steps:');
|
|
126
|
+
console.log(` ${colors.cyan('cognium-ai scan .')} # security scan`);
|
|
127
|
+
console.log(` ${colors.cyan('cognium-ai trust .')} # trust score across 30+ passes`);
|
|
128
|
+
console.log(` ${colors.cyan('cognium-ai doctor')} # check environment + LLM config`);
|
|
47
129
|
}
|
|
48
|
-
|
|
49
|
-
//
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
//
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
130
|
+
function readPackageVersion(pkg) {
|
|
131
|
+
// Direct `<pkg>/package.json` is blocked by the package's `exports` map.
|
|
132
|
+
// Resolve the package's main entry from any nearby anchor, then walk up
|
|
133
|
+
// the file tree to find its package.json. Try cognium-ai first; if that
|
|
134
|
+
// fails (e.g. for transitive deps like circle-ir), retry from circle-ir-ai.
|
|
135
|
+
const anchors = [import.meta.url];
|
|
136
|
+
try {
|
|
137
|
+
const cir = createRequire(import.meta.url).resolve('circle-ir-ai');
|
|
138
|
+
anchors.push(`file://${cir}`);
|
|
57
139
|
}
|
|
58
|
-
|
|
59
|
-
|
|
140
|
+
catch { /* not installed; only try local anchor */ }
|
|
141
|
+
for (const anchor of anchors) {
|
|
142
|
+
try {
|
|
143
|
+
const req = createRequire(anchor);
|
|
144
|
+
let p = req.resolve(pkg);
|
|
145
|
+
for (let i = 0; i < 12; i++) {
|
|
146
|
+
const dir = path.dirname(p);
|
|
147
|
+
if (dir === p)
|
|
148
|
+
break; // hit fs root
|
|
149
|
+
const candidate = path.join(dir, 'package.json');
|
|
150
|
+
if (existsSync(candidate)) {
|
|
151
|
+
const json = JSON.parse(readFileSync(candidate, 'utf-8'));
|
|
152
|
+
if (json.name === pkg)
|
|
153
|
+
return json.version ?? null;
|
|
154
|
+
}
|
|
155
|
+
p = dir;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
/* try next anchor */
|
|
160
|
+
}
|
|
60
161
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
function runDoctor() {
|
|
165
|
+
const checks = [];
|
|
166
|
+
// Node version (engines: >=18)
|
|
167
|
+
const nodeMajor = parseInt(process.versions.node.split('.')[0], 10);
|
|
168
|
+
checks.push({
|
|
169
|
+
name: 'Node.js',
|
|
170
|
+
status: nodeMajor >= 18 ? 'ok' : 'error',
|
|
171
|
+
detail: `v${process.versions.node}${nodeMajor < 18 ? ' (need >= 18)' : ''}`,
|
|
172
|
+
});
|
|
173
|
+
// Package versions
|
|
174
|
+
const circleIrAi = readPackageVersion('circle-ir-ai');
|
|
175
|
+
checks.push({
|
|
176
|
+
name: 'circle-ir-ai',
|
|
177
|
+
status: circleIrAi ? 'ok' : 'error',
|
|
178
|
+
detail: circleIrAi ? `v${circleIrAi}` : 'not installed',
|
|
179
|
+
});
|
|
180
|
+
const circleIr = readPackageVersion('circle-ir');
|
|
181
|
+
checks.push({
|
|
182
|
+
name: 'circle-ir',
|
|
183
|
+
status: circleIr ? 'ok' : 'warn',
|
|
184
|
+
detail: circleIr ? `v${circleIr}` : 'not resolvable',
|
|
185
|
+
});
|
|
186
|
+
// LLM config
|
|
187
|
+
const apiKey = process.env.LLM_API_KEY;
|
|
188
|
+
const baseUrl = process.env.LLM_BASE_URL || 'http://localhost:4000/v1';
|
|
189
|
+
const model = process.env.LLM_ENRICHMENT_MODEL || 'cognium/gpt-oss-120b';
|
|
190
|
+
checks.push({
|
|
191
|
+
name: 'LLM_API_KEY',
|
|
192
|
+
status: apiKey ? 'ok' : 'warn',
|
|
193
|
+
detail: apiKey ? `set (${apiKey.length} chars)` : 'not set — LLM features will fall back to static analysis',
|
|
194
|
+
});
|
|
195
|
+
checks.push({
|
|
196
|
+
name: 'LLM_BASE_URL',
|
|
197
|
+
status: 'ok',
|
|
198
|
+
detail: baseUrl,
|
|
199
|
+
});
|
|
200
|
+
checks.push({
|
|
201
|
+
name: 'LLM_ENRICHMENT_MODEL',
|
|
202
|
+
status: 'ok',
|
|
203
|
+
detail: model,
|
|
204
|
+
});
|
|
205
|
+
// Project config
|
|
206
|
+
const cogniumCfg = path.resolve('cognium.config.json');
|
|
207
|
+
if (existsSync(cogniumCfg)) {
|
|
208
|
+
let parsed = false;
|
|
209
|
+
try {
|
|
210
|
+
JSON.parse(readFileSync(cogniumCfg, 'utf-8'));
|
|
211
|
+
parsed = true;
|
|
212
|
+
}
|
|
213
|
+
catch { /* parse failed */ }
|
|
214
|
+
checks.push({
|
|
215
|
+
name: 'cognium.config.json',
|
|
216
|
+
status: parsed ? 'ok' : 'error',
|
|
217
|
+
detail: parsed ? cogniumCfg : `${cogniumCfg} (invalid JSON)`,
|
|
218
|
+
});
|
|
65
219
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
220
|
+
else {
|
|
221
|
+
checks.push({
|
|
222
|
+
name: 'cognium.config.json',
|
|
223
|
+
status: 'warn',
|
|
224
|
+
detail: `not found in ${process.cwd()} — run \`cognium-ai init\` to create one`,
|
|
225
|
+
});
|
|
70
226
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
227
|
+
// WASM grammars (circle-ir loads tree-sitter wasm files)
|
|
228
|
+
const wasmLink = path.resolve('wasm');
|
|
229
|
+
const hasWasm = existsSync(wasmLink) && statSync(wasmLink).isDirectory();
|
|
230
|
+
checks.push({
|
|
231
|
+
name: 'WASM grammars',
|
|
232
|
+
status: hasWasm ? 'ok' : 'warn',
|
|
233
|
+
detail: hasWasm ? wasmLink : 'no ./wasm symlink (circle-ir bundles its own; usually fine)',
|
|
234
|
+
});
|
|
235
|
+
// Print
|
|
236
|
+
const symbol = (s) => s === 'ok' ? colors.green('✓') : s === 'warn' ? colors.yellow('!') : colors.red('✗');
|
|
237
|
+
const labelWidth = checks.reduce((m, c) => Math.max(m, c.name.length), 0);
|
|
238
|
+
console.log(colors.bold('cognium-ai doctor'));
|
|
239
|
+
console.log('');
|
|
240
|
+
for (const c of checks) {
|
|
241
|
+
console.log(` ${symbol(c.status)} ${c.name.padEnd(labelWidth)} ${c.detail}`);
|
|
74
242
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
243
|
+
console.log('');
|
|
244
|
+
const errors = checks.filter(c => c.status === 'error').length;
|
|
245
|
+
const warnings = checks.filter(c => c.status === 'warn').length;
|
|
246
|
+
if (errors > 0) {
|
|
247
|
+
console.log(colors.red(`${errors} error(s), ${warnings} warning(s)`));
|
|
248
|
+
return 1;
|
|
80
249
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
// Merge config options into args
|
|
84
|
-
if (config) {
|
|
85
|
-
const { disabledPasses } = convertCogniumConfigToPassOptions(config);
|
|
86
|
-
// Merge config disabled passes with CLI --disable-pass
|
|
87
|
-
if (disabledPasses.length > 0) {
|
|
88
|
-
args.disablePass = [...new Set([...args.disablePass, ...disabledPasses])];
|
|
89
|
-
}
|
|
90
|
-
// Merge trust disabled passes
|
|
91
|
-
if (config.trust?.disabledPasses) {
|
|
92
|
-
args.disablePass = [...new Set([...args.disablePass, ...config.trust.disabledPasses])];
|
|
93
|
-
}
|
|
250
|
+
if (warnings > 0) {
|
|
251
|
+
console.log(colors.yellow(`${warnings} warning(s) — non-blocking`));
|
|
94
252
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
try {
|
|
98
|
-
switch (args.command) {
|
|
99
|
-
case 'scan':
|
|
100
|
-
exitCode = await executeScan(args);
|
|
101
|
-
break;
|
|
102
|
-
case 'trust':
|
|
103
|
-
exitCode = await executeTrust(args);
|
|
104
|
-
break;
|
|
105
|
-
case 'compare':
|
|
106
|
-
exitCode = await executeCompare(args);
|
|
107
|
-
break;
|
|
108
|
-
case 'quality':
|
|
109
|
-
exitCode = await executeQuality(args);
|
|
110
|
-
break;
|
|
111
|
-
case 'health':
|
|
112
|
-
exitCode = await executeHealth(args);
|
|
113
|
-
break;
|
|
114
|
-
case 'secrets':
|
|
115
|
-
exitCode = await executeSecrets(args);
|
|
116
|
-
break;
|
|
117
|
-
case 'dead-code':
|
|
118
|
-
exitCode = await executeDeadCode(args);
|
|
119
|
-
break;
|
|
120
|
-
case 'metrics':
|
|
121
|
-
exitCode = await executeMetrics(args);
|
|
122
|
-
break;
|
|
123
|
-
case 'understand':
|
|
124
|
-
exitCode = await executeUnderstand(args);
|
|
125
|
-
break;
|
|
126
|
-
case 'spec-diff':
|
|
127
|
-
exitCode = await executeSpecDiff(args);
|
|
128
|
-
break;
|
|
129
|
-
case 'cluster':
|
|
130
|
-
exitCode = await executeCluster(args);
|
|
131
|
-
break;
|
|
132
|
-
case 'generate-spec':
|
|
133
|
-
exitCode = await executeGenerateSpec(args);
|
|
134
|
-
break;
|
|
135
|
-
case 'benchmark':
|
|
136
|
-
exitCode = await executeBenchmark(args);
|
|
137
|
-
break;
|
|
138
|
-
case 'analyze-skill':
|
|
139
|
-
// analyze-skill has a different signature
|
|
140
|
-
const skillPath = args.file || args.directory;
|
|
141
|
-
if (!skillPath) {
|
|
142
|
-
console.error(colors.red('Error: analyze-skill command requires a path argument'));
|
|
143
|
-
process.exit(1);
|
|
144
|
-
}
|
|
145
|
-
await executeAnalyzeSkill(skillPath, {
|
|
146
|
-
format: args.format === 'json' ? 'json' : args.format === 'markdown' ? 'markdown' : 'text',
|
|
147
|
-
output: args.output || undefined,
|
|
148
|
-
crossArtifact: args.crossArtifact !== false,
|
|
149
|
-
verification: args.verification !== false,
|
|
150
|
-
minConfidence: args.minConfidence,
|
|
151
|
-
minSeverity: args.minSeverity,
|
|
152
|
-
verbose: !args.quiet,
|
|
153
|
-
});
|
|
154
|
-
break;
|
|
155
|
-
// Cognium-ai specific commands
|
|
156
|
-
case 'analyze':
|
|
157
|
-
// 'analyze' is the default command when no subcommand is given
|
|
158
|
-
// For cognium-ai, we treat it as 'scan' when a path is given
|
|
159
|
-
if (args.file || args.directory) {
|
|
160
|
-
// Redirect to scan
|
|
161
|
-
args.command = 'scan';
|
|
162
|
-
exitCode = await executeScan(args);
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
showHelp();
|
|
166
|
-
}
|
|
167
|
-
break;
|
|
168
|
-
default:
|
|
169
|
-
// Check for init command (not in circle-ir-ai's command enum)
|
|
170
|
-
if (process.argv[2] === 'init') {
|
|
171
|
-
handleInit();
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
// Check for skill command (alias for analyze-skill)
|
|
175
|
-
if (process.argv[2] === 'skill') {
|
|
176
|
-
const skillPath = process.argv[3];
|
|
177
|
-
if (!skillPath || skillPath.startsWith('-')) {
|
|
178
|
-
console.error(colors.red('Error: skill command requires a path argument'));
|
|
179
|
-
console.log('\nUsage: cognium-ai skill <path> [options]');
|
|
180
|
-
process.exit(1);
|
|
181
|
-
}
|
|
182
|
-
await executeAnalyzeSkill(skillPath, {
|
|
183
|
-
format: args.format === 'json' ? 'json' : args.format === 'markdown' ? 'markdown' : 'text',
|
|
184
|
-
output: args.output || undefined,
|
|
185
|
-
verbose: !args.quiet,
|
|
186
|
-
});
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
// Check for version command
|
|
190
|
-
if (process.argv[2] === 'version') {
|
|
191
|
-
showVersion(version);
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
console.error(colors.red(`Error: Unknown command '${args.command}'`));
|
|
195
|
-
console.log("\nRun 'cognium-ai --help' for usage information");
|
|
196
|
-
process.exit(1);
|
|
197
|
-
}
|
|
253
|
+
else {
|
|
254
|
+
console.log(colors.green('All checks passed.'));
|
|
198
255
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
256
|
+
return 0;
|
|
257
|
+
}
|
|
258
|
+
// ---------------------------------------------------------------------------
|
|
259
|
+
// version — show all components
|
|
260
|
+
// ---------------------------------------------------------------------------
|
|
261
|
+
function showFullVersion() {
|
|
262
|
+
const circleIrAi = readPackageVersion('circle-ir-ai') ?? 'unknown';
|
|
263
|
+
const circleIr = readPackageVersion('circle-ir') ?? 'unknown';
|
|
264
|
+
console.log(`cognium-ai v${version}`);
|
|
265
|
+
console.log(`circle-ir-ai v${circleIrAi}`);
|
|
266
|
+
console.log(`circle-ir v${circleIr}`);
|
|
267
|
+
console.log(`node ${process.versions.node}`);
|
|
268
|
+
console.log('');
|
|
269
|
+
console.log(colors.dim('Powered by Cognium Labs · https://cognium.net'));
|
|
270
|
+
}
|
|
271
|
+
// ---------------------------------------------------------------------------
|
|
272
|
+
// Skill format adapter
|
|
273
|
+
// ---------------------------------------------------------------------------
|
|
274
|
+
function skillFormatFromArgs(args) {
|
|
275
|
+
if (args.format === 'json')
|
|
276
|
+
return 'json';
|
|
277
|
+
if (args.format === 'markdown')
|
|
278
|
+
return 'markdown';
|
|
279
|
+
return 'text';
|
|
280
|
+
}
|
|
281
|
+
// ---------------------------------------------------------------------------
|
|
282
|
+
// Main
|
|
283
|
+
// ---------------------------------------------------------------------------
|
|
284
|
+
async function main() {
|
|
285
|
+
const program = buildProgram({
|
|
286
|
+
analyze: executeAnalyze,
|
|
287
|
+
scan: executeScan,
|
|
288
|
+
health: executeHealth,
|
|
289
|
+
secrets: executeSecrets,
|
|
290
|
+
deadCode: executeDeadCode,
|
|
291
|
+
generateSpec: executeGenerateSpec,
|
|
292
|
+
analyzeSkill: async (skillPath, args) => {
|
|
293
|
+
await executeAnalyzeSkill(skillPath, {
|
|
294
|
+
format: skillFormatFromArgs(args),
|
|
295
|
+
output: args.output || undefined,
|
|
296
|
+
crossArtifact: args.crossArtifact !== false,
|
|
297
|
+
verification: args.verification !== false,
|
|
298
|
+
minConfidence: args.minConfidence,
|
|
299
|
+
minSeverity: args.minSeverity,
|
|
300
|
+
verbose: !args.quiet,
|
|
301
|
+
});
|
|
302
|
+
},
|
|
303
|
+
metrics: executeMetrics,
|
|
304
|
+
trust: executeTrust,
|
|
305
|
+
compare: executeCompare,
|
|
306
|
+
quality: executeQuality,
|
|
307
|
+
understand: executeUnderstand,
|
|
308
|
+
specDiff: executeSpecDiff,
|
|
309
|
+
cluster: executeCluster,
|
|
310
|
+
benchmark: executeBenchmark,
|
|
311
|
+
}, {
|
|
312
|
+
name: 'cognium-ai',
|
|
313
|
+
version,
|
|
314
|
+
description: 'AI-powered static analysis CLI — LLM-enhanced vulnerability detection, trust scoring, and code understanding.',
|
|
315
|
+
});
|
|
316
|
+
// Hide commands that haven't passed the CLI polish review yet. They remain
|
|
317
|
+
// callable for users who already rely on them, but are kept out of the
|
|
318
|
+
// headline `--help` to avoid signalling a level of polish they don't yet
|
|
319
|
+
// have. See circle-ir-ai/TODO.md "CLI Commands — Review Backlog".
|
|
320
|
+
//
|
|
321
|
+
// Commander has no public API to hide a command after construction; the
|
|
322
|
+
// underlying flag is `_hidden`, which `command(name, { hidden: true })`
|
|
323
|
+
// sets at registration time. We set it directly here.
|
|
324
|
+
const HIDDEN_COMMANDS = new Set([
|
|
325
|
+
'health',
|
|
326
|
+
'secrets',
|
|
327
|
+
'dead-code',
|
|
328
|
+
'analyze-skill',
|
|
329
|
+
'metrics',
|
|
330
|
+
'compare',
|
|
331
|
+
'understand',
|
|
332
|
+
'cluster',
|
|
333
|
+
'benchmark',
|
|
334
|
+
]);
|
|
335
|
+
for (const cmd of program.commands) {
|
|
336
|
+
if (HIDDEN_COMMANDS.has(cmd.name())) {
|
|
337
|
+
cmd._hidden = true;
|
|
338
|
+
}
|
|
202
339
|
}
|
|
203
|
-
|
|
340
|
+
// Layer cognium-ai-specific subcommands on top of the inherited program.
|
|
341
|
+
program
|
|
342
|
+
.command('init')
|
|
343
|
+
.description('Create a starter cognium.config.json (auto-detects project languages)')
|
|
344
|
+
.action(() => {
|
|
345
|
+
handleInit();
|
|
346
|
+
process.exit(0);
|
|
347
|
+
});
|
|
348
|
+
program
|
|
349
|
+
.command('doctor')
|
|
350
|
+
.description('Check environment, LLM config, and project setup')
|
|
351
|
+
.action(() => {
|
|
352
|
+
process.exit(runDoctor());
|
|
353
|
+
});
|
|
354
|
+
program
|
|
355
|
+
.command('version')
|
|
356
|
+
.description('Show all component versions')
|
|
357
|
+
.action(() => {
|
|
358
|
+
showFullVersion();
|
|
359
|
+
process.exit(0);
|
|
360
|
+
});
|
|
361
|
+
await program.parseAsync(process.argv);
|
|
204
362
|
}
|
|
205
363
|
main().catch((error) => {
|
|
206
|
-
console.error(colors.red('Fatal error:'), error.message);
|
|
364
|
+
console.error(colors.red('Fatal error:'), error instanceof Error ? error.message : error);
|
|
207
365
|
process.exit(2);
|
|
208
366
|
});
|
|
209
367
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EACL,WAAW,EACX,aAAa,EACb,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,OAAO,EAEP,qBAAqB,EACrB,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EAErB,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* cognium-ai
|
|
2
|
+
* cognium-ai — AI-powered static analysis (programmatic API).
|
|
3
3
|
*
|
|
4
|
-
* Re-exports circle-ir-ai APIs for programmatic use.
|
|
5
4
|
* For CLI usage, run `cognium-ai` directly.
|
|
6
5
|
*/
|
|
7
6
|
export { version } from './version.js';
|
|
8
|
-
// Re-export key circle-ir-ai APIs
|
|
9
7
|
export { analyzeFile, scanDirectory, detectDeadCode, scanForSecrets, calculateHealthScore, analyzeSkillBundle, initAnalyzer, analyze,
|
|
10
8
|
// Understand (Phase 5)
|
|
11
9
|
summarizeAllFunctions, summarizeModule,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EACL,WAAW,EACX,aAAa,EACb,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,OAAO;AACP,uBAAuB;AACvB,qBAAqB,EACrB,eAAe;AAIf,qBAAqB;AACrB,cAAc,GAGf,MAAM,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cognium-ai",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20.0",
|
|
4
4
|
"description": "AI-powered static analysis CLI with LLM-enhanced vulnerability detection",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
],
|
|
30
30
|
"author": {
|
|
31
31
|
"name": "Cognium Labs",
|
|
32
|
-
"url": "https://cognium.
|
|
32
|
+
"url": "https://cognium.net"
|
|
33
33
|
},
|
|
34
34
|
"license": "MIT",
|
|
35
35
|
"engines": {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"LICENSE"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"circle-ir-ai": "^1.
|
|
44
|
+
"circle-ir-ai": "^1.20.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/node": "^25.5.0",
|