circle-ir-ai 2.7.1 → 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 (146) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/package.json +2 -2
  3. package/dist/cli/args.d.ts +0 -86
  4. package/dist/cli/args.d.ts.map +0 -1
  5. package/dist/cli/args.js +0 -653
  6. package/dist/cli/args.js.map +0 -1
  7. package/dist/cli/colors.d.ts +0 -31
  8. package/dist/cli/colors.d.ts.map +0 -1
  9. package/dist/cli/colors.js +0 -80
  10. package/dist/cli/colors.js.map +0 -1
  11. package/dist/cli/commands/analyze-skill.d.ts +0 -33
  12. package/dist/cli/commands/analyze-skill.d.ts.map +0 -1
  13. package/dist/cli/commands/analyze-skill.js +0 -217
  14. package/dist/cli/commands/analyze-skill.js.map +0 -1
  15. package/dist/cli/commands/analyze.d.ts +0 -19
  16. package/dist/cli/commands/analyze.d.ts.map +0 -1
  17. package/dist/cli/commands/analyze.js +0 -303
  18. package/dist/cli/commands/analyze.js.map +0 -1
  19. package/dist/cli/commands/benchmark-runner.d.ts +0 -42
  20. package/dist/cli/commands/benchmark-runner.d.ts.map +0 -1
  21. package/dist/cli/commands/benchmark-runner.js +0 -18
  22. package/dist/cli/commands/benchmark-runner.js.map +0 -1
  23. package/dist/cli/commands/benchmark.d.ts +0 -11
  24. package/dist/cli/commands/benchmark.d.ts.map +0 -1
  25. package/dist/cli/commands/benchmark.js +0 -90
  26. package/dist/cli/commands/benchmark.js.map +0 -1
  27. package/dist/cli/commands/cluster.d.ts +0 -12
  28. package/dist/cli/commands/cluster.d.ts.map +0 -1
  29. package/dist/cli/commands/cluster.js +0 -203
  30. package/dist/cli/commands/cluster.js.map +0 -1
  31. package/dist/cli/commands/compare.d.ts +0 -13
  32. package/dist/cli/commands/compare.d.ts.map +0 -1
  33. package/dist/cli/commands/compare.js +0 -109
  34. package/dist/cli/commands/compare.js.map +0 -1
  35. package/dist/cli/commands/dead-code.d.ts +0 -11
  36. package/dist/cli/commands/dead-code.d.ts.map +0 -1
  37. package/dist/cli/commands/dead-code.js +0 -75
  38. package/dist/cli/commands/dead-code.js.map +0 -1
  39. package/dist/cli/commands/generate-spec.d.ts +0 -11
  40. package/dist/cli/commands/generate-spec.d.ts.map +0 -1
  41. package/dist/cli/commands/generate-spec.js +0 -120
  42. package/dist/cli/commands/generate-spec.js.map +0 -1
  43. package/dist/cli/commands/health.d.ts +0 -11
  44. package/dist/cli/commands/health.d.ts.map +0 -1
  45. package/dist/cli/commands/health.js +0 -76
  46. package/dist/cli/commands/health.js.map +0 -1
  47. package/dist/cli/commands/index.d.ts +0 -30
  48. package/dist/cli/commands/index.d.ts.map +0 -1
  49. package/dist/cli/commands/index.js +0 -36
  50. package/dist/cli/commands/index.js.map +0 -1
  51. package/dist/cli/commands/metrics.d.ts +0 -12
  52. package/dist/cli/commands/metrics.d.ts.map +0 -1
  53. package/dist/cli/commands/metrics.js +0 -231
  54. package/dist/cli/commands/metrics.js.map +0 -1
  55. package/dist/cli/commands/project.d.ts +0 -21
  56. package/dist/cli/commands/project.d.ts.map +0 -1
  57. package/dist/cli/commands/project.js +0 -92
  58. package/dist/cli/commands/project.js.map +0 -1
  59. package/dist/cli/commands/quality.d.ts +0 -15
  60. package/dist/cli/commands/quality.d.ts.map +0 -1
  61. package/dist/cli/commands/quality.js +0 -86
  62. package/dist/cli/commands/quality.js.map +0 -1
  63. package/dist/cli/commands/scan.d.ts +0 -11
  64. package/dist/cli/commands/scan.d.ts.map +0 -1
  65. package/dist/cli/commands/scan.js +0 -102
  66. package/dist/cli/commands/scan.js.map +0 -1
  67. package/dist/cli/commands/secrets.d.ts +0 -11
  68. package/dist/cli/commands/secrets.d.ts.map +0 -1
  69. package/dist/cli/commands/secrets.js +0 -79
  70. package/dist/cli/commands/secrets.js.map +0 -1
  71. package/dist/cli/commands/spec-diff.d.ts +0 -12
  72. package/dist/cli/commands/spec-diff.d.ts.map +0 -1
  73. package/dist/cli/commands/spec-diff.js +0 -150
  74. package/dist/cli/commands/spec-diff.js.map +0 -1
  75. package/dist/cli/commands/swarm.d.ts +0 -21
  76. package/dist/cli/commands/swarm.d.ts.map +0 -1
  77. package/dist/cli/commands/swarm.js +0 -175
  78. package/dist/cli/commands/swarm.js.map +0 -1
  79. package/dist/cli/commands/trust.d.ts +0 -23
  80. package/dist/cli/commands/trust.d.ts.map +0 -1
  81. package/dist/cli/commands/trust.js +0 -397
  82. package/dist/cli/commands/trust.js.map +0 -1
  83. package/dist/cli/commands/understand.d.ts +0 -12
  84. package/dist/cli/commands/understand.d.ts.map +0 -1
  85. package/dist/cli/commands/understand.js +0 -188
  86. package/dist/cli/commands/understand.js.map +0 -1
  87. package/dist/cli/config.d.ts +0 -161
  88. package/dist/cli/config.d.ts.map +0 -1
  89. package/dist/cli/config.js +0 -383
  90. package/dist/cli/config.js.map +0 -1
  91. package/dist/cli/discovery.d.ts +0 -31
  92. package/dist/cli/discovery.d.ts.map +0 -1
  93. package/dist/cli/discovery.js +0 -212
  94. package/dist/cli/discovery.js.map +0 -1
  95. package/dist/cli/effective-options.d.ts +0 -42
  96. package/dist/cli/effective-options.d.ts.map +0 -1
  97. package/dist/cli/effective-options.js +0 -80
  98. package/dist/cli/effective-options.js.map +0 -1
  99. package/dist/cli/file-collection.d.ts +0 -49
  100. package/dist/cli/file-collection.d.ts.map +0 -1
  101. package/dist/cli/file-collection.js +0 -142
  102. package/dist/cli/file-collection.js.map +0 -1
  103. package/dist/cli/formatters/index.d.ts +0 -15
  104. package/dist/cli/formatters/index.d.ts.map +0 -1
  105. package/dist/cli/formatters/index.js +0 -51
  106. package/dist/cli/formatters/index.js.map +0 -1
  107. package/dist/cli/formatters/json.d.ts +0 -11
  108. package/dist/cli/formatters/json.d.ts.map +0 -1
  109. package/dist/cli/formatters/json.js +0 -12
  110. package/dist/cli/formatters/json.js.map +0 -1
  111. package/dist/cli/formatters/project-json.d.ts +0 -11
  112. package/dist/cli/formatters/project-json.d.ts.map +0 -1
  113. package/dist/cli/formatters/project-json.js +0 -12
  114. package/dist/cli/formatters/project-json.js.map +0 -1
  115. package/dist/cli/formatters/project-sarif.d.ts +0 -11
  116. package/dist/cli/formatters/project-sarif.d.ts.map +0 -1
  117. package/dist/cli/formatters/project-sarif.js +0 -127
  118. package/dist/cli/formatters/project-sarif.js.map +0 -1
  119. package/dist/cli/formatters/project-summary.d.ts +0 -11
  120. package/dist/cli/formatters/project-summary.d.ts.map +0 -1
  121. package/dist/cli/formatters/project-summary.js +0 -202
  122. package/dist/cli/formatters/project-summary.js.map +0 -1
  123. package/dist/cli/formatters/sarif-shared.d.ts +0 -101
  124. package/dist/cli/formatters/sarif-shared.d.ts.map +0 -1
  125. package/dist/cli/formatters/sarif-shared.js +0 -57
  126. package/dist/cli/formatters/sarif-shared.js.map +0 -1
  127. package/dist/cli/formatters/sarif.d.ts +0 -12
  128. package/dist/cli/formatters/sarif.d.ts.map +0 -1
  129. package/dist/cli/formatters/sarif.js +0 -92
  130. package/dist/cli/formatters/sarif.js.map +0 -1
  131. package/dist/cli/formatters/summary.d.ts +0 -11
  132. package/dist/cli/formatters/summary.d.ts.map +0 -1
  133. package/dist/cli/formatters/summary.js +0 -240
  134. package/dist/cli/formatters/summary.js.map +0 -1
  135. package/dist/cli/formatters/two-phase-summary.d.ts +0 -11
  136. package/dist/cli/formatters/two-phase-summary.d.ts.map +0 -1
  137. package/dist/cli/formatters/two-phase-summary.js +0 -188
  138. package/dist/cli/formatters/two-phase-summary.js.map +0 -1
  139. package/dist/cli/index.d.ts +0 -10
  140. package/dist/cli/index.d.ts.map +0 -1
  141. package/dist/cli/index.js +0 -72
  142. package/dist/cli/index.js.map +0 -1
  143. package/dist/cli/program.d.ts +0 -117
  144. package/dist/cli/program.d.ts.map +0 -1
  145. package/dist/cli/program.js +0 -825
  146. package/dist/cli/program.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,27 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.7.2] - 2026-05-08
