circle-ir-ai 2.7.0 → 2.7.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.
Files changed (149) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/dist/llm/ax-client.d.ts.map +1 -1
  3. package/dist/llm/ax-client.js +36 -10
  4. package/dist/llm/ax-client.js.map +1 -1
  5. package/package.json +2 -2
  6. package/dist/cli/args.d.ts +0 -86
  7. package/dist/cli/args.d.ts.map +0 -1
  8. package/dist/cli/args.js +0 -653
  9. package/dist/cli/args.js.map +0 -1
  10. package/dist/cli/colors.d.ts +0 -31
  11. package/dist/cli/colors.d.ts.map +0 -1
  12. package/dist/cli/colors.js +0 -80
  13. package/dist/cli/colors.js.map +0 -1
  14. package/dist/cli/commands/analyze-skill.d.ts +0 -33
  15. package/dist/cli/commands/analyze-skill.d.ts.map +0 -1
  16. package/dist/cli/commands/analyze-skill.js +0 -217
  17. package/dist/cli/commands/analyze-skill.js.map +0 -1
  18. package/dist/cli/commands/analyze.d.ts +0 -19
  19. package/dist/cli/commands/analyze.d.ts.map +0 -1
  20. package/dist/cli/commands/analyze.js +0 -303
  21. package/dist/cli/commands/analyze.js.map +0 -1
  22. package/dist/cli/commands/benchmark-runner.d.ts +0 -42
  23. package/dist/cli/commands/benchmark-runner.d.ts.map +0 -1
  24. package/dist/cli/commands/benchmark-runner.js +0 -18
  25. package/dist/cli/commands/benchmark-runner.js.map +0 -1
  26. package/dist/cli/commands/benchmark.d.ts +0 -11
  27. package/dist/cli/commands/benchmark.d.ts.map +0 -1
  28. package/dist/cli/commands/benchmark.js +0 -90
  29. package/dist/cli/commands/benchmark.js.map +0 -1
  30. package/dist/cli/commands/cluster.d.ts +0 -12
  31. package/dist/cli/commands/cluster.d.ts.map +0 -1
  32. package/dist/cli/commands/cluster.js +0 -203
  33. package/dist/cli/commands/cluster.js.map +0 -1
  34. package/dist/cli/commands/compare.d.ts +0 -13
  35. package/dist/cli/commands/compare.d.ts.map +0 -1
  36. package/dist/cli/commands/compare.js +0 -109
  37. package/dist/cli/commands/compare.js.map +0 -1
  38. package/dist/cli/commands/dead-code.d.ts +0 -11
  39. package/dist/cli/commands/dead-code.d.ts.map +0 -1
  40. package/dist/cli/commands/dead-code.js +0 -75
  41. package/dist/cli/commands/dead-code.js.map +0 -1
  42. package/dist/cli/commands/generate-spec.d.ts +0 -11
  43. package/dist/cli/commands/generate-spec.d.ts.map +0 -1
  44. package/dist/cli/commands/generate-spec.js +0 -120
  45. package/dist/cli/commands/generate-spec.js.map +0 -1
  46. package/dist/cli/commands/health.d.ts +0 -11
  47. package/dist/cli/commands/health.d.ts.map +0 -1
  48. package/dist/cli/commands/health.js +0 -76
  49. package/dist/cli/commands/health.js.map +0 -1
  50. package/dist/cli/commands/index.d.ts +0 -30
  51. package/dist/cli/commands/index.d.ts.map +0 -1
  52. package/dist/cli/commands/index.js +0 -36
  53. package/dist/cli/commands/index.js.map +0 -1
  54. package/dist/cli/commands/metrics.d.ts +0 -12
  55. package/dist/cli/commands/metrics.d.ts.map +0 -1
  56. package/dist/cli/commands/metrics.js +0 -231
  57. package/dist/cli/commands/metrics.js.map +0 -1
  58. package/dist/cli/commands/project.d.ts +0 -21
  59. package/dist/cli/commands/project.d.ts.map +0 -1
  60. package/dist/cli/commands/project.js +0 -92
  61. package/dist/cli/commands/project.js.map +0 -1
  62. package/dist/cli/commands/quality.d.ts +0 -15
  63. package/dist/cli/commands/quality.d.ts.map +0 -1
  64. package/dist/cli/commands/quality.js +0 -86
  65. package/dist/cli/commands/quality.js.map +0 -1
  66. package/dist/cli/commands/scan.d.ts +0 -11
  67. package/dist/cli/commands/scan.d.ts.map +0 -1
  68. package/dist/cli/commands/scan.js +0 -102
  69. package/dist/cli/commands/scan.js.map +0 -1
  70. package/dist/cli/commands/secrets.d.ts +0 -11
  71. package/dist/cli/commands/secrets.d.ts.map +0 -1
  72. package/dist/cli/commands/secrets.js +0 -79
  73. package/dist/cli/commands/secrets.js.map +0 -1
  74. package/dist/cli/commands/spec-diff.d.ts +0 -12
  75. package/dist/cli/commands/spec-diff.d.ts.map +0 -1
  76. package/dist/cli/commands/spec-diff.js +0 -150
  77. package/dist/cli/commands/spec-diff.js.map +0 -1
  78. package/dist/cli/commands/swarm.d.ts +0 -21
  79. package/dist/cli/commands/swarm.d.ts.map +0 -1
  80. package/dist/cli/commands/swarm.js +0 -175
  81. package/dist/cli/commands/swarm.js.map +0 -1
  82. package/dist/cli/commands/trust.d.ts +0 -23
  83. package/dist/cli/commands/trust.d.ts.map +0 -1
  84. package/dist/cli/commands/trust.js +0 -397
  85. package/dist/cli/commands/trust.js.map +0 -1
  86. package/dist/cli/commands/understand.d.ts +0 -12
  87. package/dist/cli/commands/understand.d.ts.map +0 -1
  88. package/dist/cli/commands/understand.js +0 -188
  89. package/dist/cli/commands/understand.js.map +0 -1
  90. package/dist/cli/config.d.ts +0 -161
  91. package/dist/cli/config.d.ts.map +0 -1
  92. package/dist/cli/config.js +0 -383
  93. package/dist/cli/config.js.map +0 -1
  94. package/dist/cli/discovery.d.ts +0 -31
  95. package/dist/cli/discovery.d.ts.map +0 -1
  96. package/dist/cli/discovery.js +0 -212
  97. package/dist/cli/discovery.js.map +0 -1
  98. package/dist/cli/effective-options.d.ts +0 -42
  99. package/dist/cli/effective-options.d.ts.map +0 -1
  100. package/dist/cli/effective-options.js +0 -80
  101. package/dist/cli/effective-options.js.map +0 -1
  102. package/dist/cli/file-collection.d.ts +0 -49
  103. package/dist/cli/file-collection.d.ts.map +0 -1
  104. package/dist/cli/file-collection.js +0 -142
  105. package/dist/cli/file-collection.js.map +0 -1
  106. package/dist/cli/formatters/index.d.ts +0 -15
  107. package/dist/cli/formatters/index.d.ts.map +0 -1
  108. package/dist/cli/formatters/index.js +0 -51
  109. package/dist/cli/formatters/index.js.map +0 -1
  110. package/dist/cli/formatters/json.d.ts +0 -11
  111. package/dist/cli/formatters/json.d.ts.map +0 -1
  112. package/dist/cli/formatters/json.js +0 -12
  113. package/dist/cli/formatters/json.js.map +0 -1
  114. package/dist/cli/formatters/project-json.d.ts +0 -11
  115. package/dist/cli/formatters/project-json.d.ts.map +0 -1
  116. package/dist/cli/formatters/project-json.js +0 -12
  117. package/dist/cli/formatters/project-json.js.map +0 -1
  118. package/dist/cli/formatters/project-sarif.d.ts +0 -11
  119. package/dist/cli/formatters/project-sarif.d.ts.map +0 -1
  120. package/dist/cli/formatters/project-sarif.js +0 -127
  121. package/dist/cli/formatters/project-sarif.js.map +0 -1
  122. package/dist/cli/formatters/project-summary.d.ts +0 -11
  123. package/dist/cli/formatters/project-summary.d.ts.map +0 -1
  124. package/dist/cli/formatters/project-summary.js +0 -202
  125. package/dist/cli/formatters/project-summary.js.map +0 -1
  126. package/dist/cli/formatters/sarif-shared.d.ts +0 -101
  127. package/dist/cli/formatters/sarif-shared.d.ts.map +0 -1
  128. package/dist/cli/formatters/sarif-shared.js +0 -57
  129. package/dist/cli/formatters/sarif-shared.js.map +0 -1
  130. package/dist/cli/formatters/sarif.d.ts +0 -12
  131. package/dist/cli/formatters/sarif.d.ts.map +0 -1
  132. package/dist/cli/formatters/sarif.js +0 -92
  133. package/dist/cli/formatters/sarif.js.map +0 -1
  134. package/dist/cli/formatters/summary.d.ts +0 -11
  135. package/dist/cli/formatters/summary.d.ts.map +0 -1
  136. package/dist/cli/formatters/summary.js +0 -240
  137. package/dist/cli/formatters/summary.js.map +0 -1
  138. package/dist/cli/formatters/two-phase-summary.d.ts +0 -11
  139. package/dist/cli/formatters/two-phase-summary.d.ts.map +0 -1
  140. package/dist/cli/formatters/two-phase-summary.js +0 -188
  141. package/dist/cli/formatters/two-phase-summary.js.map +0 -1
  142. package/dist/cli/index.d.ts +0 -10
  143. package/dist/cli/index.d.ts.map +0 -1
  144. package/dist/cli/index.js +0 -72
  145. package/dist/cli/index.js.map +0 -1
  146. package/dist/cli/program.d.ts +0 -117
  147. package/dist/cli/program.d.ts.map +0 -1
  148. package/dist/cli/program.js +0 -825
  149. package/dist/cli/program.js.map +0 -1
