@defai.digital/ax-cli 3.15.21 → 3.15.24

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 (261) hide show
  1. package/README.md +22 -2
  2. package/dist/agent/agent-executor.d.ts +1 -1
  3. package/dist/agent/agent-executor.js +15 -17
  4. package/dist/agent/agent-executor.js.map +1 -1
  5. package/dist/agent/execution/tool-executor.d.ts +6 -0
  6. package/dist/agent/execution/tool-executor.js +16 -1
  7. package/dist/agent/execution/tool-executor.js.map +1 -1
  8. package/dist/agent/llm-agent.js +91 -22
  9. package/dist/agent/llm-agent.js.map +1 -1
  10. package/dist/agent/parallel-tools.d.ts +65 -0
  11. package/dist/agent/parallel-tools.js +146 -0
  12. package/dist/agent/parallel-tools.js.map +1 -0
  13. package/dist/llm/tools.js +1 -1
  14. package/dist/llm/tools.js.map +1 -1
  15. package/dist/ui/components/chat-interface.js +14 -0
  16. package/dist/ui/components/chat-interface.js.map +1 -1
  17. package/dist/ui/hooks/use-input-handler.js +2 -2
  18. package/dist/ui/hooks/use-input-handler.js.map +1 -1
  19. package/dist/ui/utils/image-handler.js +8 -5
  20. package/dist/ui/utils/image-handler.js.map +1 -1
  21. package/package.json +1 -1
  22. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.d.ts +0 -29
  23. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js +0 -103
  24. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js.map +0 -1
  25. package/dist/analyzers/architecture/architecture-analyzer.d.ts +0 -58
  26. package/dist/analyzers/architecture/architecture-analyzer.js +0 -276
  27. package/dist/analyzers/architecture/architecture-analyzer.js.map +0 -1
  28. package/dist/analyzers/architecture/index.d.ts +0 -12
  29. package/dist/analyzers/architecture/index.js +0 -14
  30. package/dist/analyzers/architecture/index.js.map +0 -1
  31. package/dist/analyzers/architecture/pattern-detectors/base-detector.d.ts +0 -27
  32. package/dist/analyzers/architecture/pattern-detectors/base-detector.js +0 -31
  33. package/dist/analyzers/architecture/pattern-detectors/base-detector.js.map +0 -1
  34. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.d.ts +0 -11
  35. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js +0 -57
  36. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js.map +0 -1
  37. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.d.ts +0 -11
  38. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js +0 -43
  39. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js.map +0 -1
  40. package/dist/analyzers/architecture/pattern-detectors/repository-detector.d.ts +0 -11
  41. package/dist/analyzers/architecture/pattern-detectors/repository-detector.js +0 -49
  42. package/dist/analyzers/architecture/pattern-detectors/repository-detector.js.map +0 -1
  43. package/dist/analyzers/architecture/project-structure-scanner.d.ts +0 -54
  44. package/dist/analyzers/architecture/project-structure-scanner.js +0 -204
  45. package/dist/analyzers/architecture/project-structure-scanner.js.map +0 -1
  46. package/dist/analyzers/ast/index.d.ts +0 -13
  47. package/dist/analyzers/ast/index.js +0 -16
  48. package/dist/analyzers/ast/index.js.map +0 -1
  49. package/dist/analyzers/ast/language-parser.d.ts +0 -59
  50. package/dist/analyzers/ast/language-parser.js +0 -107
  51. package/dist/analyzers/ast/language-parser.js.map +0 -1
  52. package/dist/analyzers/ast/multi-language-parser.d.ts +0 -79
  53. package/dist/analyzers/ast/multi-language-parser.js +0 -157
  54. package/dist/analyzers/ast/multi-language-parser.js.map +0 -1
  55. package/dist/analyzers/ast/node-helpers.d.ts +0 -81
  56. package/dist/analyzers/ast/node-helpers.js +0 -128
  57. package/dist/analyzers/ast/node-helpers.js.map +0 -1
  58. package/dist/analyzers/ast/parser.d.ts +0 -60
  59. package/dist/analyzers/ast/parser.js +0 -305
  60. package/dist/analyzers/ast/parser.js.map +0 -1
  61. package/dist/analyzers/ast/traverser.d.ts +0 -67
  62. package/dist/analyzers/ast/traverser.js +0 -156
  63. package/dist/analyzers/ast/traverser.js.map +0 -1
  64. package/dist/analyzers/ast/types.d.ts +0 -107
  65. package/dist/analyzers/ast/types.js +0 -7
  66. package/dist/analyzers/ast/types.js.map +0 -1
  67. package/dist/analyzers/best-practices/base-rule.d.ts +0 -45
  68. package/dist/analyzers/best-practices/base-rule.js +0 -45
  69. package/dist/analyzers/best-practices/base-rule.js.map +0 -1
  70. package/dist/analyzers/best-practices/best-practice-validator.d.ts +0 -35
  71. package/dist/analyzers/best-practices/best-practice-validator.js +0 -181
  72. package/dist/analyzers/best-practices/best-practice-validator.js.map +0 -1
  73. package/dist/analyzers/best-practices/index.d.ts +0 -10
  74. package/dist/analyzers/best-practices/index.js +0 -11
  75. package/dist/analyzers/best-practices/index.js.map +0 -1
  76. package/dist/analyzers/best-practices/rules/index.d.ts +0 -7
  77. package/dist/analyzers/best-practices/rules/index.js +0 -56
  78. package/dist/analyzers/best-practices/rules/index.js.map +0 -1
  79. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.d.ts +0 -17
  80. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js +0 -41
  81. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js.map +0 -1
  82. package/dist/analyzers/best-practices/rules/typescript/function-complexity.d.ts +0 -27
  83. package/dist/analyzers/best-practices/rules/typescript/function-complexity.js +0 -76
  84. package/dist/analyzers/best-practices/rules/typescript/function-complexity.js.map +0 -1
  85. package/dist/analyzers/best-practices/rules/typescript/index.d.ts +0 -15
  86. package/dist/analyzers/best-practices/rules/typescript/index.js +0 -16
  87. package/dist/analyzers/best-practices/rules/typescript/index.js.map +0 -1
  88. package/dist/analyzers/best-practices/rules/typescript/max-file-length.d.ts +0 -18
  89. package/dist/analyzers/best-practices/rules/typescript/max-file-length.js +0 -25
  90. package/dist/analyzers/best-practices/rules/typescript/max-file-length.js.map +0 -1
  91. package/dist/analyzers/best-practices/rules/typescript/no-any-type.d.ts +0 -17
  92. package/dist/analyzers/best-practices/rules/typescript/no-any-type.js +0 -27
  93. package/dist/analyzers/best-practices/rules/typescript/no-any-type.js.map +0 -1
  94. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.d.ts +0 -18
  95. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js +0 -39
  96. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js.map +0 -1
  97. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.d.ts +0 -17
  98. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +0 -38
  99. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +0 -1
  100. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.d.ts +0 -17
  101. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +0 -38
  102. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +0 -1
  103. package/dist/analyzers/best-practices/rules/typescript/prefer-const.d.ts +0 -17
  104. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +0 -35
  105. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +0 -1
  106. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.d.ts +0 -17
  107. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +0 -36
  108. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +0 -1
  109. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.d.ts +0 -17
  110. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js +0 -27
  111. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js.map +0 -1
  112. package/dist/analyzers/best-practices/types.d.ts +0 -86
  113. package/dist/analyzers/best-practices/types.js +0 -7
  114. package/dist/analyzers/best-practices/types.js.map +0 -1
  115. package/dist/analyzers/cache/analysis-cache.d.ts +0 -41
  116. package/dist/analyzers/cache/analysis-cache.js +0 -84
  117. package/dist/analyzers/cache/analysis-cache.js.map +0 -1
  118. package/dist/analyzers/code-smells/base-smell-detector.d.ts +0 -30
  119. package/dist/analyzers/code-smells/base-smell-detector.js +0 -44
  120. package/dist/analyzers/code-smells/base-smell-detector.js.map +0 -1
  121. package/dist/analyzers/code-smells/code-smell-analyzer.d.ts +0 -30
  122. package/dist/analyzers/code-smells/code-smell-analyzer.js +0 -167
  123. package/dist/analyzers/code-smells/code-smell-analyzer.js.map +0 -1
  124. package/dist/analyzers/code-smells/detectors/data-clumps-detector.d.ts +0 -11
  125. package/dist/analyzers/code-smells/detectors/data-clumps-detector.js +0 -64
  126. package/dist/analyzers/code-smells/detectors/data-clumps-detector.js.map +0 -1
  127. package/dist/analyzers/code-smells/detectors/dead-code-detector.d.ts +0 -11
  128. package/dist/analyzers/code-smells/detectors/dead-code-detector.js +0 -58
  129. package/dist/analyzers/code-smells/detectors/dead-code-detector.js.map +0 -1
  130. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.d.ts +0 -11
  131. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js +0 -69
  132. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js.map +0 -1
  133. package/dist/analyzers/code-smells/detectors/feature-envy-detector.d.ts +0 -11
  134. package/dist/analyzers/code-smells/detectors/feature-envy-detector.js +0 -70
  135. package/dist/analyzers/code-smells/detectors/feature-envy-detector.js.map +0 -1
  136. package/dist/analyzers/code-smells/detectors/inappropriate-intimacy-detector.d.ts +0 -11
  137. package/dist/analyzers/code-smells/detectors/inappropriate-intimacy-detector.js +0 -59
  138. package/dist/analyzers/code-smells/detectors/inappropriate-intimacy-detector.js.map +0 -1
  139. package/dist/analyzers/code-smells/detectors/large-class-detector.d.ts +0 -13
  140. package/dist/analyzers/code-smells/detectors/large-class-detector.js +0 -61
  141. package/dist/analyzers/code-smells/detectors/large-class-detector.js.map +0 -1
  142. package/dist/analyzers/code-smells/detectors/long-method-detector.d.ts +0 -12
  143. package/dist/analyzers/code-smells/detectors/long-method-detector.js +0 -55
  144. package/dist/analyzers/code-smells/detectors/long-method-detector.js.map +0 -1
  145. package/dist/analyzers/code-smells/detectors/long-parameter-list-detector.d.ts +0 -12
  146. package/dist/analyzers/code-smells/detectors/long-parameter-list-detector.js +0 -53
  147. package/dist/analyzers/code-smells/detectors/long-parameter-list-detector.js.map +0 -1
  148. package/dist/analyzers/code-smells/detectors/magic-numbers-detector.d.ts +0 -12
  149. package/dist/analyzers/code-smells/detectors/magic-numbers-detector.js +0 -56
  150. package/dist/analyzers/code-smells/detectors/magic-numbers-detector.js.map +0 -1
  151. package/dist/analyzers/code-smells/detectors/nested-conditionals-detector.d.ts +0 -13
  152. package/dist/analyzers/code-smells/detectors/nested-conditionals-detector.js +0 -77
  153. package/dist/analyzers/code-smells/detectors/nested-conditionals-detector.js.map +0 -1
  154. package/dist/analyzers/code-smells/index.d.ts +0 -16
  155. package/dist/analyzers/code-smells/index.js +0 -19
  156. package/dist/analyzers/code-smells/index.js.map +0 -1
  157. package/dist/analyzers/code-smells/types.d.ts +0 -82
  158. package/dist/analyzers/code-smells/types.js +0 -30
  159. package/dist/analyzers/code-smells/types.js.map +0 -1
  160. package/dist/analyzers/dependency/circular-detector.d.ts +0 -17
  161. package/dist/analyzers/dependency/circular-detector.js +0 -73
  162. package/dist/analyzers/dependency/circular-detector.js.map +0 -1
  163. package/dist/analyzers/dependency/coupling-calculator.d.ts +0 -24
  164. package/dist/analyzers/dependency/coupling-calculator.js +0 -86
  165. package/dist/analyzers/dependency/coupling-calculator.js.map +0 -1
  166. package/dist/analyzers/dependency/dependency-analyzer.d.ts +0 -44
  167. package/dist/analyzers/dependency/dependency-analyzer.js +0 -218
  168. package/dist/analyzers/dependency/dependency-analyzer.js.map +0 -1
  169. package/dist/analyzers/dependency/dependency-graph.d.ts +0 -57
  170. package/dist/analyzers/dependency/dependency-graph.js +0 -198
  171. package/dist/analyzers/dependency/dependency-graph.js.map +0 -1
  172. package/dist/analyzers/dependency/index.d.ts +0 -8
  173. package/dist/analyzers/dependency/index.js +0 -8
  174. package/dist/analyzers/dependency/index.js.map +0 -1
  175. package/dist/analyzers/dependency/types.d.ts +0 -105
  176. package/dist/analyzers/dependency/types.js +0 -5
  177. package/dist/analyzers/dependency/types.js.map +0 -1
  178. package/dist/analyzers/errors.d.ts +0 -51
  179. package/dist/analyzers/errors.js +0 -79
  180. package/dist/analyzers/errors.js.map +0 -1
  181. package/dist/analyzers/git/churn-calculator.d.ts +0 -36
  182. package/dist/analyzers/git/churn-calculator.js +0 -257
  183. package/dist/analyzers/git/churn-calculator.js.map +0 -1
  184. package/dist/analyzers/git/git-analyzer.d.ts +0 -19
  185. package/dist/analyzers/git/git-analyzer.js +0 -79
  186. package/dist/analyzers/git/git-analyzer.js.map +0 -1
  187. package/dist/analyzers/git/hotspot-detector.d.ts +0 -34
  188. package/dist/analyzers/git/hotspot-detector.js +0 -173
  189. package/dist/analyzers/git/hotspot-detector.js.map +0 -1
  190. package/dist/analyzers/git/index.d.ts +0 -7
  191. package/dist/analyzers/git/index.js +0 -7
  192. package/dist/analyzers/git/index.js.map +0 -1
  193. package/dist/analyzers/git/types.d.ts +0 -88
  194. package/dist/analyzers/git/types.js +0 -5
  195. package/dist/analyzers/git/types.js.map +0 -1
  196. package/dist/analyzers/metrics/halstead-calculator.d.ts +0 -30
  197. package/dist/analyzers/metrics/halstead-calculator.js +0 -150
  198. package/dist/analyzers/metrics/halstead-calculator.js.map +0 -1
  199. package/dist/analyzers/metrics/index.d.ts +0 -9
  200. package/dist/analyzers/metrics/index.js +0 -9
  201. package/dist/analyzers/metrics/index.js.map +0 -1
  202. package/dist/analyzers/metrics/maintainability-calculator.d.ts +0 -17
  203. package/dist/analyzers/metrics/maintainability-calculator.js +0 -46
  204. package/dist/analyzers/metrics/maintainability-calculator.js.map +0 -1
  205. package/dist/analyzers/metrics/metrics-analyzer.d.ts +0 -32
  206. package/dist/analyzers/metrics/metrics-analyzer.js +0 -144
  207. package/dist/analyzers/metrics/metrics-analyzer.js.map +0 -1
  208. package/dist/analyzers/metrics/types.d.ts +0 -67
  209. package/dist/analyzers/metrics/types.js +0 -5
  210. package/dist/analyzers/metrics/types.js.map +0 -1
  211. package/dist/analyzers/security/base-detector.d.ts +0 -58
  212. package/dist/analyzers/security/base-detector.js +0 -104
  213. package/dist/analyzers/security/base-detector.js.map +0 -1
  214. package/dist/analyzers/security/detectors/command-injection-detector.d.ts +0 -12
  215. package/dist/analyzers/security/detectors/command-injection-detector.js +0 -84
  216. package/dist/analyzers/security/detectors/command-injection-detector.js.map +0 -1
  217. package/dist/analyzers/security/detectors/hardcoded-secrets-detector.d.ts +0 -16
  218. package/dist/analyzers/security/detectors/hardcoded-secrets-detector.js +0 -140
  219. package/dist/analyzers/security/detectors/hardcoded-secrets-detector.js.map +0 -1
  220. package/dist/analyzers/security/detectors/insecure-deserialization-detector.d.ts +0 -12
  221. package/dist/analyzers/security/detectors/insecure-deserialization-detector.js +0 -109
  222. package/dist/analyzers/security/detectors/insecure-deserialization-detector.js.map +0 -1
  223. package/dist/analyzers/security/detectors/insecure-random-detector.d.ts +0 -12
  224. package/dist/analyzers/security/detectors/insecure-random-detector.js +0 -61
  225. package/dist/analyzers/security/detectors/insecure-random-detector.js.map +0 -1
  226. package/dist/analyzers/security/detectors/path-traversal-detector.d.ts +0 -12
  227. package/dist/analyzers/security/detectors/path-traversal-detector.js +0 -82
  228. package/dist/analyzers/security/detectors/path-traversal-detector.js.map +0 -1
  229. package/dist/analyzers/security/detectors/sql-injection-detector.d.ts +0 -12
  230. package/dist/analyzers/security/detectors/sql-injection-detector.js +0 -88
  231. package/dist/analyzers/security/detectors/sql-injection-detector.js.map +0 -1
  232. package/dist/analyzers/security/detectors/weak-crypto-detector.d.ts +0 -12
  233. package/dist/analyzers/security/detectors/weak-crypto-detector.js +0 -104
  234. package/dist/analyzers/security/detectors/weak-crypto-detector.js.map +0 -1
  235. package/dist/analyzers/security/detectors/xss-detector.d.ts +0 -12
  236. package/dist/analyzers/security/detectors/xss-detector.js +0 -90
  237. package/dist/analyzers/security/detectors/xss-detector.js.map +0 -1
  238. package/dist/analyzers/security/index.d.ts +0 -16
  239. package/dist/analyzers/security/index.js +0 -18
  240. package/dist/analyzers/security/index.js.map +0 -1
  241. package/dist/analyzers/security/security-analyzer.d.ts +0 -38
  242. package/dist/analyzers/security/security-analyzer.js +0 -215
  243. package/dist/analyzers/security/security-analyzer.js.map +0 -1
  244. package/dist/analyzers/security/types.d.ts +0 -95
  245. package/dist/analyzers/security/types.js +0 -7
  246. package/dist/analyzers/security/types.js.map +0 -1
  247. package/dist/tools/analysis-tools/architecture-tool.d.ts +0 -46
  248. package/dist/tools/analysis-tools/architecture-tool.js +0 -124
  249. package/dist/tools/analysis-tools/architecture-tool.js.map +0 -1
  250. package/dist/tools/analysis-tools/validation-tool.d.ts +0 -51
  251. package/dist/tools/analysis-tools/validation-tool.js +0 -121
  252. package/dist/tools/analysis-tools/validation-tool.js.map +0 -1
  253. package/dist/tools/analysis-tools.d.ts +0 -73
  254. package/dist/tools/analysis-tools.js +0 -422
  255. package/dist/tools/analysis-tools.js.map +0 -1
  256. package/dist/types/analysis.d.ts +0 -177
  257. package/dist/types/analysis.js +0 -8
  258. package/dist/types/analysis.js.map +0 -1
  259. package/dist/utils/analysis-logger.d.ts +0 -50
  260. package/dist/utils/analysis-logger.js +0 -73
  261. package/dist/utils/analysis-logger.js.map +0 -1
