circle-ir-ai 1.1.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.
Files changed (420) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/LICENSE +15 -0
  3. package/README.md +336 -0
  4. package/dist/action-queue/aggregator.d.ts +40 -0
  5. package/dist/action-queue/aggregator.d.ts.map +1 -0
  6. package/dist/action-queue/aggregator.js +375 -0
  7. package/dist/action-queue/aggregator.js.map +1 -0
  8. package/dist/action-queue/index.d.ts +14 -0
  9. package/dist/action-queue/index.d.ts.map +1 -0
  10. package/dist/action-queue/index.js +17 -0
  11. package/dist/action-queue/index.js.map +1 -0
  12. package/dist/action-queue/queue.d.ts +74 -0
  13. package/dist/action-queue/queue.d.ts.map +1 -0
  14. package/dist/action-queue/queue.js +433 -0
  15. package/dist/action-queue/queue.js.map +1 -0
  16. package/dist/action-queue/types.d.ts +162 -0
  17. package/dist/action-queue/types.d.ts.map +1 -0
  18. package/dist/action-queue/types.js +44 -0
  19. package/dist/action-queue/types.js.map +1 -0
  20. package/dist/agents/enrichment-agent.d.ts +16 -0
  21. package/dist/agents/enrichment-agent.d.ts.map +1 -0
  22. package/dist/agents/enrichment-agent.js +102 -0
  23. package/dist/agents/enrichment-agent.js.map +1 -0
  24. package/dist/agents/index.d.ts +12 -0
  25. package/dist/agents/index.d.ts.map +1 -0
  26. package/dist/agents/index.js +15 -0
  27. package/dist/agents/index.js.map +1 -0
  28. package/dist/agents/mastra/agents.d.ts +373 -0
  29. package/dist/agents/mastra/agents.d.ts.map +1 -0
  30. package/dist/agents/mastra/agents.js +347 -0
  31. package/dist/agents/mastra/agents.js.map +1 -0
  32. package/dist/agents/mastra/index.d.ts +12 -0
  33. package/dist/agents/mastra/index.d.ts.map +1 -0
  34. package/dist/agents/mastra/index.js +17 -0
  35. package/dist/agents/mastra/index.js.map +1 -0
  36. package/dist/agents/mastra/instance.d.ts +383 -0
  37. package/dist/agents/mastra/instance.d.ts.map +1 -0
  38. package/dist/agents/mastra/instance.js +37 -0
  39. package/dist/agents/mastra/instance.js.map +1 -0
  40. package/dist/agents/mastra/steps.d.ts +300 -0
  41. package/dist/agents/mastra/steps.d.ts.map +1 -0
  42. package/dist/agents/mastra/steps.js +468 -0
  43. package/dist/agents/mastra/steps.js.map +1 -0
  44. package/dist/agents/mastra/swarm.d.ts +106 -0
  45. package/dist/agents/mastra/swarm.d.ts.map +1 -0
  46. package/dist/agents/mastra/swarm.js +501 -0
  47. package/dist/agents/mastra/swarm.js.map +1 -0
  48. package/dist/agents/mastra/workflow.d.ts +81 -0
  49. package/dist/agents/mastra/workflow.d.ts.map +1 -0
  50. package/dist/agents/mastra/workflow.js +460 -0
  51. package/dist/agents/mastra/workflow.js.map +1 -0
  52. package/dist/agents/multi/agents/security.d.ts +29 -0
  53. package/dist/agents/multi/agents/security.d.ts.map +1 -0
  54. package/dist/agents/multi/agents/security.js +830 -0
  55. package/dist/agents/multi/agents/security.js.map +1 -0
  56. package/dist/agents/multi/extractor.d.ts +21 -0
  57. package/dist/agents/multi/extractor.d.ts.map +1 -0
  58. package/dist/agents/multi/extractor.js +483 -0
  59. package/dist/agents/multi/extractor.js.map +1 -0
  60. package/dist/agents/multi/index.d.ts +32 -0
  61. package/dist/agents/multi/index.d.ts.map +1 -0
  62. package/dist/agents/multi/index.js +34 -0
  63. package/dist/agents/multi/index.js.map +1 -0
  64. package/dist/agents/multi/runner.d.ts +79 -0
  65. package/dist/agents/multi/runner.d.ts.map +1 -0
  66. package/dist/agents/multi/runner.js +323 -0
  67. package/dist/agents/multi/runner.js.map +1 -0
  68. package/dist/agents/security-agent.d.ts +16 -0
  69. package/dist/agents/security-agent.d.ts.map +1 -0
  70. package/dist/agents/security-agent.js +299 -0
  71. package/dist/agents/security-agent.js.map +1 -0
  72. package/dist/agents/types.d.ts +373 -0
  73. package/dist/agents/types.d.ts.map +1 -0
  74. package/dist/agents/types.js +14 -0
  75. package/dist/agents/types.js.map +1 -0
  76. package/dist/agents/verification-agent.d.ts +23 -0
  77. package/dist/agents/verification-agent.d.ts.map +1 -0
  78. package/dist/agents/verification-agent.js +217 -0
  79. package/dist/agents/verification-agent.js.map +1 -0
  80. package/dist/agents/workflow.d.ts +30 -0
  81. package/dist/agents/workflow.d.ts.map +1 -0
  82. package/dist/agents/workflow.js +79 -0
  83. package/dist/agents/workflow.js.map +1 -0
  84. package/dist/analysis/enriched.d.ts +16 -0
  85. package/dist/analysis/enriched.d.ts.map +1 -0
  86. package/dist/analysis/enriched.js +297 -0
  87. package/dist/analysis/enriched.js.map +1 -0
  88. package/dist/analysis/llm-correlated-predicates.d.ts +80 -0
  89. package/dist/analysis/llm-correlated-predicates.d.ts.map +1 -0
  90. package/dist/analysis/llm-correlated-predicates.js +255 -0
  91. package/dist/analysis/llm-correlated-predicates.js.map +1 -0
  92. package/dist/analysis/llm-cross-file-taint.d.ts +86 -0
  93. package/dist/analysis/llm-cross-file-taint.d.ts.map +1 -0
  94. package/dist/analysis/llm-cross-file-taint.js +264 -0
  95. package/dist/analysis/llm-cross-file-taint.js.map +1 -0
  96. package/dist/analysis/pattern-discovery.d.ts +79 -0
  97. package/dist/analysis/pattern-discovery.d.ts.map +1 -0
  98. package/dist/analysis/pattern-discovery.js +447 -0
  99. package/dist/analysis/pattern-discovery.js.map +1 -0
  100. package/dist/cache/file-cache.d.ts +89 -0
  101. package/dist/cache/file-cache.d.ts.map +1 -0
  102. package/dist/cache/file-cache.js +208 -0
  103. package/dist/cache/file-cache.js.map +1 -0
  104. package/dist/cache/index.d.ts +6 -0
  105. package/dist/cache/index.d.ts.map +1 -0
  106. package/dist/cache/index.js +5 -0
  107. package/dist/cache/index.js.map +1 -0
  108. package/dist/cli/args.d.ts +52 -0
  109. package/dist/cli/args.d.ts.map +1 -0
  110. package/dist/cli/args.js +422 -0
  111. package/dist/cli/args.js.map +1 -0
  112. package/dist/cli/colors.d.ts +31 -0
  113. package/dist/cli/colors.d.ts.map +1 -0
  114. package/dist/cli/colors.js +80 -0
  115. package/dist/cli/colors.js.map +1 -0
  116. package/dist/cli/commands/analyze-skill.d.ts +33 -0
  117. package/dist/cli/commands/analyze-skill.d.ts.map +1 -0
  118. package/dist/cli/commands/analyze-skill.js +217 -0
  119. package/dist/cli/commands/analyze-skill.js.map +1 -0
  120. package/dist/cli/commands/analyze.d.ts +18 -0
  121. package/dist/cli/commands/analyze.d.ts.map +1 -0
  122. package/dist/cli/commands/analyze.js +30 -0
  123. package/dist/cli/commands/analyze.js.map +1 -0
  124. package/dist/cli/commands/benchmark-runner.d.ts +42 -0
  125. package/dist/cli/commands/benchmark-runner.d.ts.map +1 -0
  126. package/dist/cli/commands/benchmark-runner.js +18 -0
  127. package/dist/cli/commands/benchmark-runner.js.map +1 -0
  128. package/dist/cli/commands/benchmark.d.ts +11 -0
  129. package/dist/cli/commands/benchmark.d.ts.map +1 -0
  130. package/dist/cli/commands/benchmark.js +90 -0
  131. package/dist/cli/commands/benchmark.js.map +1 -0
  132. package/dist/cli/commands/dead-code.d.ts +11 -0
  133. package/dist/cli/commands/dead-code.d.ts.map +1 -0
  134. package/dist/cli/commands/dead-code.js +65 -0
  135. package/dist/cli/commands/dead-code.js.map +1 -0
  136. package/dist/cli/commands/generate-spec.d.ts +11 -0
  137. package/dist/cli/commands/generate-spec.d.ts.map +1 -0
  138. package/dist/cli/commands/generate-spec.js +67 -0
  139. package/dist/cli/commands/generate-spec.js.map +1 -0
  140. package/dist/cli/commands/health.d.ts +11 -0
  141. package/dist/cli/commands/health.d.ts.map +1 -0
  142. package/dist/cli/commands/health.js +67 -0
  143. package/dist/cli/commands/health.js.map +1 -0
  144. package/dist/cli/commands/project.d.ts +21 -0
  145. package/dist/cli/commands/project.d.ts.map +1 -0
  146. package/dist/cli/commands/project.js +92 -0
  147. package/dist/cli/commands/project.js.map +1 -0
  148. package/dist/cli/commands/scan.d.ts +11 -0
  149. package/dist/cli/commands/scan.d.ts.map +1 -0
  150. package/dist/cli/commands/scan.js +68 -0
  151. package/dist/cli/commands/scan.js.map +1 -0
  152. package/dist/cli/commands/secrets.d.ts +11 -0
  153. package/dist/cli/commands/secrets.d.ts.map +1 -0
  154. package/dist/cli/commands/secrets.js +71 -0
  155. package/dist/cli/commands/secrets.js.map +1 -0
  156. package/dist/cli/commands/swarm.d.ts +20 -0
  157. package/dist/cli/commands/swarm.d.ts.map +1 -0
  158. package/dist/cli/commands/swarm.js +174 -0
  159. package/dist/cli/commands/swarm.js.map +1 -0
  160. package/dist/cli/config.d.ts +103 -0
  161. package/dist/cli/config.d.ts.map +1 -0
  162. package/dist/cli/config.js +307 -0
  163. package/dist/cli/config.js.map +1 -0
  164. package/dist/cli/discovery.d.ts +31 -0
  165. package/dist/cli/discovery.d.ts.map +1 -0
  166. package/dist/cli/discovery.js +212 -0
  167. package/dist/cli/discovery.js.map +1 -0
  168. package/dist/cli/formatters/index.d.ts +15 -0
  169. package/dist/cli/formatters/index.d.ts.map +1 -0
  170. package/dist/cli/formatters/index.js +51 -0
  171. package/dist/cli/formatters/index.js.map +1 -0
  172. package/dist/cli/formatters/json.d.ts +11 -0
  173. package/dist/cli/formatters/json.d.ts.map +1 -0
  174. package/dist/cli/formatters/json.js +12 -0
  175. package/dist/cli/formatters/json.js.map +1 -0
  176. package/dist/cli/formatters/project-json.d.ts +11 -0
  177. package/dist/cli/formatters/project-json.d.ts.map +1 -0
  178. package/dist/cli/formatters/project-json.js +12 -0
  179. package/dist/cli/formatters/project-json.js.map +1 -0
  180. package/dist/cli/formatters/project-sarif.d.ts +11 -0
  181. package/dist/cli/formatters/project-sarif.d.ts.map +1 -0
  182. package/dist/cli/formatters/project-sarif.js +127 -0
  183. package/dist/cli/formatters/project-sarif.js.map +1 -0
  184. package/dist/cli/formatters/project-summary.d.ts +11 -0
  185. package/dist/cli/formatters/project-summary.d.ts.map +1 -0
  186. package/dist/cli/formatters/project-summary.js +202 -0
  187. package/dist/cli/formatters/project-summary.js.map +1 -0
  188. package/dist/cli/formatters/sarif-shared.d.ts +101 -0
  189. package/dist/cli/formatters/sarif-shared.d.ts.map +1 -0
  190. package/dist/cli/formatters/sarif-shared.js +57 -0
  191. package/dist/cli/formatters/sarif-shared.js.map +1 -0
  192. package/dist/cli/formatters/sarif.d.ts +12 -0
  193. package/dist/cli/formatters/sarif.d.ts.map +1 -0
  194. package/dist/cli/formatters/sarif.js +92 -0
  195. package/dist/cli/formatters/sarif.js.map +1 -0
  196. package/dist/cli/formatters/summary.d.ts +11 -0
  197. package/dist/cli/formatters/summary.d.ts.map +1 -0
  198. package/dist/cli/formatters/summary.js +240 -0
  199. package/dist/cli/formatters/summary.js.map +1 -0
  200. package/dist/cli/formatters/two-phase-summary.d.ts +11 -0
  201. package/dist/cli/formatters/two-phase-summary.d.ts.map +1 -0
  202. package/dist/cli/formatters/two-phase-summary.js +188 -0
  203. package/dist/cli/formatters/two-phase-summary.js.map +1 -0
  204. package/dist/cli/index.d.ts +15 -0
  205. package/dist/cli/index.d.ts.map +1 -0
  206. package/dist/cli/index.js +555 -0
  207. package/dist/cli/index.js.map +1 -0
  208. package/dist/components/clustering.d.ts +60 -0
  209. package/dist/components/clustering.d.ts.map +1 -0
  210. package/dist/components/clustering.js +129 -0
  211. package/dist/components/clustering.js.map +1 -0
  212. package/dist/components/enrichment.d.ts +45 -0
  213. package/dist/components/enrichment.d.ts.map +1 -0
  214. package/dist/components/enrichment.js +193 -0
  215. package/dist/components/enrichment.js.map +1 -0
  216. package/dist/components/index.d.ts +29 -0
  217. package/dist/components/index.d.ts.map +1 -0
  218. package/dist/components/index.js +56 -0
  219. package/dist/components/index.js.map +1 -0
  220. package/dist/dead-code/detector.d.ts +200 -0
  221. package/dist/dead-code/detector.d.ts.map +1 -0
  222. package/dist/dead-code/detector.js +1003 -0
  223. package/dist/dead-code/detector.js.map +1 -0
  224. package/dist/dead-code/index.d.ts +7 -0
  225. package/dist/dead-code/index.d.ts.map +1 -0
  226. package/dist/dead-code/index.js +7 -0
  227. package/dist/dead-code/index.js.map +1 -0
  228. package/dist/extractors/index.d.ts +15 -0
  229. package/dist/extractors/index.d.ts.map +1 -0
  230. package/dist/extractors/index.js +14 -0
  231. package/dist/extractors/index.js.map +1 -0
  232. package/dist/extractors/natural-language.d.ts +46 -0
  233. package/dist/extractors/natural-language.d.ts.map +1 -0
  234. package/dist/extractors/natural-language.js +228 -0
  235. package/dist/extractors/natural-language.js.map +1 -0
  236. package/dist/extractors/tree-sitter.d.ts +33 -0
  237. package/dist/extractors/tree-sitter.d.ts.map +1 -0
  238. package/dist/extractors/tree-sitter.js +69 -0
  239. package/dist/extractors/tree-sitter.js.map +1 -0
  240. package/dist/extractors/types.d.ts +62 -0
  241. package/dist/extractors/types.d.ts.map +1 -0
  242. package/dist/extractors/types.js +54 -0
  243. package/dist/extractors/types.js.map +1 -0
  244. package/dist/health-score/calculator.d.ts +123 -0
  245. package/dist/health-score/calculator.d.ts.map +1 -0
  246. package/dist/health-score/calculator.js +444 -0
  247. package/dist/health-score/calculator.js.map +1 -0
  248. package/dist/health-score/index.d.ts +12 -0
  249. package/dist/health-score/index.d.ts.map +1 -0
  250. package/dist/health-score/index.js +14 -0
  251. package/dist/health-score/index.js.map +1 -0
  252. package/dist/health-score/metrics.d.ts +142 -0
  253. package/dist/health-score/metrics.d.ts.map +1 -0
  254. package/dist/health-score/metrics.js +332 -0
  255. package/dist/health-score/metrics.js.map +1 -0
  256. package/dist/index.d.ts +26 -0
  257. package/dist/index.d.ts.map +1 -0
  258. package/dist/index.js +43 -0
  259. package/dist/index.js.map +1 -0
  260. package/dist/llm/ax-client.d.ts +477 -0
  261. package/dist/llm/ax-client.d.ts.map +1 -0
  262. package/dist/llm/ax-client.js +1641 -0
  263. package/dist/llm/ax-client.js.map +1 -0
  264. package/dist/llm/config.d.ts +58 -0
  265. package/dist/llm/config.d.ts.map +1 -0
  266. package/dist/llm/config.js +97 -0
  267. package/dist/llm/config.js.map +1 -0
  268. package/dist/llm/discovery.d.ts +123 -0
  269. package/dist/llm/discovery.d.ts.map +1 -0
  270. package/dist/llm/discovery.js +505 -0
  271. package/dist/llm/discovery.js.map +1 -0
  272. package/dist/llm/enrichment.d.ts +108 -0
  273. package/dist/llm/enrichment.d.ts.map +1 -0
  274. package/dist/llm/enrichment.js +312 -0
  275. package/dist/llm/enrichment.js.map +1 -0
  276. package/dist/llm/index.d.ts +13 -0
  277. package/dist/llm/index.d.ts.map +1 -0
  278. package/dist/llm/index.js +22 -0
  279. package/dist/llm/index.js.map +1 -0
  280. package/dist/llm/language-context.d.ts +64 -0
  281. package/dist/llm/language-context.d.ts.map +1 -0
  282. package/dist/llm/language-context.js +492 -0
  283. package/dist/llm/language-context.js.map +1 -0
  284. package/dist/llm/pattern-verification.d.ts +39 -0
  285. package/dist/llm/pattern-verification.d.ts.map +1 -0
  286. package/dist/llm/pattern-verification.js +127 -0
  287. package/dist/llm/pattern-verification.js.map +1 -0
  288. package/dist/llm/prompt-security.d.ts +120 -0
  289. package/dist/llm/prompt-security.d.ts.map +1 -0
  290. package/dist/llm/prompt-security.js +301 -0
  291. package/dist/llm/prompt-security.js.map +1 -0
  292. package/dist/llm/prompts/index.d.ts +31 -0
  293. package/dist/llm/prompts/index.d.ts.map +1 -0
  294. package/dist/llm/prompts/index.js +92 -0
  295. package/dist/llm/prompts/index.js.map +1 -0
  296. package/dist/llm/prompts/rust.d.ts +30 -0
  297. package/dist/llm/prompts/rust.d.ts.map +1 -0
  298. package/dist/llm/prompts/rust.js +121 -0
  299. package/dist/llm/prompts/rust.js.map +1 -0
  300. package/dist/llm/schemas.d.ts +892 -0
  301. package/dist/llm/schemas.d.ts.map +1 -0
  302. package/dist/llm/schemas.js +258 -0
  303. package/dist/llm/schemas.js.map +1 -0
  304. package/dist/llm/verification.d.ts +127 -0
  305. package/dist/llm/verification.d.ts.map +1 -0
  306. package/dist/llm/verification.js +394 -0
  307. package/dist/llm/verification.js.map +1 -0
  308. package/dist/project/analyzer.d.ts +30 -0
  309. package/dist/project/analyzer.d.ts.map +1 -0
  310. package/dist/project/analyzer.js +358 -0
  311. package/dist/project/analyzer.js.map +1 -0
  312. package/dist/project/call-graph.d.ts +22 -0
  313. package/dist/project/call-graph.d.ts.map +1 -0
  314. package/dist/project/call-graph.js +246 -0
  315. package/dist/project/call-graph.js.map +1 -0
  316. package/dist/project/index.d.ts +18 -0
  317. package/dist/project/index.d.ts.map +1 -0
  318. package/dist/project/index.js +20 -0
  319. package/dist/project/index.js.map +1 -0
  320. package/dist/project/taint-paths.d.ts +22 -0
  321. package/dist/project/taint-paths.d.ts.map +1 -0
  322. package/dist/project/taint-paths.js +265 -0
  323. package/dist/project/taint-paths.js.map +1 -0
  324. package/dist/project/two-phase-analyzer.d.ts +143 -0
  325. package/dist/project/two-phase-analyzer.d.ts.map +1 -0
  326. package/dist/project/two-phase-analyzer.js +646 -0
  327. package/dist/project/two-phase-analyzer.js.map +1 -0
  328. package/dist/project/type-hierarchy.d.ts +28 -0
  329. package/dist/project/type-hierarchy.d.ts.map +1 -0
  330. package/dist/project/type-hierarchy.js +218 -0
  331. package/dist/project/type-hierarchy.js.map +1 -0
  332. package/dist/secret-scan/index.d.ts +12 -0
  333. package/dist/secret-scan/index.d.ts.map +1 -0
  334. package/dist/secret-scan/index.js +14 -0
  335. package/dist/secret-scan/index.js.map +1 -0
  336. package/dist/secret-scan/patterns.d.ts +38 -0
  337. package/dist/secret-scan/patterns.d.ts.map +1 -0
  338. package/dist/secret-scan/patterns.js +473 -0
  339. package/dist/secret-scan/patterns.js.map +1 -0
  340. package/dist/secret-scan/scanner.d.ts +162 -0
  341. package/dist/secret-scan/scanner.d.ts.map +1 -0
  342. package/dist/secret-scan/scanner.js +511 -0
  343. package/dist/secret-scan/scanner.js.map +1 -0
  344. package/dist/security-scan/index.d.ts +12 -0
  345. package/dist/security-scan/index.d.ts.map +1 -0
  346. package/dist/security-scan/index.js +15 -0
  347. package/dist/security-scan/index.js.map +1 -0
  348. package/dist/security-scan/owasp-mapping.d.ts +29 -0
  349. package/dist/security-scan/owasp-mapping.d.ts.map +1 -0
  350. package/dist/security-scan/owasp-mapping.js +246 -0
  351. package/dist/security-scan/owasp-mapping.js.map +1 -0
  352. package/dist/security-scan/scanner.d.ts +204 -0
  353. package/dist/security-scan/scanner.d.ts.map +1 -0
  354. package/dist/security-scan/scanner.js +693 -0
  355. package/dist/security-scan/scanner.js.map +1 -0
  356. package/dist/security-scan/trend-tracker.d.ts +150 -0
  357. package/dist/security-scan/trend-tracker.d.ts.map +1 -0
  358. package/dist/security-scan/trend-tracker.js +299 -0
  359. package/dist/security-scan/trend-tracker.js.map +1 -0
  360. package/dist/skills/bundle-loader.d.ts +26 -0
  361. package/dist/skills/bundle-loader.d.ts.map +1 -0
  362. package/dist/skills/bundle-loader.js +284 -0
  363. package/dist/skills/bundle-loader.js.map +1 -0
  364. package/dist/skills/capability-mismatch.d.ts +21 -0
  365. package/dist/skills/capability-mismatch.d.ts.map +1 -0
  366. package/dist/skills/capability-mismatch.js +188 -0
  367. package/dist/skills/capability-mismatch.js.map +1 -0
  368. package/dist/skills/index.d.ts +10 -0
  369. package/dist/skills/index.d.ts.map +1 -0
  370. package/dist/skills/index.js +9 -0
  371. package/dist/skills/index.js.map +1 -0
  372. package/dist/skills/skill-analyzer.d.ts +16 -0
  373. package/dist/skills/skill-analyzer.d.ts.map +1 -0
  374. package/dist/skills/skill-analyzer.js +361 -0
  375. package/dist/skills/skill-analyzer.js.map +1 -0
  376. package/dist/skills/types.d.ts +195 -0
  377. package/dist/skills/types.d.ts.map +1 -0
  378. package/dist/skills/types.js +7 -0
  379. package/dist/skills/types.js.map +1 -0
  380. package/dist/specifica/conflict-resolver.d.ts +23 -0
  381. package/dist/specifica/conflict-resolver.d.ts.map +1 -0
  382. package/dist/specifica/conflict-resolver.js +129 -0
  383. package/dist/specifica/conflict-resolver.js.map +1 -0
  384. package/dist/specifica/evidence-aggregator.d.ts +33 -0
  385. package/dist/specifica/evidence-aggregator.d.ts.map +1 -0
  386. package/dist/specifica/evidence-aggregator.js +236 -0
  387. package/dist/specifica/evidence-aggregator.js.map +1 -0
  388. package/dist/specifica/evidence-extractor.d.ts +13 -0
  389. package/dist/specifica/evidence-extractor.d.ts.map +1 -0
  390. package/dist/specifica/evidence-extractor.js +431 -0
  391. package/dist/specifica/evidence-extractor.js.map +1 -0
  392. package/dist/specifica/feature-clustering.d.ts +19 -0
  393. package/dist/specifica/feature-clustering.d.ts.map +1 -0
  394. package/dist/specifica/feature-clustering.js +231 -0
  395. package/dist/specifica/feature-clustering.js.map +1 -0
  396. package/dist/specifica/generator.d.ts +16 -0
  397. package/dist/specifica/generator.d.ts.map +1 -0
  398. package/dist/specifica/generator.js +277 -0
  399. package/dist/specifica/generator.js.map +1 -0
  400. package/dist/specifica/index.d.ts +15 -0
  401. package/dist/specifica/index.d.ts.map +1 -0
  402. package/dist/specifica/index.js +18 -0
  403. package/dist/specifica/index.js.map +1 -0
  404. package/dist/specifica/prompts.d.ts +21 -0
  405. package/dist/specifica/prompts.d.ts.map +1 -0
  406. package/dist/specifica/prompts.js +196 -0
  407. package/dist/specifica/prompts.js.map +1 -0
  408. package/dist/specifica/spec-generator.d.ts +22 -0
  409. package/dist/specifica/spec-generator.d.ts.map +1 -0
  410. package/dist/specifica/spec-generator.js +229 -0
  411. package/dist/specifica/spec-generator.js.map +1 -0
  412. package/dist/specifica/types.d.ts +213 -0
  413. package/dist/specifica/types.d.ts.map +1 -0
  414. package/dist/specifica/types.js +7 -0
  415. package/dist/specifica/types.js.map +1 -0
  416. package/dist/utils/logger.d.ts +17 -0
  417. package/dist/utils/logger.d.ts.map +1 -0
  418. package/dist/utils/logger.js +51 -0
  419. package/dist/utils/logger.js.map +1 -0
  420. package/package.json +99 -0