9
+
10
+ ### Changed
11
+
12
+ - **circle-ir dep upgraded `^3.20.0` → `^3.21.0`.** Brings positional-
13
+ argument taint sources for Bash (`$1`–`$9`, `$@`, `$*`, `${1}`,
14
+ etc.) — closes the highest-priority residual from #33. Verified
15
+ end-to-end: `eval "echo $1"` and `cat "/etc/app/$2"` now produce
16
+ CWE-94 / CWE-22 findings on `--no-llm` runs, where 3.20.0 produced
17
+ zero.
18
+
19
+ The release also added detection logic for command substitution
20
+ (`VAR=$(curl ...)`) and untrusted env vars (`USER_INPUT`, `HTTP_*`,
21
+ `REQUEST_*`, etc.) but those sources don't yet reach `eval` /
22
+ code-injection sinks — likely a source-type ↔ sink-type mapping
23
+ in circle-ir's findings generator (`io_input`/`network_input`/
24
+ `env_input` not yet wired to `code_injection`). Refined ask
25
+ posted on #33.
26
+
27
+ No circle-ir-ai source changes — pure dep bump. 478 tests pass.
28
+
8
29
  ## [2.7.1] - 2026-05-07
9
30
 
10
31
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "circle-ir-ai",
3
- "version": "2.7.1",
3
+ "version": "2.7.2",
4
4
  "description": "LLM-enhanced SAST analysis built on circle-ir",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -92,7 +92,7 @@