@@ -1,215 +0,0 @@
1
- /**
2
- * Security Analyzer
3
- *
4
- * Main orchestrator for security vulnerability detection
5
- */
6
- import { promises as fs } from 'fs';
7
- import { glob } from 'glob';
8
- // Import all detectors
9
- import { SQLInjectionDetector } from './detectors/sql-injection-detector.js';
10
- import { XSSDetector } from './detectors/xss-detector.js';
11
- import { HardcodedSecretsDetector } from './detectors/hardcoded-secrets-detector.js';
12
- import { InsecureRandomDetector } from './detectors/insecure-random-detector.js';
13
- import { PathTraversalDetector } from './detectors/path-traversal-detector.js';
14
- import { CommandInjectionDetector } from './detectors/command-injection-detector.js';
15
- import { WeakCryptoDetector } from './detectors/weak-crypto-detector.js';
16
- import { InsecureDeserializationDetector } from './detectors/insecure-deserialization-detector.js';
17
- export class SecurityAnalyzer {
18
- detectors;
19
- constructor() {
20
- this.detectors = new Map();
21
- this.registerDefaultDetectors();
22
- }
23
- /**
24
- * Register all default security detectors
25
- */
26
- registerDefaultDetectors() {
27
- const detectors = [
28
- new SQLInjectionDetector(),
29
- new XSSDetector(),
30
- new HardcodedSecretsDetector(),
31
- new InsecureRandomDetector(),
32
- new PathTraversalDetector(),
33
- new CommandInjectionDetector(),
34
- new WeakCryptoDetector(),
35
- new InsecureDeserializationDetector(),
36
- ];
37
- for (const detector of detectors) {
38
- this.detectors.set(detector.id, detector);
39
- }
40
- }
41
- /**
42
- * Scan a single file for security vulnerabilities
43
- */
44
- async scanFile(filePath, options = {}) {
45
- const startTime = Date.now();
46
- try {
47
- // Read file content
48
- const content = await fs.readFile(filePath, 'utf-8');
49
- // Check file size limit
50
- const maxFileSize = options.maxFileSize || 1024 * 1024; // 1MB default
51
- if (content.length > maxFileSize) {
52
- return Object.freeze({
53
- file: filePath,
54
- vulnerabilities: Object.freeze([]),
55
- riskScore: 0,
56
- timestamp: new Date(),
57
- durationMs: Date.now() - startTime,
58
- });
59
- }
60
- // Run all applicable detectors in parallel
61
- const detectorPromises = [];
62
- for (const detector of this.detectors.values()) {
63
- // Check if detector is enabled
64
- const detectorConfig = options.detectors?.[detector.id];
65
- if (detectorConfig && !detectorConfig.enabled) {
66
- continue;
67
- }
68
- // Check if detector applies to this file
69
- if (!detector.appliesTo(filePath)) {
70
- continue;
71
- }
72
- // Run detector
73
- detectorPromises.push(detector.scan(content, filePath));
74
- }
75
- // Wait for all detectors to complete
76
- const results = await Promise.all(detectorPromises);
77
- // Flatten vulnerabilities
78
- let vulnerabilities = results.flat();
79
- // Filter out info-level findings if not requested
80
- if (!options.includeInfo) {
81
- vulnerabilities = vulnerabilities.filter(v => v.severity !== 'info');
82
- }
83
- // Calculate risk score
84
- const riskScore = this.calculateRiskScore(vulnerabilities);
85
- return Object.freeze({
86
- file: filePath,
87
- vulnerabilities: Object.freeze(vulnerabilities),
88
- riskScore,
89
- timestamp: new Date(),
90
- durationMs: Date.now() - startTime,
91
- });
92
- }
93
- catch {
94
- // Return empty result on error
95
- return Object.freeze({
96
- file: filePath,
97
- vulnerabilities: Object.freeze([]),
98
- riskScore: 0,
99
- timestamp: new Date(),
100
- durationMs: Date.now() - startTime,
101
- });
102
- }
103
- }
104
- /**
105
- * Scan multiple files in batch
106
- */
107
- async scanBatch(files, options = {}) {
108
- const timestamp = new Date();
109
- // Scan files with concurrency control
110
- const maxConcurrent = 5;
111
- const fileResults = [];
112
- for (let i = 0; i < files.length; i += maxConcurrent) {
113
- const batch = files.slice(i, i + maxConcurrent);
114
- const batchResults = await Promise.all(batch.map(file => this.scanFile(file, options)));
115
- fileResults.push(...batchResults);
116
- }
117
- // Calculate summary statistics
118
- const totalVulnerabilities = fileResults.reduce((sum, result) => sum + result.vulnerabilities.length, 0);
119
- let criticalCount = 0;
120
- let highCount = 0;
121
- let mediumCount = 0;
122
- let lowCount = 0;
123
- let infoCount = 0;
124
- for (const result of fileResults) {
125
- for (const vuln of result.vulnerabilities) {
126
- switch (vuln.severity) {
127
- case 'critical':
128
- criticalCount++;
129
- break;
130
- case 'high':
131
- highCount++;
132
- break;
133
- case 'medium':
134
- mediumCount++;
135
- break;
136
- case 'low':
137
- lowCount++;
138
- break;
139
- case 'info':
140
- infoCount++;
141
- break;
142
- }
143
- }
144
- }
145
- // Calculate average risk score
146
- const averageRiskScore = fileResults.length > 0
147
- ? fileResults.reduce((sum, r) => sum + r.riskScore, 0) / fileResults.length
148
- : 0;
149
- // Find highest risk files
150
- const highestRiskFiles = fileResults
151
- .filter(r => r.riskScore > 0)
152
- .sort((a, b) => b.riskScore - a.riskScore)
153
- .slice(0, 10)
154
- .map(r => ({ file: r.file, score: r.riskScore }));
155
- return Object.freeze({
156
- files: Object.freeze(fileResults),
157
- totalVulnerabilities,
158
- criticalCount,
159
- highCount,
160
- mediumCount,
161
- lowCount,
162
- infoCount,
163
- averageRiskScore,
164
- highestRiskFiles: Object.freeze(highestRiskFiles),
165
- timestamp,
166
- });
167
- }
168
- /**
169
- * Scan directory with pattern
170
- */
171
- async scanDirectory(directory, pattern = '**/*.{ts,tsx,js,jsx}', options = {}) {
172
- // Find all matching files
173
- const files = await glob(pattern, {
174
- cwd: directory,
175
- absolute: true,
176
- nodir: true,
177
- ignore: ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.git/**'],
178
- });
179
- return this.scanBatch(files, options);
180
- }
181
- /**
182
- * Calculate risk score for a file based on vulnerabilities
183
- */
184
- calculateRiskScore(vulnerabilities) {
185
- if (vulnerabilities.length === 0)
186
- return 0;
187
- const severityWeights = {
188
- critical: 10,
189
- high: 7,
190
- medium: 4,
191
- low: 2,
192
- info: 1,
193
- };
194
- let totalScore = 0;
195
- for (const vuln of vulnerabilities) {
196
- totalScore += severityWeights[vuln.severity];
197
- }
198
- // Normalize to 0-100 scale
199
- const maxScore = vulnerabilities.length * 10; // Assume all critical
200
- return Math.min(100, Math.round((totalScore / maxScore) * 100));
201
- }
202
- /**
203
- * Get list of all registered detectors
204
- */
205
- getDetectors() {
206
- return Array.from(this.detectors.values());
207
- }
208
- /**
209
- * Get detector by ID
210
- */
211
- getDetector(id) {
212
- return this.detectors.get(id);
213
- }
214
- }
215
- //# sourceMappingURL=security-analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security-analyzer.js","sourceRoot":"","sources":["../../../src/analyzers/security/security-analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,95 +0,0 @@
1
- /**
2
- * Security Analyzer Types
3
- *
4
- * Type definitions for security vulnerability detection
5
- */
6
- /**
7
- * Severity level for security vulnerabilities
8
- */
9
- export type SecuritySeverity = 'critical' | 'high' | 'medium' | 'low' | 'info';
10
- /**
11
- * OWASP Top 10 categories
12
- */
13
- export type OWASPCategory = 'A01:2021 - Broken Access Control' | 'A02:2021 - Cryptographic Failures' | 'A03:2021 - Injection' | 'A04:2021 - Insecure Design' | 'A05:2021 - Security Misconfiguration' | 'A06:2021 - Vulnerable and Outdated Components' | 'A07:2021 - Identification and Authentication Failures' | 'A08:2021 - Software and Data Integrity Failures' | 'A09:2021 - Security Logging and Monitoring Failures' | 'A10:2021 - Server-Side Request Forgery';
14
- /**
15
- * Security vulnerability finding
16
- */
17
- export interface SecurityVulnerability {
18
- readonly id: string;
19
- readonly name: string;
20
- readonly description: string;
21
- readonly severity: SecuritySeverity;
22
- readonly owaspCategory?: OWASPCategory;
23
- readonly cweId?: string;
24
- readonly file: string;
25
- readonly line: number;
26
- readonly column?: number;
27
- readonly code: string;
28
- readonly recommendation: string;
29
- readonly references: readonly string[];
30
- }
31
- /**
32
- * Security scan result for a single file
33
- */
34
- export interface FileSecurityResult {
35
- readonly file: string;
36
- readonly vulnerabilities: readonly SecurityVulnerability[];
37
- readonly riskScore: number;
38
- readonly timestamp: Date;
39
- readonly durationMs: number;
40
- }
41
- /**
42
- * Batch security scan result
43
- */
44
- export interface BatchSecurityResult {
45
- readonly files: readonly FileSecurityResult[];
46
- readonly totalVulnerabilities: number;
47
- readonly criticalCount: number;
48
- readonly highCount: number;
49
- readonly mediumCount: number;
50
- readonly lowCount: number;
51
- readonly infoCount: number;
52
- readonly averageRiskScore: number;
53
- readonly highestRiskFiles: readonly {
54
- file: string;
55
- score: number;
56
- }[];
57
- readonly timestamp: Date;
58
- }
59
- /**
60
- * Security detector configuration
61
- */
62
- export interface SecurityDetectorConfig {
63
- readonly enabled: boolean;
64
- readonly severity?: SecuritySeverity;
65
- readonly customPatterns?: readonly string[];
66
- readonly excludePatterns?: readonly string[];
67
- }
68
- /**
69
- * Security scan options
70
- */
71
- export interface SecurityScanOptions {
72
- readonly detectors?: Record<string, SecurityDetectorConfig>;
73
- readonly includeInfo?: boolean;
74
- readonly maxFileSize?: number;
75
- }
76
- /**
77
- * Base security detector interface
78
- */
79
- export interface SecurityDetector {
80
- readonly id: string;
81
- readonly name: string;
82
- readonly description: string;
83
- readonly severity: SecuritySeverity;
84
- readonly owaspCategory?: OWASPCategory;
85
- readonly cweId?: string;
86
- readonly enabled: boolean;
87
- /**
88
- * Scan file content for vulnerabilities
89
- */
90
- scan(content: string, filePath: string): Promise<SecurityVulnerability[]>;
91
- /**
92
- * Check if detector applies to this file type
93
- */
94
- appliesTo(filePath: string): boolean;
95
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Security Analyzer Types
3
- *
4
- * Type definitions for security vulnerability detection
5
- */
6
- export {};
7
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/analyzers/security/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1,46 +0,0 @@
1
- /**
2
- * Architecture Analysis Tool
3
- *
4
- * LLM tool for architecture analysis
5
- */
6
- import type { ToolResult } from '../../types/index.js';
7
- export declare class ArchitectureTool {
8
- private analyzer;
9
- constructor();
10
- /**
11
- * Analyze project architecture
12
- */
13
- execute(args: {
14
- projectPath?: string;
15
- depth?: string;
16
- }): Promise<ToolResult>;
17
- /**
18
- * Format analysis result for display
19
- */
20
- private formatOutput;
21
- /**
22
- * Get tool definition for LLM
23
- */
24
- getToolDefinition(): {
25
- type: "function";
26
- function: {
27
- name: string;
28
- description: string;
29
- parameters: {
30
- type: string;
31
- properties: {
32
- projectPath: {
33
- type: string;
34
- description: string;
35
- };
36
- depth: {
37
- type: string;
38
- enum: string[];
39
- default: string;
40
- description: string;
41
- };
42
- };
43
- };
44
- };
45
- };
46
- }
@@ -1,124 +0,0 @@
1
- /**
2
- * Architecture Analysis Tool
3
- *
4
- * LLM tool for architecture analysis
5
- */
6
- import { ArchitectureAnalyzer } from '../../analyzers/architecture/index.js';
7
- export class ArchitectureTool {
8
- analyzer;
9
- constructor() {
10
- this.analyzer = new ArchitectureAnalyzer();
11
- }
12
- /**
13
- * Analyze project architecture
14
- */
15
- async execute(args) {
16
- try {
17
- // Use current directory if no path specified
18
- const projectPath = args.projectPath || process.cwd();
19
- // Validate depth parameter
20
- const depth = args.depth === 'deep' ? 'deep' : 'quick';
21
- // Run analysis
22
- const result = await this.analyzer.analyzeProject(projectPath, depth);
23
- // Format output
24
- const output = this.formatOutput(result);
25
- return {
26
- success: true,
27
- output,
28
- };
29
- }
30
- catch (error) {
31
- return {
32
- success: false,
33
- error: `Architecture analysis failed: ${error.message}`,
34
- };
35
- }
36
- }
37
- /**
38
- * Format analysis result for display
39
- */
40
- formatOutput(result) {
41
- const lines = [];
42
- lines.push('# Architecture Analysis\n');
43
- lines.push(`**Project**: ${result.projectPath}`);
44
- lines.push(`**Score**: ${result.architectureScore}/100`);
45
- lines.push(`**Duration**: ${result.durationMs}ms\n`);
46
- // Summary
47
- lines.push('## Summary\n');
48
- lines.push(result.summary);
49
- lines.push('');
50
- // Detected Patterns
51
- if (result.detectedPatterns.length > 0) {
52
- lines.push('## Detected Patterns\n');
53
- for (const pattern of result.detectedPatterns) {
54
- lines.push(`### ${pattern.name}`);
55
- lines.push(`- **Category**: ${pattern.category}`);
56
- lines.push(`- **Confidence**: ${Math.round(pattern.confidence * 100)}%`);
57
- lines.push(`- **Description**: ${pattern.description}`);
58
- lines.push(`- **Locations**: ${pattern.locations.join(', ')}`);
59
- lines.push('');
60
- }
61
- }
62
- // Anti-Patterns
63
- if (result.antiPatterns.length > 0) {
64
- lines.push('## Anti-Patterns Found\n');
65
- for (const antiPattern of result.antiPatterns) {
66
- lines.push(`### ⚠️ ${antiPattern.name} (${antiPattern.severity})`);
67
- lines.push(`- **Description**: ${antiPattern.description}`);
68
- lines.push(`- **Impact**: ${antiPattern.impact}`);
69
- lines.push(`- **Suggestion**: ${antiPattern.suggestion}`);
70
- lines.push(`- **Locations**: ${antiPattern.locations.join(', ')}`);
71
- lines.push('');
72
- }
73
- }
74
- // Recommendations
75
- if (result.recommendations.length > 0) {
76
- lines.push('## Recommendations\n');
77
- for (const rec of result.recommendations) {
78
- lines.push(`### ${rec.title} (Priority: ${rec.priority})`);
79
- lines.push(`**Description**: ${rec.description}\n`);
80
- lines.push(`**Rationale**: ${rec.rationale}\n`);
81
- lines.push(`**Estimated Effort**: ${rec.estimatedEffort}\n`);
82
- if (rec.benefits.length > 0) {
83
- lines.push('**Benefits**:');
84
- for (const benefit of rec.benefits) {
85
- lines.push(`- ${benefit}`);
86
- }
87
- lines.push('');
88
- }
89
- if (rec.relatedPatterns.length > 0) {
90
- lines.push(`**Related Patterns**: ${rec.relatedPatterns.join(', ')}\n`);
91
- }
92
- }
93
- }
94
- return lines.join('\n');
95
- }
96
- /**
97
- * Get tool definition for LLM
98
- */
99
- getToolDefinition() {
100
- return {
101
- type: 'function',
102
- function: {
103
- name: 'analyze_architecture',
104
- description: 'Analyze project architecture to detect patterns, anti-patterns, and generate improvement recommendations',
105
- parameters: {
106
- type: 'object',
107
- properties: {
108
- projectPath: {
109
- type: 'string',
110
- description: 'Path to project root directory (default: current directory)',
111
- },
112
- depth: {
113
- type: 'string',
114
- enum: ['quick', 'deep'],
115
- default: 'quick',
116
- description: 'Analysis depth: "quick" for pattern detection only, "deep" includes anti-pattern detection',
117
- },
118
- },
119
- },
120
- },
121
- };
122
- }
123
- }
124
- //# sourceMappingURL=architecture-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"architecture-tool.js","sourceRoot":"","sources":["../../../src/tools/analysis-tools/architecture-tool.ts"],"names":[],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- /**
2
- * Validation Tool
3
- *
4
- * LLM tool for best practice validation
5
- */
6
- import type { ToolResult } from '../../types/index.js';
7
- export declare class ValidationTool {
8
- private validator;
9
- constructor();
10
- /**
11
- * Validate files
12
- */
13
- execute(args: {
14
- path?: string;
15
- pattern?: string;
16
- rules?: Record<string, {
17
- enabled: boolean;
18
- }>;
19
- }): Promise<ToolResult>;
20
- /**
21
- * Format validation result for display
22
- */
23
- private formatOutput;
24
- /**
25
- * Get tool definition for LLM
26
- */
27
- getToolDefinition(): {
28
- type: "function";
29
- function: {
30
- name: string;
31
- description: string;
32
- parameters: {
33
- type: string;
34
- properties: {
35
- path: {
36
- type: string;
37
- description: string;
38
- };
39
- pattern: {
40
- type: string;
41
- description: string;
42
- };
43
- rules: {
44
- type: string;
45
- description: string;
46
- };
47
- };
48
- };
49
- };
50
- };
51
- }