@@ -0,0 +1,246 @@
1
+ /**
2
+ * OWASP Top 10 Mapping
3
+ *
4
+ * Maps CWE IDs to OWASP Top 10 2021 categories.
5
+ * Reference: https://owasp.org/Top10/
6
+ */
7
+ /**
8
+ * CWE to OWASP Top 10 2021 mapping.
9
+ * Based on official OWASP mapping: https://owasp.org/Top10/A00_2021_How_to_use_the_OWASP_Top_10_as_a_Standard/
10
+ */
11
+ const CWE_TO_OWASP = {
12
+ // A01:2021-Broken Access Control
13
+ 'CWE-022': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Path Traversal' },
14
+ 'CWE-023': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Relative Path Traversal' },
15
+ 'CWE-035': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Path Traversal' },
16
+ 'CWE-200': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Exposure of Sensitive Information' },
17
+ 'CWE-201': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Insertion of Sensitive Information Into Sent Data' },
18
+ 'CWE-219': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Storage of File with Sensitive Data Under Web Root' },
19
+ 'CWE-264': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Permissions, Privileges, and Access Controls' },
20
+ 'CWE-275': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Permission Issues' },
21
+ 'CWE-276': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Incorrect Default Permissions' },
22
+ 'CWE-284': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Improper Access Control' },
23
+ 'CWE-285': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Improper Authorization' },
24
+ 'CWE-352': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Cross-Site Request Forgery (CSRF)' },
25
+ 'CWE-359': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Exposure of Private Personal Information' },
26
+ 'CWE-425': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Direct Request' },
27
+ 'CWE-548': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Exposure of Information Through Directory Listing' },
28
+ 'CWE-552': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Files or Directories Accessible to External Parties' },
29
+ 'CWE-566': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Authorization Bypass Through User-Controlled SQL Primary Key' },
30
+ 'CWE-601': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'URL Redirection to Untrusted Site' },
31
+ 'CWE-639': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Authorization Bypass Through User-Controlled Key' },
32
+ 'CWE-651': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Exposure of WSDL File Containing Sensitive Information' },
33
+ 'CWE-668': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Exposure of Resource to Wrong Sphere' },
34
+ 'CWE-706': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Use of Incorrectly-Resolved Name or Reference' },
35
+ 'CWE-862': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Missing Authorization' },
36
+ 'CWE-863': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Incorrect Authorization' },
37
+ 'CWE-913': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Improper Control of Dynamically-Managed Code Resources' },
38
+ 'CWE-922': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Insecure Storage of Sensitive Information' },
39
+ 'CWE-1275': { category: 'A01:2021-Broken Access Control', rank: 1, description: 'Sensitive Cookie with Improper SameSite Attribute' },
40
+ // A02:2021-Cryptographic Failures
41
+ 'CWE-261': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Weak Encoding for Password' },
42
+ 'CWE-296': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Improper Following of Chain of Trust for Certificate Validation' },
43
+ 'CWE-310': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Cryptographic Issues' },
44
+ 'CWE-319': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Cleartext Transmission of Sensitive Information' },
45
+ 'CWE-321': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Use of Hard-coded Cryptographic Key' },
46
+ 'CWE-322': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Key Exchange without Entity Authentication' },
47
+ 'CWE-323': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Reusing a Nonce, Key Pair in Encryption' },
48
+ 'CWE-324': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Use of a Key Past its Expiration Date' },
49
+ 'CWE-325': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Missing Cryptographic Step' },
50
+ 'CWE-326': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Inadequate Encryption Strength' },
51
+ 'CWE-327': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Use of Broken/Risky Cryptographic Algorithm' },
52
+ 'CWE-328': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Reversible One-Way Hash' },
53
+ 'CWE-329': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Not Using an Unpredictable IV with CBC Mode' },
54
+ 'CWE-330': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Use of Insufficiently Random Values' },
55
+ 'CWE-331': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Insufficient Entropy' },
56
+ 'CWE-335': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Incorrect Usage of Seeds in Pseudo-Random Number Generator' },
57
+ 'CWE-336': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Same Seed in Pseudo-Random Number Generator' },
58
+ 'CWE-338': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Use of Cryptographically Weak PRNG' },
59
+ 'CWE-340': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Generation of Predictable Numbers or Identifiers' },
60
+ 'CWE-347': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Improper Verification of Cryptographic Signature' },
61
+ 'CWE-523': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Unprotected Transport of Credentials' },
62
+ 'CWE-757': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Selection of Less-Secure Algorithm During Negotiation' },
63
+ 'CWE-759': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Use of a One-Way Hash without a Salt' },
64
+ 'CWE-760': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Use of a One-Way Hash with a Predictable Salt' },
65
+ 'CWE-780': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Use of RSA Algorithm without OAEP' },
66
+ 'CWE-916': { category: 'A02:2021-Cryptographic Failures', rank: 2, description: 'Use of Password Hash With Insufficient Computational Effort' },
67
+ // A03:2021-Injection
68
+ 'CWE-020': { category: 'A03:2021-Injection', rank: 3, description: 'Improper Input Validation' },
69
+ 'CWE-074': { category: 'A03:2021-Injection', rank: 3, description: 'Improper Neutralization of Special Elements in Output Used by a Downstream Component' },
70
+ 'CWE-075': { category: 'A03:2021-Injection', rank: 3, description: 'Failure to Sanitize Special Elements into a Different Plane' },
71
+ 'CWE-077': { category: 'A03:2021-Injection', rank: 3, description: 'Command Injection' },
72
+ 'CWE-078': { category: 'A03:2021-Injection', rank: 3, description: 'OS Command Injection' },
73
+ 'CWE-079': { category: 'A03:2021-Injection', rank: 3, description: 'Cross-site Scripting (XSS)' },
74
+ 'CWE-080': { category: 'A03:2021-Injection', rank: 3, description: 'Improper Neutralization of Script-Related HTML Tags' },
75
+ 'CWE-083': { category: 'A03:2021-Injection', rank: 3, description: 'Improper Neutralization of Script in Attributes' },
76
+ 'CWE-087': { category: 'A03:2021-Injection', rank: 3, description: 'Improper Neutralization of Alternate XSS Syntax' },
77
+ 'CWE-088': { category: 'A03:2021-Injection', rank: 3, description: 'Improper Neutralization of Argument Delimiters' },
78
+ 'CWE-089': { category: 'A03:2021-Injection', rank: 3, description: 'SQL Injection' },
79
+ 'CWE-090': { category: 'A03:2021-Injection', rank: 3, description: 'LDAP Injection' },
80
+ 'CWE-091': { category: 'A03:2021-Injection', rank: 3, description: 'XML Injection' },
81
+ 'CWE-093': { category: 'A03:2021-Injection', rank: 3, description: 'Improper Neutralization of CRLF Sequences' },
82
+ 'CWE-094': { category: 'A03:2021-Injection', rank: 3, description: 'Code Injection' },
83
+ 'CWE-095': { category: 'A03:2021-Injection', rank: 3, description: 'Eval Injection' },
84
+ 'CWE-096': { category: 'A03:2021-Injection', rank: 3, description: 'Improper Neutralization of Directives in Statically Saved Code' },
85
+ 'CWE-097': { category: 'A03:2021-Injection', rank: 3, description: 'Improper Neutralization of Server-Side Includes' },
86
+ 'CWE-098': { category: 'A03:2021-Injection', rank: 3, description: 'PHP Remote File Inclusion' },
87
+ 'CWE-099': { category: 'A03:2021-Injection', rank: 3, description: 'Resource Injection' },
88
+ 'CWE-113': { category: 'A03:2021-Injection', rank: 3, description: 'HTTP Response Splitting' },
89
+ 'CWE-116': { category: 'A03:2021-Injection', rank: 3, description: 'Improper Encoding or Escaping of Output' },
90
+ 'CWE-138': { category: 'A03:2021-Injection', rank: 3, description: 'Improper Neutralization of Special Elements' },
91
+ 'CWE-564': { category: 'A03:2021-Injection', rank: 3, description: 'SQL Injection: Hibernate' },
92
+ 'CWE-643': { category: 'A03:2021-Injection', rank: 3, description: 'XPath Injection' },
93
+ 'CWE-644': { category: 'A03:2021-Injection', rank: 3, description: 'Improper Neutralization of HTTP Headers' },
94
+ 'CWE-652': { category: 'A03:2021-Injection', rank: 3, description: 'XQuery Injection' },
95
+ 'CWE-917': { category: 'A03:2021-Injection', rank: 3, description: 'Expression Language Injection' },
96
+ 'CWE-1236': { category: 'A03:2021-Injection', rank: 3, description: 'CSV Injection' },
97
+ // A04:2021-Insecure Design
98
+ 'CWE-209': { category: 'A04:2021-Insecure Design', rank: 4, description: 'Generation of Error Message Containing Sensitive Information' },
99
+ 'CWE-256': { category: 'A04:2021-Insecure Design', rank: 4, description: 'Plaintext Storage of a Password' },
100
+ 'CWE-501': { category: 'A04:2021-Insecure Design', rank: 4, description: 'Trust Boundary Violation' },
101
+ 'CWE-522': { category: 'A04:2021-Insecure Design', rank: 4, description: 'Insufficiently Protected Credentials' },
102
+ 'CWE-602': { category: 'A04:2021-Insecure Design', rank: 4, description: 'Client-Side Enforcement of Server-Side Security' },
103
+ 'CWE-656': { category: 'A04:2021-Insecure Design', rank: 4, description: 'Reliance on Security Through Obscurity' },
104
+ 'CWE-799': { category: 'A04:2021-Insecure Design', rank: 4, description: 'Improper Control of Interaction Frequency' },
105
+ 'CWE-840': { category: 'A04:2021-Insecure Design', rank: 4, description: 'Business Logic Errors' },
106
+ 'CWE-841': { category: 'A04:2021-Insecure Design', rank: 4, description: 'Improper Enforcement of Behavioral Workflow' },
107
+ 'CWE-927': { category: 'A04:2021-Insecure Design', rank: 4, description: 'Use of Implicit Intent for Sensitive Communication' },
108
+ // A05:2021-Security Misconfiguration
109
+ 'CWE-002': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'Environment Issues' },
110
+ 'CWE-011': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'ASP.NET Misconfiguration' },
111
+ 'CWE-013': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'ASP.NET Misconfiguration: Password in Configuration File' },
112
+ 'CWE-015': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'External Control of System or Configuration Setting' },
113
+ 'CWE-016': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'Configuration' },
114
+ 'CWE-260': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'Password in Configuration File' },
115
+ 'CWE-315': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'Cleartext Storage of Sensitive Information in a Cookie' },
116
+ 'CWE-520': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: '.NET Misconfiguration: Use of Impersonation' },
117
+ 'CWE-526': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'Exposure of Sensitive Information Through Environmental Variables' },
118
+ 'CWE-537': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'Java Runtime Error Message Containing Sensitive Information' },
119
+ 'CWE-541': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'Inclusion of Sensitive Information in an Include File' },
120
+ 'CWE-547': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'Use of Hard-coded, Security-relevant Constants' },
121
+ 'CWE-611': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'XML External Entity (XXE)' },
122
+ 'CWE-614': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: "Sensitive Cookie Without 'Secure' Attribute" },
123
+ 'CWE-756': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'Missing Custom Error Page' },
124
+ 'CWE-776': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'Improper Restriction of Recursive Entity References' },
125
+ 'CWE-942': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'Permissive Cross-domain Policy with Untrusted Domains' },
126
+ 'CWE-1004': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: "Sensitive Cookie Without 'HttpOnly' Flag" },
127
+ 'CWE-1032': { category: 'A05:2021-Security Misconfiguration', rank: 5, description: 'OWASP Top Ten 2017 Category A6' },
128
+ // A06:2021-Vulnerable and Outdated Components (usually detected by SCA tools)
129
+ 'CWE-937': { category: 'A06:2021-Vulnerable and Outdated Components', rank: 6, description: 'Using Components with Known Vulnerabilities' },
130
+ 'CWE-1035': { category: 'A06:2021-Vulnerable and Outdated Components', rank: 6, description: 'Using Components with Known Vulnerabilities' },
131
+ // A07:2021-Identification and Authentication Failures
132
+ 'CWE-255': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Credentials Management Errors' },
133
+ 'CWE-259': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Use of Hard-coded Password' },
134
+ 'CWE-287': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Improper Authentication' },
135
+ 'CWE-288': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Authentication Bypass Using an Alternate Path or Channel' },
136
+ 'CWE-290': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Authentication Bypass by Spoofing' },
137
+ 'CWE-294': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Authentication Bypass by Capture-replay' },
138
+ 'CWE-295': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Improper Certificate Validation' },
139
+ 'CWE-297': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Improper Validation of Certificate with Host Mismatch' },
140
+ 'CWE-300': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Channel Accessible by Non-Endpoint' },
141
+ 'CWE-302': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Authentication Bypass by Assumed-Immutable Data' },
142
+ 'CWE-304': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Missing Critical Step in Authentication' },
143
+ 'CWE-306': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Missing Authentication for Critical Function' },
144
+ 'CWE-307': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Improper Restriction of Excessive Authentication Attempts' },
145
+ 'CWE-308': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Use of Single-factor Authentication' },
146
+ 'CWE-384': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Session Fixation' },
147
+ 'CWE-521': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Weak Password Requirements' },
148
+ 'CWE-613': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Insufficient Session Expiration' },
149
+ 'CWE-620': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Unverified Password Change' },
150
+ 'CWE-640': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Weak Password Recovery Mechanism' },
151
+ 'CWE-798': { category: 'A07:2021-Identification and Authentication Failures', rank: 7, description: 'Use of Hard-coded Credentials' },
152
+ // A08:2021-Software and Data Integrity Failures
153
+ 'CWE-345': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Insufficient Verification of Data Authenticity' },
154
+ 'CWE-353': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Missing Support for Integrity Check' },
155
+ 'CWE-426': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Untrusted Search Path' },
156
+ 'CWE-427': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Uncontrolled Search Path Element' },
157
+ 'CWE-428': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Unquoted Search Path or Element' },
158
+ 'CWE-470': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Use of Externally-Controlled Input to Select Classes or Code' },
159
+ 'CWE-494': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Download of Code Without Integrity Check' },
160
+ 'CWE-502': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Deserialization of Untrusted Data' },
161
+ 'CWE-565': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Reliance on Cookies without Validation and Integrity' },
162
+ 'CWE-784': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Reliance on Cookies without Validation and Integrity Checking' },
163
+ 'CWE-829': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Inclusion of Functionality from Untrusted Control Sphere' },
164
+ 'CWE-830': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Inclusion of Web Functionality from an Untrusted Source' },
165
+ 'CWE-915': { category: 'A08:2021-Software and Data Integrity Failures', rank: 8, description: 'Improperly Controlled Modification of Dynamically-Determined Object Attributes' },
166
+ // A09:2021-Security Logging and Monitoring Failures
167
+ 'CWE-117': { category: 'A09:2021-Security Logging and Monitoring Failures', rank: 9, description: 'Improper Output Neutralization for Logs' },
168
+ 'CWE-223': { category: 'A09:2021-Security Logging and Monitoring Failures', rank: 9, description: 'Omission of Security-relevant Information' },
169
+ 'CWE-532': { category: 'A09:2021-Security Logging and Monitoring Failures', rank: 9, description: 'Insertion of Sensitive Information into Log File' },
170
+ 'CWE-778': { category: 'A09:2021-Security Logging and Monitoring Failures', rank: 9, description: 'Insufficient Logging' },
171
+ // A10:2021-Server-Side Request Forgery
172
+ 'CWE-918': { category: 'A10:2021-Server-Side Request Forgery', rank: 10, description: 'Server-Side Request Forgery (SSRF)' },
173
+ };
174
+ /**
175
+ * Get OWASP Top 10 mapping for a CWE ID.
176
+ */
177
+ export function getOWASPMapping(cweId) {
178
+ // Normalize CWE ID format
179
+ const normalizedCwe = cweId.toUpperCase().replace(/^CWE-?/, 'CWE-');
180
+ // Try exact match
181
+ if (CWE_TO_OWASP[normalizedCwe]) {
182
+ return CWE_TO_OWASP[normalizedCwe];
183
+ }
184
+ // Try without leading zeros (CWE-089 vs CWE-89)
185
+ const numericPart = normalizedCwe.replace('CWE-', '');
186
+ const withoutLeadingZeros = 'CWE-' + parseInt(numericPart, 10);
187
+ if (CWE_TO_OWASP[withoutLeadingZeros]) {
188
+ return CWE_TO_OWASP[withoutLeadingZeros];
189
+ }
190
+ // Try with leading zeros (CWE-22 vs CWE-022)
191
+ const withLeadingZeros = 'CWE-' + numericPart.padStart(3, '0');
192
+ if (CWE_TO_OWASP[withLeadingZeros]) {
193
+ return CWE_TO_OWASP[withLeadingZeros];
194
+ }
195
+ return {
196
+ category: 'Unknown',
197
+ rank: 0,
198
+ description: `Unknown CWE: ${cweId}`,
199
+ };
200
+ }
201
+ /**
202
+ * Get all CWE IDs for an OWASP category.
203
+ */
204
+ export function getCWEsForOWASPCategory(category) {
205
+ return Object.entries(CWE_TO_OWASP)
206
+ .filter(([_, mapping]) => mapping.category === category)
207
+ .map(([cwe]) => cwe);
208
+ }
209
+ /**
210
+ * Get OWASP category by rank (1-10).
211
+ */
212
+ export function getOWASPCategoryByRank(rank) {
213
+ const categories = [
214
+ 'A01:2021-Broken Access Control',
215
+ 'A02:2021-Cryptographic Failures',
216
+ 'A03:2021-Injection',
217
+ 'A04:2021-Insecure Design',
218
+ 'A05:2021-Security Misconfiguration',
219
+ 'A06:2021-Vulnerable and Outdated Components',
220
+ 'A07:2021-Identification and Authentication Failures',
221
+ 'A08:2021-Software and Data Integrity Failures',
222
+ 'A09:2021-Security Logging and Monitoring Failures',
223
+ 'A10:2021-Server-Side Request Forgery',
224
+ ];
225
+ return categories[rank - 1] || null;
226
+ }
227
+ /**
228
+ * Get a short description of an OWASP category.
229
+ */
230
+ export function getOWASPCategoryDescription(category) {
231
+ const descriptions = {
232
+ 'A01:2021-Broken Access Control': 'Restrictions on what authenticated users can do are not properly enforced.',
233
+ 'A02:2021-Cryptographic Failures': 'Failures related to cryptography which often lead to exposure of sensitive data.',
234
+ 'A03:2021-Injection': 'Hostile data is sent to an interpreter as part of a command or query.',
235
+ 'A04:2021-Insecure Design': 'Risks related to design and architectural flaws.',
236
+ 'A05:2021-Security Misconfiguration': 'Missing appropriate security hardening or improperly configured permissions.',
237
+ 'A06:2021-Vulnerable and Outdated Components': 'Using components with known vulnerabilities.',
238
+ 'A07:2021-Identification and Authentication Failures': 'Confirmation of user identity, authentication, and session management.',
239
+ 'A08:2021-Software and Data Integrity Failures': 'Code and infrastructure that does not protect against integrity violations.',
240
+ 'A09:2021-Security Logging and Monitoring Failures': 'Failures in logging and monitoring activities.',
241
+ 'A10:2021-Server-Side Request Forgery': 'Fetching a remote resource without validating the user-supplied URL.',
242
+ 'Unknown': 'Unknown or unmapped vulnerability category.',
243
+ };
244
+ return descriptions[category] || 'Unknown category.';
245
+ }
246
+ //# sourceMappingURL=owasp-mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owasp-mapping.js","sourceRoot":"","sources":["../../src/security-scan/owasp-mapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Continuous Security Scanner
3
+ *
4
+ * Provides automated security scanning for repositories with:
5
+ * - Git clone → file walker → Circle-IR analysis pipeline
6
+ * - OWASP Top 10 category mapping
7
+ * - Summary report with severity, location, confidence
8
+ * - Trend tracking (store results, compare across runs)
9
+ */
10
+ import { type Finding, type SupportedLanguage } from 'circle-ir';
11
+ import { type OWASPMapping } from './owasp-mapping.js';
12
+ export interface ScanOptions {
13
+ /** Repository URL or local path */
14
+ target: string;
15
+ /** Branch to scan (default: main or master) */
16
+ branch?: string;
17
+ /** Specific commit to scan */
18
+ commit?: string;
19
+ /** Languages to scan (default: auto-detect) */
20
+ languages?: SupportedLanguage[];
21
+ /** Maximum files to scan (default: 1000) */
22
+ maxFiles?: number;
23
+ /** File patterns to include (glob) */
24
+ includePatterns?: string[];
25
+ /** File patterns to exclude (glob) */
26
+ excludePatterns?: string[];
27
+ /** Minimum severity to report (default: low) */
28
+ minSeverity?: 'critical' | 'high' | 'medium' | 'low';
29
+ /** Enable parallel analysis (default: true) */
30
+ parallel?: boolean;
31
+ /** Maximum concurrency for parallel analysis (default: 10) */
32
+ maxConcurrency?: number;
33
+ /** Enable LLM enrichment (default: false) */
34
+ enableLLM?: boolean;
35
+ /** Output directory for reports */
36
+ outputDir?: string;
37
+ /** Verbose logging */
38
+ verbose?: boolean;
39
+ /** Progress callback */
40
+ onProgress?: (progress: ScanProgress) => void;
41
+ }
42
+ export interface ScanProgress {
43
+ phase: 'clone' | 'discover' | 'analyze' | 'report';
44
+ currentFile?: string;
45
+ filesProcessed: number;
46
+ totalFiles: number;
47
+ findingsCount: number;
48
+ }
49
+ export interface ScanResult {
50
+ /** Scan metadata */
51
+ meta: ScanMeta;
52
+ /** All findings */
53
+ findings: ScanFinding[];
54
+ /** Findings grouped by OWASP Top 10 category */
55
+ byOWASP: OWASPSummary;
56
+ /** Summary statistics */
57
+ summary: ScanSummary;
58
+ /** Per-file results */
59
+ files: FileResult[];
60
+ }
61
+ export interface ScanMeta {
62
+ /** Target repository or path */
63
+ target: string;
64
+ /** Branch scanned */
65
+ branch?: string;
66
+ /** Commit hash */
67
+ commit?: string;
68
+ /** Scan timestamp */
69
+ timestamp: string;
70
+ /** Scan duration in ms */
71
+ durationMs: number;
72
+ /** Circle-IR version */
73
+ version: string;
74
+ }
75
+ export interface ScanFinding extends Finding {
76
+ /** OWASP Top 10 mapping */
77
+ owasp: OWASPMapping;
78
+ /** Relative file path */
79
+ filePath: string;
80
+ }
81
+ export interface OWASPSummary {
82
+ [category: string]: {
83
+ count: number;
84
+ critical: number;
85
+ high: number;
86
+ medium: number;
87
+ low: number;
88
+ findings: ScanFinding[];
89
+ };
90
+ }
91
+ export interface ScanSummary {
92
+ /** Total files scanned */
93
+ totalFiles: number;
94
+ /** Total lines of code */
95
+ totalLOC: number;
96
+ /** Total findings */
97
+ totalFindings: number;
98
+ /** Findings by severity */
99
+ bySeverity: {
100
+ critical: number;
101
+ high: number;
102
+ medium: number;
103
+ low: number;
104
+ };
105
+ /** Findings by type */
106
+ byType: {
107
+ [type: string]: number;
108
+ };
109
+ /** Top 5 most vulnerable files */
110
+ topVulnerableFiles: Array<{
111
+ file: string;
112
+ count: number;
113
+ }>;
114
+ }
115
+ export interface FileResult {
116
+ path: string;
117
+ language: SupportedLanguage;
118
+ loc: number;
119
+ findings: ScanFinding[];
120
+ analysisTimeMs: number;
121
+ }
122
+ export declare class SecurityScanner {
123
+ private workDir;
124
+ private verbose;
125
+ private onProgress?;
126
+ constructor();
127
+ /**
128
+ * Run a security scan on a repository or local path.
129
+ */
130
+ scan(options: ScanOptions): Promise<ScanResult>;
131
+ /**
132
+ * Prepare repository for scanning.
133
+ */
134
+ private prepareRepository;
135
+ /**
136
+ * Clone a Git repository.
137
+ */
138
+ private cloneRepository;
139
+ /**
140
+ * Discover files to scan.
141
+ */
142
+ private discoverFiles;
143
+ /**
144
+ * Check if a path matches any of the given glob patterns.
145
+ */
146
+ private matchesPattern;
147
+ /**
148
+ * Analyze files.
149
+ */
150
+ private analyzeFiles;
151
+ /**
152
+ * Analyze a single file.
153
+ */
154
+ private analyzeFile;
155
+ /**
156
+ * Detect language from file extension.
157
+ */
158
+ private detectLanguage;
159
+ /**
160
+ * Check if severity meets minimum threshold.
161
+ */
162
+ private meetsMinSeverity;
163
+ /**
164
+ * Generate scan report.
165
+ */
166
+ private generateReport;
167
+ /**
168
+ * Save report to output directory.
169
+ */
170
+ private saveReport;
171
+ /**
172
+ * Convert result to SARIF format.
173
+ */
174
+ private toSARIF;
175
+ /**
176
+ * Convert result to text summary.
177
+ */
178
+ private toTextSummary;
179
+ /**
180
+ * Report progress.
181
+ */
182
+ private reportProgress;
183
+ /**
184
+ * Clean up temporary files.
185
+ */
186
+ cleanup(): void;
187
+ }
188
+ /**
189
+ * Run a security scan on a repository or local path.
190
+ */
191
+ export declare function scanRepository(options: ScanOptions): Promise<ScanResult>;
192
+ /**
193
+ * Scan a local directory.
194
+ */
195
+ export declare function scanDirectory(directory: string, options?: Partial<ScanOptions>): Promise<ScanResult>;
196
+ /**
197
+ * Quick scan with default options.
198
+ */
199
+ export declare function quickScan(target: string): Promise<ScanResult>;
200
+ /**
201
+ * Format scan result as a human-readable report.
202
+ */
203
+ export declare function formatScanReport(result: ScanResult): string;
204
+ //# sourceMappingURL=scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/security-scan/scanner.ts"],"names":[],"mappings":"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"}