92
92
  "dependencies": {
93
93
  "@ax-llm/ax": "^20.0.0",
94
94
  "@mastra/core": "^1.18.0",
95
- "circle-ir": "^3.20.0",
95
+ "circle-ir": "^3.21.0",
96
96
  "minimatch": "^10.2.5",
97
97
  "p-queue": "^9.1.0"
98
98
  },
@@ -1,86 +0,0 @@
1
- /**
2
- * CLI Argument Parser
3
- */
4
- export type OutputFormat = 'json' | 'summary' | 'sarif' | 'markdown' | 'csv';
5
- export type Command = 'analyze' | 'benchmark' | 'scan' | 'health' | 'secrets' | 'dead-code' | 'generate-spec' | 'analyze-skill' | 'metrics' | 'trust' | 'compare' | 'quality' | 'understand' | 'spec-diff' | 'cluster';
6
- export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent';
7
- export type BundleType = 'jr-dev' | 'sr-dev' | 'architect' | 'security-review' | 'full-review';
8
- export interface CliArgs {
9
- command: Command;
10
- file: string | null;
11
- directory: string | null;
12
- format: OutputFormat;
13
- output: string | null;
14
- config: string | null;
15
- include: string[];
16
- exclude: string[];
17
- exitCode: boolean;
18
- quiet: boolean;
19
- help: boolean;
20
- version: boolean;
21
- logLevel: LogLevel | null;
22
- discoverPatterns: boolean;
23
- patternThreshold: number;
24
- noLlm: boolean;
25
- llmEnrich: boolean;
26
- llmVerify: boolean;
27
- llmBaseUrl: string | null;
28
- llmApiKey: string | null;
29
- llmModel: string | null;
30
- language: string | null;
31
- threads: number;
32
- bundle: BundleType | null;
33
- expectedResults: string | null;
34
- limit: number | null;
35
- categories: string[];
36
- parallel: number | null;
37
- cache: boolean;
38
- cacheDir: string | null;
39
- clearCache: boolean;
40
- streamOutput: string | null;
41
- memoryEfficient: boolean;
42
- specModel: string | null;
43
- specOverwrite: boolean;
44
- specSkip: boolean;
45
- specNoBackup: boolean;
46
- specDesign: boolean;
47
- specPrinciples: boolean;
48
- specTasks: boolean;
49
- specDesignLLM: boolean;
50
- specPrinciplesLLM: boolean;
51
- specTasksLLM: boolean;
52
- specDir: string | null;
53
- crossArtifact?: boolean;
54
- verification?: boolean;
55
- minConfidence?: number;
56
- minSeverity?: 'critical' | 'high' | 'medium' | 'low' | 'info';
57
- severity: 'critical' | 'high' | 'medium' | 'low' | null;
58
- excludeTests: boolean;
59
- llmDiscovery: boolean;
60
- disablePass: string[];
61
- fileTimeout: number;
62
- maxFiles: number | null;
63
- pathB: string | null;
64
- history: boolean;
65
- maxCommits: number;
66
- includeCategory: string[];
67
- excludeCategory: string[];
68
- includeTests: boolean;
69
- publicAsEntry: boolean;
70
- top: number | null;
71
- full: boolean;
72
- metricCategory: string[];
73
- role: string[];
74
- securityOnly: boolean;
75
- healthSecurity: boolean;
76
- healthSecrets: boolean;
77
- healthDeadCode: boolean;
78
- healthQuality: boolean;
79
- healthPerformance: boolean;
80
- threshold: number;
81
- }
82
- /**
83
- * Parse command-line arguments.
84
- */
85
- export declare function parseArgs(argv: string[]): CliArgs;
86
- //# sourceMappingURL=args.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}