cognium-ai 4.10.0 → 4.11.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 +2 -2
- package/dist/cli/commands/analyze.d.ts +20 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -1
- package/dist/cli/commands/analyze.js +49 -11
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cli/commands/health.d.ts.map +1 -1
- package/dist/cli/commands/health.js +10 -5
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/quality.d.ts.map +1 -1
- package/dist/cli/commands/quality.js +11 -7
- package/dist/cli/commands/quality.js.map +1 -1
- package/dist/cli/commands/scan.d.ts.map +1 -1
- package/dist/cli/commands/scan.js +15 -1
- package/dist/cli/commands/scan.js.map +1 -1
- package/dist/cli/commands/swarm.d.ts +24 -0
- package/dist/cli/commands/swarm.d.ts.map +1 -1
- package/dist/cli/commands/swarm.js +50 -16
- package/dist/cli/commands/swarm.js.map +1 -1
- package/dist/cli/inner-scan-options.d.ts +41 -0
- package/dist/cli/inner-scan-options.d.ts.map +1 -0
- package/dist/cli/inner-scan-options.js +60 -0
- package/dist/cli/inner-scan-options.js.map +1 -0
- package/dist/cli/scan-watchdog.d.ts +68 -0
- package/dist/cli/scan-watchdog.d.ts.map +1 -0
- package/dist/cli/scan-watchdog.js +127 -0
- package/dist/cli/scan-watchdog.js.map +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -215,7 +215,7 @@ jobs:
|
|
|
215
215
|
| OWASP Benchmark (Java) | 100% (1415/1415) |
|
|
216
216
|
| Juliet Test Suite (14 CWEs) | 100% (243/243) |
|
|
217
217
|
| SecuriBench Micro | 97.7% TPR, 6.7% FPR |
|
|
218
|
-
| CWE-Bench-Java (120 CVEs) | 50.8%
|
|
218
|
+
| CWE-Bench-Java (120 CVEs) | mode `static` 50.8% (61/120) · mode `discovery` **86.7%** (104/120, Claude Opus; LLM told the CWE — research recall) · mode `product-verify` 20% (24/120, 4.0.1 / gpt-4o-mini; `cognium-ai scan --llm --llm-verify`) — IRIS-paper strict methodology |
|
|
219
219
|
| OWASP NodeGoat / Juice Shop / DVJA | 100% |
|
|
220
220
|
| NodeJS Synthetic (25 tests) | 92.9% Score (96.2% TPR, 11.1% FPR) |
|
|
221
221
|
| CWE-Bench-Rust (30 tests) | 94.4% TPR, 0% FPR |
|
|
@@ -223,7 +223,7 @@ jobs:
|
|
|
223
223
|
| Go Synthetic (29 tests) | 84.2% TPR, 30% FPR |
|
|
224
224
|
| Vulnerability-goapp (13 tests) | cmdi/xss/pathtraver 100%; sqli pending [circle-ir#2](https://github.com/cogniumhq/circle-ir/issues/2) |
|
|
225
225
|
|
|
226
|
-
CWE-Bench-Java reference: **CodeQL 22.5%**, IRIS+GPT-4 45.8% — cognium-ai with Claude Opus is **2.85× CodeQL**.
|
|
226
|
+
CWE-Bench-Java reference: **CodeQL 22.5%**, IRIS+GPT-4 45.8% — cognium-ai in discovery mode with Claude Opus is **2.85× CodeQL**. CWE-Bench-Java numbers carry a **mode label** (cognium-ai#303): `static` = no LLM; `discovery` = the built-in runner's `--llm-discovery`, where the LLM is *told the CWE* and asked where the fix is (a research recall metric); `product-verify` = what customers run, `cognium-ai scan --llm --llm-verify`, scored IRIS-strict by `npm run benchmark:cwe:product`. The three are not interchangeable — product-verify measured **24/120** on 4.0.1 / gpt-4o-mini (Aug 2026) against discovery's ~104/120.
|
|
227
227
|
|
|
228
228
|
## License
|
|
229
229
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { type CircleIR, type TaintConfig } from 'circle-ir';
|
|
7
7
|
import type { CliArgs } from '../args.js';
|
|
8
|
+
import { type EffectiveOptions } from '../effective-options.js';
|
|
8
9
|
export interface AnalysisOptions {
|
|
9
10
|
taintConfig?: TaintConfig;
|
|
10
11
|
discoverPatterns?: boolean;
|
|
@@ -15,5 +16,24 @@ export interface AnalysisOptions {
|
|
|
15
16
|
llmApiKey?: string;
|
|
16
17
|
}
|
|
17
18
|
export declare function runAnalysis(filePath: string, options?: AnalysisOptions): Promise<CircleIR>;
|
|
19
|
+
export type AnalyzeLanguage = 'java' | 'csharp' | 'javascript' | 'typescript' | 'python' | 'rust' | 'c' | 'cpp' | 'go' | 'bash' | 'html';
|
|
20
|
+
/**
|
|
21
|
+
* Languages the multi-agent `--bundle` runner accepts. Anything else must fail
|
|
22
|
+
* loud rather than be coerced to `java` (cognium-ai#348 — `.cs` was silently
|
|
23
|
+
* parsed as Java).
|
|
24
|
+
*/
|
|
25
|
+
export declare const BUNDLE_LANGUAGES: readonly AnalyzeLanguage[];
|
|
26
|
+
export declare function resolveBundleLanguage(filePath: string): 'java' | 'c' | 'cpp';
|
|
27
|
+
/**
|
|
28
|
+
* cognium-ai#348 — the default `cognium-ai <path>` action coupled LLM
|
|
29
|
+
* verification to `--no-llm` only, so `--no-llm-verify` (advertised via
|
|
30
|
+
* addCommonOptions and honored by `scan` / `trust`) still ran the verifier.
|
|
31
|
+
* Same resolution as scan.ts: verify follows `eff.llm.verify`, gated on --llm.
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveAnalyzeLLMFlags(args: Pick<CliArgs, 'noLlm'>, eff: Pick<EffectiveOptions, 'llm'>): {
|
|
34
|
+
enableEnrichment: boolean;
|
|
35
|
+
enableVerification: boolean;
|
|
36
|
+
};
|
|
37
|
+
export declare function detectLanguageFromFile(filePath: string): AnalyzeLanguage;
|
|
18
38
|
export declare function executeAnalyze(args: CliArgs): Promise<number>;
|
|
19
39
|
//# sourceMappingURL=analyze.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAW,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AASrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAW,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AASrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQrF,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,QAAQ,CAAC,CAQnB;AAMD,MAAM,MAAM,eAAe,GACvB,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GACnE,GAAG,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,eAAe,EAAyB,CAAC;AAEjF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,KAAK,CAS5E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAC5B,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,GACjC;IAAE,gBAAgB,EAAE,OAAO,CAAC;IAAC,kBAAkB,EAAE,OAAO,CAAA;CAAE,CAM5D;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAiBxE;AAqFD,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA8LnE"}
|
|
@@ -8,6 +8,7 @@ import * as path from 'path';
|
|
|
8
8
|
import { analyze } from 'circle-ir';
|
|
9
9
|
import { ensureAnalyzerInitialized, analyzeFile, runBundle, runBundleOnFiles, registerSecurityAgents, } from 'circle-ir-ai';
|
|
10
10
|
import { loadCogniumConfig, convertCogniumConfigToPassOptions } from '../config.js';
|
|
11
|
+
import { getEffectiveOptions } from '../effective-options.js';
|
|
11
12
|
import { runSwarmAnalysis } from './swarm.js';
|
|
12
13
|
import { formatOutput } from '../formatters/index.js';
|
|
13
14
|
export async function runAnalysis(filePath, options = {}) {
|
|
@@ -21,10 +22,34 @@ export async function runAnalysis(filePath, options = {}) {
|
|
|
21
22
|
language = 'cpp';
|
|
22
23
|
return analyze(code, filePath, language, { taintConfig: options.taintConfig });
|
|
23
24
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Languages the multi-agent `--bundle` runner accepts. Anything else must fail
|
|
27
|
+
* loud rather than be coerced to `java` (cognium-ai#348 — `.cs` was silently
|
|
28
|
+
* parsed as Java).
|
|
29
|
+
*/
|
|
30
|
+
export const BUNDLE_LANGUAGES = ['java', 'c', 'cpp'];
|
|
31
|
+
export function resolveBundleLanguage(filePath) {
|
|
32
|
+
const detected = detectLanguageFromFile(filePath);
|
|
33
|
+
if (!BUNDLE_LANGUAGES.includes(detected)) {
|
|
34
|
+
throw new Error(`--bundle supports ${BUNDLE_LANGUAGES.join('|')} sources; ${path.basename(filePath)} ` +
|
|
35
|
+
`is ${detected}. Use \`cognium-ai scan\` for ${detected}.`);
|
|
36
|
+
}
|
|
37
|
+
return detected;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* cognium-ai#348 — the default `cognium-ai <path>` action coupled LLM
|
|
41
|
+
* verification to `--no-llm` only, so `--no-llm-verify` (advertised via
|
|
42
|
+
* addCommonOptions and honored by `scan` / `trust`) still ran the verifier.
|
|
43
|
+
* Same resolution as scan.ts: verify follows `eff.llm.verify`, gated on --llm.
|
|
44
|
+
*/
|
|
45
|
+
export function resolveAnalyzeLLMFlags(args, eff) {
|
|
46
|
+
const llmEnabled = !args.noLlm;
|
|
47
|
+
return {
|
|
48
|
+
enableEnrichment: llmEnabled,
|
|
49
|
+
enableVerification: llmEnabled ? eff.llm.verify : false,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export function detectLanguageFromFile(filePath) {
|
|
28
53
|
const ext = path.extname(filePath).toLowerCase();
|
|
29
54
|
switch (ext) {
|
|
30
55
|
case '.java': return 'java';
|
|
@@ -39,6 +64,13 @@ function detectLanguageFromFile(filePath) {
|
|
|
39
64
|
case '.py': return 'python';
|
|
40
65
|
case '.rs': return 'rust';
|
|
41
66
|
case '.go': return 'go';
|
|
67
|
+
// cognium-ai#348 — `.cs` fell through to `java` (no case); bash/html likewise.
|
|
68
|
+
case '.cs':
|
|
69
|
+
case '.csx': return 'csharp';
|
|
70
|
+
case '.sh':
|
|
71
|
+
case '.bash': return 'bash';
|
|
72
|
+
case '.html':
|
|
73
|
+
case '.htm': return 'html';
|
|
42
74
|
case '.c':
|
|
43
75
|
case '.h': return 'c';
|
|
44
76
|
case '.cpp':
|
|
@@ -145,6 +177,10 @@ export async function executeAnalyze(args) {
|
|
|
145
177
|
// Effective include/exclude (CLI overrides config)
|
|
146
178
|
const include = args.include.length > 0 ? args.include : (cogniumConfig?.include ?? []);
|
|
147
179
|
const exclude = args.exclude.length > 0 ? args.exclude : (cogniumConfig?.exclude ?? []);
|
|
180
|
+
// cognium-ai#348 — resolve --llm-verify/--no-llm-verify (CLI > config > on)
|
|
181
|
+
// exactly as scan/trust do, instead of coupling verification to --no-llm.
|
|
182
|
+
const eff = getEffectiveOptions(args, targetPath);
|
|
183
|
+
const llmFlags = resolveAnalyzeLLMFlags(args, eff);
|
|
148
184
|
try {
|
|
149
185
|
if (args.bundle) {
|
|
150
186
|
registerSecurityAgents();
|
|
@@ -180,8 +216,8 @@ export async function executeAnalyze(args) {
|
|
|
180
216
|
}
|
|
181
217
|
else {
|
|
182
218
|
const sourceCode = fs.readFileSync(targetPath, 'utf-8');
|
|
183
|
-
|
|
184
|
-
const bundleLang = (
|
|
219
|
+
// cognium-ai#348 — no silent coercion of non-Java sources to `java`.
|
|
220
|
+
const bundleLang = resolveBundleLanguage(targetPath);
|
|
185
221
|
const bundleResult = await runBundle(args.bundle, sourceCode, targetPath, {
|
|
186
222
|
language: bundleLang,
|
|
187
223
|
});
|
|
@@ -212,8 +248,10 @@ export async function executeAnalyze(args) {
|
|
|
212
248
|
exclude,
|
|
213
249
|
quiet: args.quiet,
|
|
214
250
|
maxConcurrency: args.threads,
|
|
215
|
-
enableEnrichment:
|
|
216
|
-
enableVerification:
|
|
251
|
+
enableEnrichment: llmFlags.enableEnrichment,
|
|
252
|
+
enableVerification: llmFlags.enableVerification,
|
|
253
|
+
// cognium-ai#348 — honor --language on the default action (was ignored).
|
|
254
|
+
language: args.language ?? undefined,
|
|
217
255
|
cacheEnabled: args.cache,
|
|
218
256
|
cacheDir: args.cacheDir ?? undefined,
|
|
219
257
|
clearCache: args.clearCache,
|
|
@@ -237,9 +275,9 @@ export async function executeAnalyze(args) {
|
|
|
237
275
|
const sourceCode = fs.readFileSync(targetPath, 'utf-8');
|
|
238
276
|
const detectedLang = detectLanguageFromFile(targetPath);
|
|
239
277
|
const mastraResult = await analyzeFile(targetPath, sourceCode, {
|
|
240
|
-
language: detectedLang,
|
|
241
|
-
enableEnrichment:
|
|
242
|
-
enableVerification:
|
|
278
|
+
language: args.language ?? detectedLang,
|
|
279
|
+
enableEnrichment: llmFlags.enableEnrichment,
|
|
280
|
+
enableVerification: llmFlags.enableVerification,
|
|
243
281
|
disabledPasses: mergedDisabledPasses.length > 0 ? mergedDisabledPasses : undefined,
|
|
244
282
|
});
|
|
245
283
|
const result = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/cli/commands/analyze.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;;;;GAIG;AASH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/health.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAK1C;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA8FlE"}
|
|
@@ -7,11 +7,15 @@ import * as fs from 'fs';
|
|
|
7
7
|
import { calculateHealthScore, formatHealthReport, } from 'circle-ir-ai';
|
|
8
8
|
import { getEffectiveOptions } from '../effective-options.js';
|
|
9
9
|
import { resolveProjectProfileForEngine } from '../project-profile.js';
|
|
10
|
+
import { applyIsolateParseEnv, buildInnerScanOptions } from '../inner-scan-options.js';
|
|
10
11
|
/**
|
|
11
12
|
* Execute health score command.
|
|
12
13
|
*/
|
|
13
14
|
export async function executeHealth(args) {
|
|
14
15
|
const targetPath = args.directory || process.cwd();
|
|
16
|
+
// cognium-ai#348 — health advertises --isolate-parse (addCommonOptions
|
|
17
|
+
// discovery) but never read it. Same env handoff as scan/trust.
|
|
18
|
+
applyIsolateParseEnv(args);
|
|
15
19
|
if (!fs.existsSync(targetPath)) {
|
|
16
20
|
console.error(`Error: Path not found: ${targetPath}`);
|
|
17
21
|
return 1;
|
|
@@ -25,7 +29,7 @@ export async function executeHealth(args) {
|
|
|
25
29
|
// vulnerability counts match `cognium-ai scan --llm` on the same
|
|
26
30
|
// repo. Without this the inner scan ran static-only regardless of
|
|
27
31
|
// LLM configuration.
|
|
28
|
-
|
|
32
|
+
// (enableLLM itself is resolved inside buildInnerScanOptions.)
|
|
29
33
|
// cognium-ai#130: thread projectProfile via the inner ScanOptions
|
|
30
34
|
// since circle-ir-ai 2.19.0's HealthScoreOptions doesn't expose
|
|
31
35
|
// projectProfile directly — it delegates to the security scanner.
|
|
@@ -38,10 +42,11 @@ export async function executeHealth(args) {
|
|
|
38
42
|
includePerformance: args.healthPerformance,
|
|
39
43
|
includePatterns: eff.include.length > 0 ? eff.include : undefined,
|
|
40
44
|
excludePatterns: eff.exclude.length > 0 ? eff.exclude : undefined,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
// cognium-ai#348 — forward every advertised scan flag (--no-llm-verify,
|
|
46
|
+
// --language, --file-timeout, --max-scan-time, -t, include/exclude) into
|
|
47
|
+
// the inner security scan, matching scan.ts and post-#324 trust.ts. Before
|
|
48
|
+
// this only enableLLM + projectProfile reached the engine.
|
|
49
|
+
scanOptions: buildInnerScanOptions(args, eff, projectProfile),
|
|
45
50
|
onProgress: args.quiet ? undefined : (phase, progress) => {
|
|
46
51
|
console.error(`[${phase}] ${Math.round(progress * 100)}%`);
|
|
47
52
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/cli/commands/health.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GAGnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/cli/commands/health.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAW1C,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAkGnE"}
|
|
@@ -14,6 +14,7 @@ import * as fs from 'fs';
|
|
|
14
14
|
import { runQualityScore as calculateQualityScore, formatQualityReport, generateQualityBadge, } from 'circle-ir-ai';
|
|
15
15
|
import { getEffectiveOptions } from '../effective-options.js';
|
|
16
16
|
import { resolveProjectProfileForEngine } from '../project-profile.js';
|
|
17
|
+
import { applyIsolateParseEnv, buildInnerScanOptions } from '../inner-scan-options.js';
|
|
17
18
|
export async function executeQuality(args) {
|
|
18
19
|
const targetPath = args.directory || args.file;
|
|
19
20
|
if (!targetPath) {
|
|
@@ -25,15 +26,17 @@ export async function executeQuality(args) {
|
|
|
25
26
|
console.error(`Error: Path not found: ${targetPath}`);
|
|
26
27
|
return 1;
|
|
27
28
|
}
|
|
29
|
+
// cognium-ai#348 — quality advertises --isolate-parse but never read it.
|
|
30
|
+
applyIsolateParseEnv(args);
|
|
28
31
|
// #56: honor cognium.config.json include/exclude (and CLI flags),
|
|
29
32
|
// matching how scan / analyze / dead-code already do via
|
|
30
33
|
// getEffectiveOptions(). Without this, the file walk only applied
|
|
31
34
|
// built-in regex skips (node_modules, .git, etc.) and the reported
|
|
32
35
|
// Files/LOC ignored user excludes entirely.
|
|
33
36
|
const eff = getEffectiveOptions(args, targetPath);
|
|
34
|
-
// #44:
|
|
35
|
-
// QualityScoreOptions.scanOptions → HealthScoreOptions.scanOptions
|
|
36
|
-
|
|
37
|
+
// #44: LLM enable is forwarded to the inner security scan via
|
|
38
|
+
// QualityScoreOptions.scanOptions → HealthScoreOptions.scanOptions
|
|
39
|
+
// (resolved inside buildInnerScanOptions below).
|
|
37
40
|
// cognium-ai#130: thread projectProfile via inner ScanOptions (the
|
|
38
41
|
// quality calculator delegates the security scan).
|
|
39
42
|
const projectProfile = await resolveProjectProfileForEngine(targetPath, eff.profile);
|
|
@@ -46,10 +49,11 @@ export async function executeQuality(args) {
|
|
|
46
49
|
},
|
|
47
50
|
includePatterns: eff.include.length > 0 ? eff.include : undefined,
|
|
48
51
|
excludePatterns: eff.exclude.length > 0 ? eff.exclude : undefined,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
// cognium-ai#348 — forward --language / --file-timeout / --max-scan-time
|
|
53
|
+
// / -t / include/exclude (and the LLM verify switch) into the inner
|
|
54
|
+
// security scan, matching scan.ts and trust.ts. Before this only
|
|
55
|
+
// enableLLM + projectProfile reached the engine.
|
|
56
|
+
scanOptions: buildInnerScanOptions(args, eff, projectProfile),
|
|
53
57
|
});
|
|
54
58
|
if (args.format === 'json') {
|
|
55
59
|
const jsonOutput = JSON.stringify(result, null, 2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality.js","sourceRoot":"","sources":["../../../src/cli/commands/quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EACL,eAAe,IAAI,qBAAqB,EACxC,mBAAmB,EACnB,oBAAoB,GAErB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"quality.js","sourceRoot":"","sources":["../../../src/cli/commands/quality.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAanD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAanD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAW1C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,iBAAiB,EAE9D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAGrE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAoZhE"}
|
|
@@ -14,6 +14,7 @@ import { applyFindingsCap } from '../findings-cap.js';
|
|
|
14
14
|
import { capSeverityByExploitability, capVerifierInflation } from '../severity-policy.js';
|
|
15
15
|
import { enrichScanSarif } from '../formatters/scan-sarif-enrich.js';
|
|
16
16
|
import { resolveProjectProfileForEngine } from '../project-profile.js';
|
|
17
|
+
import { armScanWatchdog, watchdogEnabled } from '../scan-watchdog.js';
|
|
17
18
|
/**
|
|
18
19
|
* Languages `scan` collects by default (no explicit `--language`). These are the
|
|
19
20
|
* languages circle-ir runs security passes on. `c` / `cpp` are supported by the
|
|
@@ -198,7 +199,20 @@ export async function executeScan(args) {
|
|
|
198
199
|
// cognium-ai#166 L1 — zero the process-wide truncation counter so
|
|
199
200
|
// the snapshot after the scan reflects only this run.
|
|
200
201
|
resetTruncationCount();
|
|
201
|
-
|
|
202
|
+
// cognium-ai#315 — a worker-thread deadline that survives a wedged main loop:
|
|
203
|
+
// guarantees PARTIAL JSON + [DEGRADED] + exit at maxScanMs + grace even when
|
|
204
|
+
// the cooperative #252 budget never gets to run.
|
|
205
|
+
const watchdog = options.maxScanMs !== undefined && watchdogEnabled()
|
|
206
|
+
? await armScanWatchdog({ target: targetPath, maxScanMs: options.maxScanMs, outputPath: args.output, format: args.format })
|
|
207
|
+
: null;
|
|
208
|
+
let rawResult;
|
|
209
|
+
try {
|
|
210
|
+
rawResult = await scanDirectory(targetPath, options);
|
|
211
|
+
}
|
|
212
|
+
finally {
|
|
213
|
+
if (watchdog)
|
|
214
|
+
await watchdog.disarm();
|
|
215
|
+
}
|
|
202
216
|
const truncationCount = snapshotTruncationCount();
|
|
203
217
|
// cognium-ai#217/#228 — surface a `degraded: llm-unavailable` signal when
|
|
204
218
|
// the LLM breaker tripped during this scan, so the output (and the harness)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,34 @@
|
|
|
2
2
|
* Swarm Command - Parallel multi-file analysis using Mastra
|
|
3
3
|
*/
|
|
4
4
|
import { type SwarmResult } from 'circle-ir-ai';
|
|
5
|
+
import { type SupportedLanguage } from '../file-collection.js';
|
|
6
|
+
/**
|
|
7
|
+
* cognium-ai#348 — languages the default `cognium-ai <path>` walk collects.
|
|
8
|
+
*
|
|
9
|
+
* The engine's `analyzeFilesSwarm` detects a file's language from its
|
|
10
|
+
* extension and only takes a *request-level* `language` override (no per-file
|
|
11
|
+
* field), and its detector knows java/js/ts/tsx/py/rs/go/c/cpp — any other
|
|
12
|
+
* extension falls back to `java`. So the default walk is restricted to the
|
|
13
|
+
* scanned languages the swarm can route on its own; `csharp` / `bash` / `html`
|
|
14
|
+
* are collected only when `--language` names one of them (the request-level
|
|
15
|
+
* override then routes them correctly). `c` / `cpp` are not walked at all:
|
|
16
|
+
* `scan` already rejects them (#312 — no tree-sitter-c/cpp WASM shipped) and
|
|
17
|
+
* the old default include list produced PARSER_FAIL on every `.c`/`.h`.
|
|
18
|
+
*
|
|
19
|
+
* Pinned against DEFAULT_SCAN_LANGUAGES by `autofix-348-default-action.test.ts`.
|
|
20
|
+
*/
|
|
21
|
+
export declare const SWARM_AUTODETECT_LANGUAGES: readonly SupportedLanguage[];
|
|
22
|
+
/** Scanned languages that need an explicit `--language` on the default action. */
|
|
23
|
+
export declare const SWARM_EXPLICIT_ONLY_LANGUAGES: readonly SupportedLanguage[];
|
|
24
|
+
export declare function resolveSwarmLanguages(language: string | null | undefined): SupportedLanguage[];
|
|
25
|
+
/** Default exclude globs when the user passes none (pre-#348 behaviour, kept). */
|
|
26
|
+
export declare const SWARM_DEFAULT_EXCLUDES: readonly string[];
|
|
5
27
|
export interface SwarmOptions {
|
|
6
28
|
directory: string;
|
|
7
29
|
include: string[];
|
|
8
30
|
exclude: string[];
|
|
31
|
+
/** cognium-ai#348 — `--language`: restricts discovery and is forwarded to the engine. */
|
|
32
|
+
language?: string;
|
|
9
33
|
quiet: boolean;
|
|
10
34
|
maxConcurrency: number;
|
|
11
35
|
enableEnrichment: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/swarm.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/swarm.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK7E;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,iBAAiB,EAElE,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,6BAA6B,EAAE,SAAS,iBAAiB,EAA+B,CAAC;AAEtG,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,iBAAiB,EAAE,CAG9F;AAED,kFAAkF;AAClF,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAGnD,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAE5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA2HlF"}
|
|
@@ -4,29 +4,60 @@
|
|
|
4
4
|
import * as fs from 'fs';
|
|
5
5
|
import * as path from 'path';
|
|
6
6
|
import { analyzeFilesSwarm, FileCache, logger, } from 'circle-ir-ai';
|
|
7
|
-
import {
|
|
7
|
+
import { collectFiles } from '../file-collection.js';
|
|
8
|
+
import { expandScanLanguages } from './scan.js';
|
|
8
9
|
import { colors } from '../colors.js';
|
|
9
10
|
const { cyan, green, yellow, red, dim, bold } = colors;
|
|
11
|
+
/**
|
|
12
|
+
* cognium-ai#348 — languages the default `cognium-ai <path>` walk collects.
|
|
13
|
+
*
|
|
14
|
+
* The engine's `analyzeFilesSwarm` detects a file's language from its
|
|
15
|
+
* extension and only takes a *request-level* `language` override (no per-file
|
|
16
|
+
* field), and its detector knows java/js/ts/tsx/py/rs/go/c/cpp — any other
|
|
17
|
+
* extension falls back to `java`. So the default walk is restricted to the
|
|
18
|
+
* scanned languages the swarm can route on its own; `csharp` / `bash` / `html`
|
|
19
|
+
* are collected only when `--language` names one of them (the request-level
|
|
20
|
+
* override then routes them correctly). `c` / `cpp` are not walked at all:
|
|
21
|
+
* `scan` already rejects them (#312 — no tree-sitter-c/cpp WASM shipped) and
|
|
22
|
+
* the old default include list produced PARSER_FAIL on every `.c`/`.h`.
|
|
23
|
+
*
|
|
24
|
+
* Pinned against DEFAULT_SCAN_LANGUAGES by `autofix-348-default-action.test.ts`.
|
|
25
|
+
*/
|
|
26
|
+
export const SWARM_AUTODETECT_LANGUAGES = [
|
|
27
|
+
'java', 'javascript', 'typescript', 'tsx', 'python', 'rust', 'go',
|
|
28
|
+
];
|
|
29
|
+
/** Scanned languages that need an explicit `--language` on the default action. */
|
|
30
|
+
export const SWARM_EXPLICIT_ONLY_LANGUAGES = ['csharp', 'bash', 'html'];
|
|
31
|
+
export function resolveSwarmLanguages(language) {
|
|
32
|
+
if (language)
|
|
33
|
+
return expandScanLanguages(language);
|
|
34
|
+
return [...SWARM_AUTODETECT_LANGUAGES];
|
|
35
|
+
}
|
|
36
|
+
/** Default exclude globs when the user passes none (pre-#348 behaviour, kept). */
|
|
37
|
+
export const SWARM_DEFAULT_EXCLUDES = [
|
|
38
|
+
'**/test/**', '**/tests/**', '**/*Test.java', '**/*_test.rs',
|
|
39
|
+
'**/node_modules/**', '**/target/**', '**/build/**',
|
|
40
|
+
];
|
|
10
41
|
export async function runSwarmAnalysis(options) {
|
|
11
42
|
const startTime = Date.now();
|
|
12
43
|
// Discover files
|
|
13
44
|
if (!options.quiet) {
|
|
14
45
|
console.error(cyan(`Discovering files in ${options.directory}...`));
|
|
15
46
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
],
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
47
|
+
// cognium-ai#348 — discover through the same minimatch-based collector
|
|
48
|
+
// `scan` uses (file-collection.ts) instead of a stale parallel walker with
|
|
49
|
+
// a hand-rolled glob translator (`**/*.py` → `.*/[^/]*\.py` never matched a
|
|
50
|
+
// root-level file) and a C/C++ include the engine cannot parse.
|
|
51
|
+
const languages = resolveSwarmLanguages(options.language);
|
|
52
|
+
const discoveredFiles = collectFiles(options.directory, {
|
|
53
|
+
include: options.include.length > 0 ? options.include : undefined,
|
|
54
|
+
exclude: options.exclude.length > 0 ? options.exclude : [...SWARM_DEFAULT_EXCLUDES],
|
|
55
|
+
languages,
|
|
56
|
+
});
|
|
57
|
+
if (!options.quiet && !options.language) {
|
|
58
|
+
console.error(dim(`Languages: ${languages.join(', ')} (pass --language <${SWARM_EXPLICIT_ONLY_LANGUAGES.join('|')}> ` +
|
|
59
|
+
'to analyze those, or use `cognium-ai scan`)'));
|
|
60
|
+
}
|
|
30
61
|
if (discoveredFiles.length === 0) {
|
|
31
62
|
console.error(yellow('No files found to analyze.'));
|
|
32
63
|
return {
|
|
@@ -79,8 +110,11 @@ export async function runSwarmAnalysis(options) {
|
|
|
79
110
|
process.stderr.write(`\r${cyan(`Progress: ${completed}/${files.length} (${percent}%)`)}`);
|
|
80
111
|
}, 500);
|
|
81
112
|
try {
|
|
82
|
-
// Run swarm analysis (language auto-detected per file from extension
|
|
113
|
+
// Run swarm analysis (language auto-detected per file from extension;
|
|
114
|
+
// cognium-ai#348 — an explicit --language is forwarded as the engine's
|
|
115
|
+
// request-level override so csharp/bash/html files route correctly)
|
|
83
116
|
const result = await analyzeFilesSwarm(files, {
|
|
117
|
+
language: options.language,
|
|
84
118
|
enableEnrichment: options.enableEnrichment,
|
|
85
119
|
enableVerification: options.enableVerification,
|
|
86
120
|
maxConcurrency: options.maxConcurrency,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swarm.js","sourceRoot":"","sources":["../../../src/cli/commands/swarm.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,MAAM,GAIP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"swarm.js","sourceRoot":"","sources":["../../../src/cli/commands/swarm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cognium-ai#348 — shared inner-scan option builder.
|
|
3
|
+
*
|
|
4
|
+
* `health` and `quality` register the same discovery / LLM / budget flags as
|
|
5
|
+
* `scan` (via `addCommonOptions`) and both delegate their security dimension to
|
|
6
|
+
* the engine's `scanDirectory()` through `scanOptions`. Until #348 those two
|
|
7
|
+
* handlers forwarded only `{ enableLLM, projectProfile }`, so every other
|
|
8
|
+
* advertised flag — `--no-llm-verify`, `--language`, `--file-timeout`,
|
|
9
|
+
* `--max-scan-time`, `--isolate-parse`, `-t` — was a silent no-op on the inner
|
|
10
|
+
* scan. `trust` got the same wiring under #321/#322/#324; this module lifts that
|
|
11
|
+
* block into one place so the three commands cannot drift apart again.
|
|
12
|
+
*/
|
|
13
|
+
import type { ScanOptions } from 'circle-ir-ai';
|
|
14
|
+
import type { CliArgs } from './args.js';
|
|
15
|
+
import type { EffectiveOptions } from './effective-options.js';
|
|
16
|
+
/**
|
|
17
|
+
* #252 — `--isolate-parse` is communicated to the engine via env (same shape
|
|
18
|
+
* as the LLM knobs) so every engine entry point picks it up. Mirrors scan.ts /
|
|
19
|
+
* trust.ts; call before the first engine invocation.
|
|
20
|
+
*/
|
|
21
|
+
export declare function applyIsolateParseEnv(args: Pick<CliArgs, 'isolateParse'>): void;
|
|
22
|
+
/**
|
|
23
|
+
* Resolve the language list the inner scan should walk — the same rule as
|
|
24
|
+
* `scan` / `trust`: an explicit `--language` (with the #311 typescript→tsx
|
|
25
|
+
* expansion), otherwise the full default scanned set.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveInnerScanLanguages(language: string | null | undefined): ScanOptions['languages'];
|
|
28
|
+
/**
|
|
29
|
+
* Build the `scanOptions` forwarded to the engine's inner security scan by
|
|
30
|
+
* `health` / `quality`. Field-for-field the contract `scan` and post-#324
|
|
31
|
+
* `trust` already honor:
|
|
32
|
+
*
|
|
33
|
+
* - `enableLLMVerify` follows `--llm-verify` / `--no-llm-verify` (#124/#324),
|
|
34
|
+
* gated on `--llm` so `--no-llm --llm-verify` is unambiguous.
|
|
35
|
+
* - `fileTimeoutMs` / `maxScanMs` / `maxConcurrency` follow `--file-timeout` /
|
|
36
|
+
* `--max-scan-time` / `-t` (#321).
|
|
37
|
+
* - `languages` follows `--language` (#322).
|
|
38
|
+
* - `includePatterns` / `excludePatterns` follow the effective include/exclude.
|
|
39
|
+
*/
|
|
40
|
+
export declare function buildInnerScanOptions(args: Pick<CliArgs, 'noLlm' | 'fileTimeout' | 'maxScanTime' | 'threads' | 'language'>, eff: Pick<EffectiveOptions, 'llm' | 'include' | 'exclude'>, projectProfile: ScanOptions['projectProfile'] | undefined): Partial<ScanOptions>;
|
|
41
|
+
//# sourceMappingURL=inner-scan-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inner-scan-options.d.ts","sourceRoot":"","sources":["../../src/cli/inner-scan-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,IAAI,CAI9E;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,WAAW,CAAC,WAAW,CAAC,CAI1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CAAC,EACrF,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC,EAC1D,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,SAAS,GACxD,OAAO,CAAC,WAAW,CAAC,CAatB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cognium-ai#348 — shared inner-scan option builder.
|
|
3
|
+
*
|
|
4
|
+
* `health` and `quality` register the same discovery / LLM / budget flags as
|
|
5
|
+
* `scan` (via `addCommonOptions`) and both delegate their security dimension to
|
|
6
|
+
* the engine's `scanDirectory()` through `scanOptions`. Until #348 those two
|
|
7
|
+
* handlers forwarded only `{ enableLLM, projectProfile }`, so every other
|
|
8
|
+
* advertised flag — `--no-llm-verify`, `--language`, `--file-timeout`,
|
|
9
|
+
* `--max-scan-time`, `--isolate-parse`, `-t` — was a silent no-op on the inner
|
|
10
|
+
* scan. `trust` got the same wiring under #321/#322/#324; this module lifts that
|
|
11
|
+
* block into one place so the three commands cannot drift apart again.
|
|
12
|
+
*/
|
|
13
|
+
import { DEFAULT_SCAN_LANGUAGES, expandScanLanguages } from './commands/scan.js';
|
|
14
|
+
/**
|
|
15
|
+
* #252 — `--isolate-parse` is communicated to the engine via env (same shape
|
|
16
|
+
* as the LLM knobs) so every engine entry point picks it up. Mirrors scan.ts /
|
|
17
|
+
* trust.ts; call before the first engine invocation.
|
|
18
|
+
*/
|
|
19
|
+
export function applyIsolateParseEnv(args) {
|
|
20
|
+
if (args.isolateParse) {
|
|
21
|
+
process.env.SCAN_PARSE_ISOLATION = '1';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Resolve the language list the inner scan should walk — the same rule as
|
|
26
|
+
* `scan` / `trust`: an explicit `--language` (with the #311 typescript→tsx
|
|
27
|
+
* expansion), otherwise the full default scanned set.
|
|
28
|
+
*/
|
|
29
|
+
export function resolveInnerScanLanguages(language) {
|
|
30
|
+
return (language
|
|
31
|
+
? expandScanLanguages(language)
|
|
32
|
+
: [...DEFAULT_SCAN_LANGUAGES]);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Build the `scanOptions` forwarded to the engine's inner security scan by
|
|
36
|
+
* `health` / `quality`. Field-for-field the contract `scan` and post-#324
|
|
37
|
+
* `trust` already honor:
|
|
38
|
+
*
|
|
39
|
+
* - `enableLLMVerify` follows `--llm-verify` / `--no-llm-verify` (#124/#324),
|
|
40
|
+
* gated on `--llm` so `--no-llm --llm-verify` is unambiguous.
|
|
41
|
+
* - `fileTimeoutMs` / `maxScanMs` / `maxConcurrency` follow `--file-timeout` /
|
|
42
|
+
* `--max-scan-time` / `-t` (#321).
|
|
43
|
+
* - `languages` follows `--language` (#322).
|
|
44
|
+
* - `includePatterns` / `excludePatterns` follow the effective include/exclude.
|
|
45
|
+
*/
|
|
46
|
+
export function buildInnerScanOptions(args, eff, projectProfile) {
|
|
47
|
+
const llmEnabled = !args.noLlm;
|
|
48
|
+
return {
|
|
49
|
+
enableLLM: llmEnabled,
|
|
50
|
+
enableLLMVerify: llmEnabled ? eff.llm.verify : false,
|
|
51
|
+
fileTimeoutMs: args.fileTimeout * 1000,
|
|
52
|
+
maxScanMs: args.maxScanTime ? args.maxScanTime * 1000 : undefined,
|
|
53
|
+
maxConcurrency: args.threads,
|
|
54
|
+
languages: resolveInnerScanLanguages(args.language),
|
|
55
|
+
includePatterns: eff.include.length > 0 ? eff.include : undefined,
|
|
56
|
+
excludePatterns: eff.exclude.length > 0 ? eff.exclude : undefined,
|
|
57
|
+
projectProfile,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=inner-scan-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inner-scan-options.js","sourceRoot":"","sources":["../../src/cli/inner-scan-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEjF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAmC;IACtE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,GAAG,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAmC;IAEnC,OAAO,CAAC,QAAQ;QACd,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QAC/B,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAA6B,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAqF,EACrF,GAA0D,EAC1D,cAAyD;IAEzD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B,OAAO;QACL,SAAS,EAAE,UAAU;QACrB,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;QACpD,aAAa,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI;QACtC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS;QACjE,cAAc,EAAE,IAAI,CAAC,OAAO;QAC5B,SAAS,EAAE,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnD,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACjE,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACjE,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export interface WatchdogInfo {
|
|
2
|
+
target: string;
|
|
3
|
+
maxScanMs: number;
|
|
4
|
+
graceMs: number;
|
|
5
|
+
startedAt: number;
|
|
6
|
+
firedAt: number;
|
|
7
|
+
}
|
|
8
|
+
/** The PARTIAL result the watchdog emits — the scan JSON's top-level shape, empty. */
|
|
9
|
+
export declare function buildWatchdogPartialResult(info: WatchdogInfo): {
|
|
10
|
+
meta: {
|
|
11
|
+
target: string;
|
|
12
|
+
timestamp: string;
|
|
13
|
+
durationMs: number;
|
|
14
|
+
degraded: boolean;
|
|
15
|
+
degradedReason: string;
|
|
16
|
+
degradedDetail: string;
|
|
17
|
+
maxScanMs: number;
|
|
18
|
+
filesAnalyzed: number;
|
|
19
|
+
};
|
|
20
|
+
findings: never[];
|
|
21
|
+
byOWASP: {};
|
|
22
|
+
summary: {
|
|
23
|
+
totalFiles: number;
|
|
24
|
+
totalLOC: number;
|
|
25
|
+
totalFindings: number;
|
|
26
|
+
bySeverity: {
|
|
27
|
+
critical: number;
|
|
28
|
+
high: number;
|
|
29
|
+
medium: number;
|
|
30
|
+
low: number;
|
|
31
|
+
};
|
|
32
|
+
byType: {};
|
|
33
|
+
};
|
|
34
|
+
files: never[];
|
|
35
|
+
parseFailures: never[];
|
|
36
|
+
totalFindings: number;
|
|
37
|
+
tier: string;
|
|
38
|
+
tiers: {
|
|
39
|
+
static_high_confidence: never[];
|
|
40
|
+
llm_enriched: never[];
|
|
41
|
+
};
|
|
42
|
+
degraded: string;
|
|
43
|
+
};
|
|
44
|
+
export interface ArmOptions {
|
|
45
|
+
target: string;
|
|
46
|
+
maxScanMs: number;
|
|
47
|
+
/** Output file (`-o`); `null` writes to stdout (fd 1). */
|
|
48
|
+
outputPath: string | null;
|
|
49
|
+
/** Only JSON is emitted by the watchdog; other formats get the `[DEGRADED]` line + exit. */
|
|
50
|
+
format: string;
|
|
51
|
+
graceMs?: number;
|
|
52
|
+
/** Signal to send (default SIGKILL — the only signal a wedged main thread cannot swallow). */
|
|
53
|
+
signal?: NodeJS.Signals;
|
|
54
|
+
}
|
|
55
|
+
export interface ArmedWatchdog {
|
|
56
|
+
disarm(): Promise<void>;
|
|
57
|
+
readonly graceMs: number;
|
|
58
|
+
}
|
|
59
|
+
export declare function watchdogGraceMs(): number;
|
|
60
|
+
export declare function watchdogEnabled(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Arm the watchdog. Resolves once the worker is actually running (`online`), bounded
|
|
63
|
+
* to 2 s: a worker only starts executing after the main loop yields once, so arming
|
|
64
|
+
* synchronously and then wedging immediately would leave it never started. The
|
|
65
|
+
* returned handle's `disarm()` must be awaited when the scan returns.
|
|
66
|
+
*/
|
|
67
|
+
export declare function armScanWatchdog(opts: ArmOptions): Promise<ArmedWatchdog>;
|
|
68
|
+
//# sourceMappingURL=scan-watchdog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-watchdog.d.ts","sourceRoot":"","sources":["../../src/cli/scan-watchdog.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sFAAsF;AACtF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB5D;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,4FAA4F;IAC5F,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAED,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AA2BD;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAiC9E"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cognium-ai#315 — hard scan-deadline watchdog.
|
|
3
|
+
*
|
|
4
|
+
* `--max-scan-time` (#252) is enforced cooperatively: the engine checks the
|
|
5
|
+
* budget between files and `awaitWorkersWithDeadline` arms a `setTimeout`. Both
|
|
6
|
+
* live on the main event loop, so a synchronous wedge (a pathological parse, a
|
|
7
|
+
* sync read, a tight loop under 429 back-off) blocks the deadline itself and the
|
|
8
|
+
* process runs until the orchestrator SIGKILLs it — with **no JSON and no
|
|
9
|
+
* `[DEGRADED]` line** (markdown-preview.nvim, #315).
|
|
10
|
+
*
|
|
11
|
+
* A worker thread has its own event loop and is not blocked by the main thread.
|
|
12
|
+
* At `maxScanMs + graceMs` it writes a schema-compatible PARTIAL result straight
|
|
13
|
+
* to the output descriptor with `fs.writeSync` (an OS-level write — a worker's
|
|
14
|
+
* `process.stdout` would route through the wedged main thread, so it is not
|
|
15
|
+
* used), prints the `[DEGRADED]` line to fd 2, and terminates the process with
|
|
16
|
+
* SIGTERM. The contract "hitting the budget always yields PARTIAL JSON and
|
|
17
|
+
* exits" therefore holds even when the main loop cannot run.
|
|
18
|
+
*
|
|
19
|
+
* Disarmed (worker terminated) the moment the scan returns normally, so a
|
|
20
|
+
* healthy run never sees it. Kill switch: `SCAN_WATCHDOG=0`.
|
|
21
|
+
*
|
|
22
|
+
* Known non-case: under `node -e` (an eval'd main script) worker timers never
|
|
23
|
+
* fire while the main thread is wedged; the CLI always runs from a file
|
|
24
|
+
* (dist/cli.js), where they do — the integration test spawns a file for that reason.
|
|
25
|
+
* Grace: `SCAN_WATCHDOG_GRACE_MS` (default 30 000 ms) — the cooperative path
|
|
26
|
+
* gets that long to finish its own partial emit before the watchdog fires.
|
|
27
|
+
*/
|
|
28
|
+
import { Worker } from 'node:worker_threads';
|
|
29
|
+
/** The PARTIAL result the watchdog emits — the scan JSON's top-level shape, empty. */
|
|
30
|
+
export function buildWatchdogPartialResult(info) {
|
|
31
|
+
return {
|
|
32
|
+
meta: {
|
|
33
|
+
target: info.target,
|
|
34
|
+
timestamp: new Date(info.firedAt).toISOString(),
|
|
35
|
+
durationMs: info.firedAt - info.startedAt,
|
|
36
|
+
degraded: true,
|
|
37
|
+
degradedReason: 'watchdog',
|
|
38
|
+
degradedDetail: `cognium-ai#315: scan budget (${info.maxScanMs}ms) exceeded by more than the ${info.graceMs}ms grace and the main thread did not yield; watchdog emitted this partial result and terminated the process. Findings gathered before the wedge are not available.`,
|
|
39
|
+
maxScanMs: info.maxScanMs,
|
|
40
|
+
filesAnalyzed: 0,
|
|
41
|
+
},
|
|
42
|
+
findings: [],
|
|
43
|
+
byOWASP: {},
|
|
44
|
+
summary: { totalFiles: 0, totalLOC: 0, totalFindings: 0, bySeverity: { critical: 0, high: 0, medium: 0, low: 0 }, byType: {} },
|
|
45
|
+
files: [],
|
|
46
|
+
parseFailures: [],
|
|
47
|
+
totalFindings: 0,
|
|
48
|
+
tier: 'static',
|
|
49
|
+
tiers: { static_high_confidence: [], llm_enriched: [] },
|
|
50
|
+
degraded: 'watchdog',
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export function watchdogGraceMs() {
|
|
54
|
+
const v = Number(process.env.SCAN_WATCHDOG_GRACE_MS);
|
|
55
|
+
return Number.isFinite(v) && v >= 0 ? v : 30_000;
|
|
56
|
+
}
|
|
57
|
+
export function watchdogEnabled() {
|
|
58
|
+
return process.env.SCAN_WATCHDOG !== '0';
|
|
59
|
+
}
|
|
60
|
+
// Runs inside the worker (CommonJS eval context). Kept as a string so it needs no
|
|
61
|
+
// separate file to resolve in dev (tsx) and dist (compiled) alike.
|
|
62
|
+
const WORKER_SOURCE = `
|
|
63
|
+
const { workerData } = require('node:worker_threads');
|
|
64
|
+
const fs = require('node:fs');
|
|
65
|
+
const { maxScanMs, graceMs, outputPath, format, target, startedAt, signal, partialBuilder } = workerData;
|
|
66
|
+
const build = new Function('info', partialBuilder);
|
|
67
|
+
setTimeout(() => {
|
|
68
|
+
const firedAt = Date.now();
|
|
69
|
+
const info = { target, maxScanMs, graceMs, startedAt, firedAt };
|
|
70
|
+
let wrote = 'nothing';
|
|
71
|
+
try {
|
|
72
|
+
if (format === 'json') {
|
|
73
|
+
const json = JSON.stringify(build(info), null, 2) + '\\n';
|
|
74
|
+
if (outputPath) { fs.writeFileSync(outputPath, json); wrote = outputPath; }
|
|
75
|
+
else { fs.writeSync(1, json); wrote = 'stdout'; }
|
|
76
|
+
}
|
|
77
|
+
} catch (e) { wrote = 'FAILED: ' + (e && e.message ? e.message : String(e)); }
|
|
78
|
+
try {
|
|
79
|
+
fs.writeSync(2, '[DEGRADED] cognium-ai#315: scan budget (' + maxScanMs + 'ms) exceeded by >' + graceMs + 'ms grace with the main thread wedged; watchdog wrote PARTIAL result (' + wrote + ') and is terminating the process (' + signal + ').\\n');
|
|
80
|
+
} catch {}
|
|
81
|
+
try { process.kill(process.pid, signal); } catch {}
|
|
82
|
+
}, Math.max(0, maxScanMs + graceMs - (Date.now() - startedAt)));
|
|
83
|
+
`;
|
|
84
|
+
/**
|
|
85
|
+
* Arm the watchdog. Resolves once the worker is actually running (`online`), bounded
|
|
86
|
+
* to 2 s: a worker only starts executing after the main loop yields once, so arming
|
|
87
|
+
* synchronously and then wedging immediately would leave it never started. The
|
|
88
|
+
* returned handle's `disarm()` must be awaited when the scan returns.
|
|
89
|
+
*/
|
|
90
|
+
export async function armScanWatchdog(opts) {
|
|
91
|
+
const graceMs = opts.graceMs ?? watchdogGraceMs();
|
|
92
|
+
const startedAt = Date.now();
|
|
93
|
+
// Ship the builder's body so the worker produces exactly `buildWatchdogPartialResult`.
|
|
94
|
+
const src = buildWatchdogPartialResult.toString();
|
|
95
|
+
const body = src.slice(src.indexOf('{') + 1, src.lastIndexOf('}'));
|
|
96
|
+
const worker = new Worker(WORKER_SOURCE, {
|
|
97
|
+
eval: true,
|
|
98
|
+
workerData: {
|
|
99
|
+
maxScanMs: opts.maxScanMs,
|
|
100
|
+
graceMs,
|
|
101
|
+
outputPath: opts.outputPath,
|
|
102
|
+
format: opts.format,
|
|
103
|
+
target: opts.target,
|
|
104
|
+
startedAt,
|
|
105
|
+
signal: opts.signal ?? 'SIGKILL',
|
|
106
|
+
partialBuilder: body,
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
worker.unref(); // never keeps a finished scan alive
|
|
110
|
+
worker.on('error', () => { });
|
|
111
|
+
await new Promise((resolve) => {
|
|
112
|
+
// The timer is deliberately ref'd: the worker is unref'd, so this bounded wait
|
|
113
|
+
// is the only thing keeping the loop alive until `online` (or the 2 s cap).
|
|
114
|
+
const t = setTimeout(resolve, 2_000);
|
|
115
|
+
worker.once('online', () => { clearTimeout(t); resolve(); });
|
|
116
|
+
});
|
|
117
|
+
return {
|
|
118
|
+
graceMs,
|
|
119
|
+
async disarm() {
|
|
120
|
+
try {
|
|
121
|
+
await worker.terminate();
|
|
122
|
+
}
|
|
123
|
+
catch { /* already gone */ }
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=scan-watchdog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-watchdog.js","sourceRoot":"","sources":["../../src/cli/scan-watchdog.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cognium-ai",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.11.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",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@cognium/project-profile-detect": "^1.1.0",
|
|
45
|
-
"circle-ir": "4.9.
|
|
46
|
-
"circle-ir-ai": "^4.
|
|
45
|
+
"circle-ir": "4.9.10",
|
|
46
|
+
"circle-ir-ai": "^4.11.0",
|
|
47
47
|
"commander": "^14.0.3",
|
|
48
48
|
"minimatch": "^10.2.5"
|
|
49
49
|
},
|