@@ -1,42 +0,0 @@
1
- /**
2
- * Effective options helper — merges CLI args with cognium.config.json and
3
- * .circle-ir.yaml into the values commands actually use.
4
- *
5
- * Resolution order (later wins):
6
- * 1. defaults
7
- * 2. .circle-ir.yaml (legacy taint config)
8
- * 3. cognium.config.json (preferred — passes, suppressions, include/exclude)
9
- * 4. CLI flags
10
- */
11
- import type { AnalyzerOptions } from 'circle-ir';
12
- import type { CliArgs } from './args.js';
13
- import { type CogniumConfig, type ResolvedConfig } from './config.js';
14
- export interface EffectiveOptions {
15
- /** Glob patterns to include. */
16
- include: string[];
17
- /** Glob patterns to exclude. */
18
- exclude: string[];
19
- /** Pass names disabled (CLI ∪ cognium.config.passes ∪ trust.disabledPasses). */
20
- disabledPasses: string[];
21
- /** Severity threshold (CLI > config > undefined). */
22
- severity: 'critical' | 'high' | 'medium' | 'low' | undefined;
23
- /** Categories filter (CLI > config > []). */
24
- categories: string[];
25
- /** Trust-specific disabled passes (subset of disabledPasses, source-tracked). */
26
- trustDisabledPasses: string[];
27
- /** AnalyzerOptions for circle-ir analyze() — passOptions + disabledPasses. */
28
- analyzerOptions: AnalyzerOptions | undefined;
29
- /** The loaded cognium.config.json (or null). */
30
- cognium: CogniumConfig | null;
31
- /** The resolved .circle-ir.yaml config (always present, with defaults). */
32
- circleIr: ResolvedConfig;
33
- }
34
- /**
35
- * Build the effective options for a command.
36
- *
37
- * @param args parsed CliArgs
38
- * @param target the path the command was invoked on (used as starting dir for
39
- * config search if --config wasn't given)
40
- */
41
- export declare function getEffectiveOptions(args: CliArgs, target: string): EffectiveOptions;
42
- //# sourceMappingURL=effective-options.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"effective-options.d.ts","sourceRoot":"","sources":["../../src/cli/effective-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gCAAgC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gFAAgF;IAChF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,qDAAqD;IACrD,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IAC7D,6CAA6C;IAC7C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iFAAiF;IACjF,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,8EAA8E;IAC9E,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,gDAAgD;IAChD,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAmEnF"}
@@ -1,80 +0,0 @@
1
- /**
2
- * Effective options helper — merges CLI args with cognium.config.json and
3
- * .circle-ir.yaml into the values commands actually use.
4
- *
5
- * Resolution order (later wins):
6
- * 1. defaults
7
- * 2. .circle-ir.yaml (legacy taint config)
8
- * 3. cognium.config.json (preferred — passes, suppressions, include/exclude)
9
- * 4. CLI flags
10
- */
11
- import * as fs from 'fs';
12
- import * as path from 'path';
13
- import { loadCogniumConfig, loadConfig, convertCogniumConfigToPassOptions, } from './config.js';
14
- /**
15
- * Build the effective options for a command.
16
- *
17
- * @param args parsed CliArgs
18
- * @param target the path the command was invoked on (used as starting dir for
19
- * config search if --config wasn't given)
20
- */
21
- export function getEffectiveOptions(args, target) {
22
- // Where to start searching for config files
23
- const startDir = (() => {
24
- try {
25
- return fs.statSync(target).isDirectory() ? target : path.dirname(target);
26
- }
27
- catch {
28
- return process.cwd();
29
- }
30
- })();
31
- const cognium = loadCogniumConfig(args.config || undefined, startDir);
32
- const circleIr = loadConfig(args.config || null, startDir);
33
- // Include / exclude — CLI overrides config
34
- const include = args.include.length > 0
35
- ? args.include
36
- : (cognium?.include?.length ? cognium.include : circleIr.include);
37
- const exclude = args.exclude.length > 0
38
- ? args.exclude
39
- : (cognium?.exclude?.length ? cognium.exclude : circleIr.exclude);
40
- // Disabled passes — union of CLI + cognium.passes (false) + cognium.trust.disabledPasses
41
- const cogniumPasses = cognium ? convertCogniumConfigToPassOptions(cognium) : { passOptions: {}, disabledPasses: [] };
42
- const trustDisabled = cognium?.trust?.disabledPasses ?? [];
43
- const disabledPasses = [...new Set([
44
- ...args.disablePass,
45
- ...cogniumPasses.disabledPasses,
46
- ...trustDisabled,
47
- ])];
48
- // Severity
49
- const cliSeverity = args.severity ?? undefined;
50
- const configSeverityRaw = cognium?.severity ?? circleIr.analysis.severity_threshold;
51
- const configSeverity = configSeverityRaw === 'critical' || configSeverityRaw === 'high' ||
52
- configSeverityRaw === 'medium' || configSeverityRaw === 'low'
53
- ? configSeverityRaw
54
- : undefined;
55
- const severity = cliSeverity ?? configSeverity;
56
- // Categories
57
- const categories = args.categories.length > 0
58
- ? args.categories
59
- : (cognium?.categories ?? []);
60
- // AnalyzerOptions
61
- const hasPassOptions = Object.keys(cogniumPasses.passOptions).length > 0;
62
- const analyzerOptions = hasPassOptions || disabledPasses.length > 0
63
- ? {
64
- passOptions: hasPassOptions ? cogniumPasses.passOptions : undefined,
65
- disabledPasses: disabledPasses.length > 0 ? disabledPasses : undefined,
66
- }
67
- : undefined;
68
- return {
69
- include,
70
- exclude,
71
- disabledPasses,
72
- severity,
73
- categories,
74
- trustDisabledPasses: [...new Set([...args.disablePass, ...trustDisabled])],
75
- analyzerOptions,
76
- cognium,
77
- circleIr,
78
- };
79
- }
80
- //# sourceMappingURL=effective-options.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"effective-options.js","sourceRoot":"","sources":["../../src/cli/effective-options.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- /**
2
- * Shared file collector — used by every command that walks a directory.
3
- *
4
- * Honors:
5
- * - include / exclude glob patterns (minimatch)
6
- * - per-language ext filters
7
- * - hard skip dirs (node_modules, .git, target, etc.)
8
- * - maxFiles / depth caps
9
- *
10
- * Glob matching is performed against the path *relative to the root* with
11
- * forward slashes, so patterns like `**\/test\/**` work cross-platform.
12
- */
13
- export type SupportedLanguage = 'java' | 'javascript' | 'typescript' | 'python' | 'rust' | 'c' | 'cpp' | 'bash' | 'html';
14
- export interface CollectOptions {
15
- /** Glob patterns to include (relative to root). Empty = include all matching extensions. */
16
- include?: string[];
17
- /** Glob patterns to exclude (relative to root). */
18
- exclude?: string[];
19
- /** Restrict to a subset of languages. Default: all supported. */
20
- languages?: SupportedLanguage[];
21
- /** Maximum number of files to return. Default: 10_000. */
22
- maxFiles?: number;
23
- /** Maximum walk depth. Default: 30. */
24
- maxDepth?: number;
25
- /** Additional directory names to never descend into (merged with defaults). */
26
- extraSkipDirs?: string[];
27
- /** Skip dotfiles/dotdirs. Default: true. */
28
- skipDotted?: boolean;
29
- }
30
- export interface CollectedFile {
31
- /** Absolute path. */
32
- path: string;
33
- /** Path relative to the root supplied to collectFiles(). */
34
- relativePath: string;
35
- /** Detected language. */
36
- language: SupportedLanguage;
37
- }
38
- /**
39
- * Collect source files under `root`, respecting include/exclude/lang filters.
40
- *
41
- * If `root` is a single file, returns a one-element array (or empty if it
42
- * doesn't match the filters).
43
- */
44
- export declare function collectFiles(root: string, options?: CollectOptions): CollectedFile[];
45
- export declare const _internal: {
46
- LANGUAGE_EXTENSIONS: Record<SupportedLanguage, readonly string[]>;
47
- DEFAULT_SKIP_DIRS: Set<string>;
48
- };
49
- //# sourceMappingURL=file-collection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-collection.d.ts","sourceRoot":"","sources":["../../src/cli/file-collection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,GAAG,GACH,KAAK,GACL,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,WAAW,cAAc;IAC7B,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,iEAAiE;IACjE,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAoDD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,aAAa,EAAE,CAkExF;AAED,eAAO,MAAM,SAAS;;;CAA6C,CAAC"}
@@ -1,142 +0,0 @@
1
- /**
2
- * Shared file collector — used by every command that walks a directory.
3
- *
4
- * Honors:
5
- * - include / exclude glob patterns (minimatch)
6
- * - per-language ext filters
7
- * - hard skip dirs (node_modules, .git, target, etc.)
8
- * - maxFiles / depth caps
9
- *
10
- * Glob matching is performed against the path *relative to the root* with
11
- * forward slashes, so patterns like `**\/test\/**` work cross-platform.
12
- */
13
- import * as fs from 'fs';
14
- import * as path from 'path';
15
- import { minimatch } from 'minimatch';
16
- const LANGUAGE_EXTENSIONS = {
17
- java: ['.java'],
18
- javascript: ['.js', '.jsx', '.mjs', '.cjs'],
19
- typescript: ['.ts', '.tsx', '.mts', '.cts'],
20
- python: ['.py'],
21
- rust: ['.rs'],
22
- c: ['.c', '.h'],
23
- cpp: ['.cpp', '.cc', '.cxx', '.hpp', '.hh', '.hxx'],
24
- bash: ['.sh', '.bash'],
25
- html: ['.html', '.htm'],
26
- };
27
- const DEFAULT_SKIP_DIRS = new Set([
28
- 'node_modules',
29
- '.git',
30
- '.svn',
31
- '.hg',
32
- 'dist',
33
- 'build',
34
- 'target',
35
- 'out',
36
- 'bin',
37
- '.idea',
38
- '.vscode',
39
- '.next',
40
- '.gradle',
41
- '.m2',
42
- 'vendor',
43
- 'coverage',
44
- '__pycache__',
45
- '.tsbuildinfo',
46
- ]);
47
- function detectLanguage(ext) {
48
- for (const [lang, exts] of Object.entries(LANGUAGE_EXTENSIONS)) {
49
- if (exts.includes(ext))
50
- return lang;
51
- }
52
- return null;
53
- }
54
- function toForwardSlash(p) {
55
- return p.split(path.sep).join('/');
56
- }
57
- function matchAny(relPath, patterns) {
58
- if (patterns.length === 0)
59
- return false;
60
- const slashed = toForwardSlash(relPath);
61
- return patterns.some(pat => minimatch(slashed, pat, { dot: true, matchBase: true }));
62
- }
63
- /**
64
- * Collect source files under `root`, respecting include/exclude/lang filters.
65
- *
66
- * If `root` is a single file, returns a one-element array (or empty if it
67
- * doesn't match the filters).
68
- */
69
- export function collectFiles(root, options = {}) {
70
- const include = options.include ?? [];
71
- const exclude = options.exclude ?? [];
72
- const languages = options.languages ?? Object.keys(LANGUAGE_EXTENSIONS);
73
- const maxFiles = options.maxFiles ?? 10_000;
74
- const maxDepth = options.maxDepth ?? 30;
75
- const skipDotted = options.skipDotted !== false;
76
- const skipDirs = new Set([...DEFAULT_SKIP_DIRS, ...(options.extraSkipDirs ?? [])]);
77
- const allowedExts = new Set();
78
- for (const lang of languages) {
79
- for (const ext of LANGUAGE_EXTENSIONS[lang])
80
- allowedExts.add(ext);
81
- }
82
- const out = [];
83
- let stat;
84
- try {
85
- stat = fs.statSync(root);
86
- }
87
- catch {
88
- return out;
89
- }
90
- if (stat.isFile()) {
91
- const ext = path.extname(root).toLowerCase();
92
- const lang = detectLanguage(ext);
93
- if (lang && languages.includes(lang)) {
94
- out.push({ path: root, relativePath: path.basename(root), language: lang });
95
- }
96
- return out;
97
- }
98
- const rootResolved = path.resolve(root);
99
- const walk = (dir, depth) => {
100
- if (out.length >= maxFiles || depth > maxDepth)
101
- return;
102
- let entries;
103
- try {
104
- entries = fs.readdirSync(dir, { withFileTypes: true });
105
- }
106
- catch {
107
- return;
108
- }
109
- for (const entry of entries) {
110
- if (out.length >= maxFiles)
111
- return;
112
- const full = path.join(dir, entry.name);
113
- const rel = path.relative(rootResolved, full);
114
- if (entry.isDirectory()) {
115
- if (skipDirs.has(entry.name))
116
- continue;
117
- if (skipDotted && entry.name.startsWith('.'))
118
- continue;
119
- if (matchAny(rel, exclude))
120
- continue;
121
- walk(full, depth + 1);
122
- }
123
- else if (entry.isFile()) {
124
- const ext = path.extname(entry.name).toLowerCase();
125
- if (!allowedExts.has(ext))
126
- continue;
127
- const lang = detectLanguage(ext);
128
- if (!lang)
129
- continue;
130
- if (matchAny(rel, exclude))
131
- continue;
132
- if (include.length > 0 && !matchAny(rel, include))
133
- continue;
134
- out.push({ path: full, relativePath: rel, language: lang });
135
- }
136
- }
137
- };
138
- walk(rootResolved, 0);
139
- return out;
140
- }
141
- export const _internal = { LANGUAGE_EXTENSIONS, DEFAULT_SKIP_DIRS };
142
- //# sourceMappingURL=file-collection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-collection.js","sourceRoot":"","sources":["../../src/cli/file-collection.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Output Formatters
3
- */
4
- import type { CircleIR, ProjectAnalysis } from 'circle-ir';
5
- import type { TwoPhaseProjectAnalysis } from '../../project/index.js';
6
- import type { OutputFormat } from '../args.js';
7
- /**
8
- * Format single-file analysis output based on requested format.
9
- */
10
- export declare function formatOutput(result: CircleIR, format: OutputFormat, filePath: string): string;
11
- /**
12
- * Format project analysis output based on requested format.
13
- */
14
- export declare function formatProjectOutput(result: ProjectAnalysis | TwoPhaseProjectAnalysis, format: OutputFormat): string;
15
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/formatters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS/C;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,CAWR;AAWD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,GAAG,uBAAuB,EACjD,MAAM,EAAE,YAAY,GACnB,MAAM,CAgBR"}
@@ -1,51 +0,0 @@
1
- /**
2
- * Output Formatters
3
- */
4
- import { formatJson } from './json.js';
5
- import { formatSummary } from './summary.js';
6
- import { formatSarif } from './sarif.js';
7
- import { formatProjectJson } from './project-json.js';
8
- import { formatProjectSummary } from './project-summary.js';
9
- import { formatProjectSarif } from './project-sarif.js';
10
- import { formatTwoPhaseProjectSummary } from './two-phase-summary.js';
11
- /**
12
- * Format single-file analysis output based on requested format.
13
- */
14
- export function formatOutput(result, format, filePath) {
15
- switch (format) {
16
- case 'json':
17
- return formatJson(result);
18
- case 'summary':
19
- return formatSummary(result, filePath);
20
- case 'sarif':
21
- return formatSarif(result, filePath);
22
- default:
23
- return formatSummary(result, filePath);
24
- }
25
- }
26
- /**
27
- * Check if result is a two-phase analysis result.
28
- */
29
- function isTwoPhaseResult(result) {
30
- return 'enrichedFiles' in result && 'crossFileFlows' in result;
31
- }
32
- /**
33
- * Format project analysis output based on requested format.
34
- */
35
- export function formatProjectOutput(result, format) {
36
- // Use two-phase formatter if applicable
37
- if (isTwoPhaseResult(result) && format === 'summary') {
38
- return formatTwoPhaseProjectSummary(result);
39
- }
40
- switch (format) {
41
- case 'json':
42
- return formatProjectJson(result);
43
- case 'summary':
44
- return formatProjectSummary(result);
45
- case 'sarif':
46
- return formatProjectSarif(result);
47
- default:
48
- return formatProjectSummary(result);
49
- }
50
- }
51
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/formatters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAEtE;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAgB,EAChB,MAAoB,EACpB,QAAgB;IAEhB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5B,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzC,KAAK,OAAO;YACV,OAAO,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACvC;YACE,OAAO,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,MAAiD;IAEjD,OAAO,eAAe,IAAI,MAAM,IAAI,gBAAgB,IAAI,MAAM,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAiD,EACjD,MAAoB;IAEpB,wCAAwC;IACxC,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,SAAS;YACZ,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,OAAO;YACV,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpC;YACE,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * JSON Formatter
3
- *
4
- * Outputs the full Circle-IR JSON.
5
- */
6
- import type { CircleIR } from 'circle-ir';
7
- /**
8
- * Format result as JSON.
9
- */
10
- export declare function formatJson(result: CircleIR): string;
11
- //# sourceMappingURL=json.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/cli/formatters/json.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAEnD"}
@@ -1,12 +0,0 @@
1
- /**
2
- * JSON Formatter
3
- *
4
- * Outputs the full Circle-IR JSON.
5
- */
6
- /**
7
- * Format result as JSON.
8
- */
9
- export function formatJson(result) {
10
- return JSON.stringify(result, null, 2);
11
- }
12
- //# sourceMappingURL=json.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/cli/formatters/json.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAgB;IACzC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Project JSON Formatter
3
- *
4
- * Outputs the full project analysis as JSON.
5
- */
6
- import type { ProjectAnalysis } from 'circle-ir';
7
- /**
8
- * Format project result as JSON.
9
- */
10
- export declare function formatProjectJson(result: ProjectAnalysis): string;
11
- //# sourceMappingURL=project-json.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-json.d.ts","sourceRoot":"","sources":["../../../src/cli/formatters/project-json.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAEjE"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Project JSON Formatter
3
- *
4
- * Outputs the full project analysis as JSON.
5
- */
6
- /**
7
- * Format project result as JSON.
8
- */
9
- export function formatProjectJson(result) {
10
- return JSON.stringify(result, null, 2);
11
- }
12
- //# sourceMappingURL=project-json.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-json.js","sourceRoot":"","sources":["../../../src/cli/formatters/project-json.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAuB;IACvD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Project SARIF Formatter
3
- *
4
- * Outputs project analysis results in SARIF format.
5
- */
6
- import type { ProjectAnalysis } from 'circle-ir';
7
- /**
8
- * Format project result as SARIF.
9
- */
10
- export declare function formatProjectSarif(result: ProjectAnalysis): string;
11
- //# sourceMappingURL=project-sarif.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-sarif.d.ts","sourceRoot":"","sources":["../../../src/cli/formatters/project-sarif.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAW,MAAM,WAAW,CAAC;AAa1D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAqBlE"}
@@ -1,127 +0,0 @@
1
- /**
2
- * Project SARIF Formatter
3
- *
4
- * Outputs project analysis results in SARIF format.
5
- */
6
- import { getRuleInfo, getSarifLevel, SARIF_SCHEMA, SARIF_VERSION, TOOL_INFO, } from './sarif-shared.js';
7
- /**
8
- * Format project result as SARIF.
9
- */
10
- export function formatProjectSarif(result) {
11
- const rules = buildRules(result.findings);
12
- const results = buildResults(result);
13
- const sarif = {
14
- $schema: SARIF_SCHEMA,
15
- version: SARIF_VERSION,
16
- runs: [
17
- {
18
- tool: {
19
- driver: {
20
- ...TOOL_INFO,
21
- rules,
22
- },
23
- },
24
- results,
25
- },
26
- ],
27
- };
28
- return JSON.stringify(sarif, null, 2);
29
- }
30
- /**
31
- * Build SARIF rules from findings.
32
- */
33
- function buildRules(findings) {
34
- const ruleMap = new Map();
35
- for (const finding of findings) {
36
- if (!ruleMap.has(finding.cwe)) {
37
- ruleMap.set(finding.cwe, buildRule(finding));
38
- }
39
- }
40
- return Array.from(ruleMap.values());
41
- }
42
- /**
43
- * Build a SARIF rule from a finding.
44
- */
45
- function buildRule(finding) {
46
- const ruleInfo = getRuleInfo(finding.type, finding.cwe);
47
- return {
48
- id: finding.cwe,
49
- name: ruleInfo.name,
50
- shortDescription: { text: ruleInfo.shortDescription },
51
- fullDescription: { text: ruleInfo.fullDescription },
52
- help: { text: finding.remediation },
53
- properties: {
54
- tags: ['security', finding.type],
55
- security_severity: ruleInfo.severity,
56
- },
57
- };
58
- }
59
- /**
60
- * Build SARIF results from project analysis.
61
- */
62
- function buildResults(result) {
63
- const sarifResults = [];
64
- for (const finding of result.findings) {
65
- const sarifResult = {
66
- ruleId: finding.cwe,
67
- level: getSarifLevel(finding.severity),
68
- message: {
69
- text: finding.explanation,
70
- },
71
- locations: [
72
- {
73
- physicalLocation: {
74
- artifactLocation: {
75
- uri: finding.sink.file,
76
- },
77
- region: {
78
- startLine: finding.sink.line,
79
- },
80
- },
81
- },
82
- ],
83
- };
84
- // Add code flow if we have path information
85
- if (finding.path && finding.path.length > 0) {
86
- sarifResult.codeFlows = [
87
- {
88
- threadFlows: [
89
- {
90
- locations: [
91
- // Source
92
- {
93
- location: buildLocation(finding.source.file, finding.source.line),
94
- state: { kind: 'source' },
95
- },
96
- // Intermediate hops
97
- ...finding.path.map(hop => ({
98
- location: buildLocation(hop.file, hop.line),
99
- state: { kind: 'passthrough' },
100
- })),
101
- // Sink
102
- {
103
- location: buildLocation(finding.sink.file, finding.sink.line),
104
- state: { kind: 'sink' },
105
- },
106
- ],
107
- },
108
- ],
109
- },
110
- ];
111
- }
112
- sarifResults.push(sarifResult);
113
- }
114
- return sarifResults;
115
- }
116
- /**
117
- * Build a SARIF location.
118
- */
119
- function buildLocation(uri, line) {
120
- return {
121
- physicalLocation: {
122
- artifactLocation: { uri },
123
- region: { startLine: line },
124
- },
125
- };
126
- }
127
- //# sourceMappingURL=project-sarif.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-sarif.js","sourceRoot":"","sources":["../../../src/cli/formatters/project-sarif.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Project Summary Formatter
3
- *
4
- * Outputs a human-readable summary of project-level analysis.
5
- */
6
- import type { ProjectAnalysis } from 'circle-ir';
7
- /**
8
- * Format project analysis as human-readable summary.
9
- */
10
- export declare function formatProjectSummary(result: ProjectAnalysis): string;
11
- //# sourceMappingURL=project-summary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-summary.d.ts","sourceRoot":"","sources":["../../../src/cli/formatters/project-summary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,WAAW,CAAC;AAErE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAwKpE"}