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,511 @@
1
+ /**
2
+ * Secret Scanner Module
3
+ *
4
+ * Scans code and Git history for secrets and credentials.
5
+ */
6
+ import { execSync } from 'child_process';
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+ import { SECRET_PATTERNS, } from './patterns.js';
10
+ /**
11
+ * Secret Scanner class
12
+ */
13
+ export class SecretScanner {
14
+ patterns;
15
+ options;
16
+ constructor(options = {}) {
17
+ this.options = options;
18
+ this.patterns = this.selectPatterns(options);
19
+ }
20
+ /**
21
+ * Select patterns based on options
22
+ */
23
+ selectPatterns(options) {
24
+ let patterns = options.patterns || SECRET_PATTERNS;
25
+ // Filter by category
26
+ if (options.includeCategories?.length) {
27
+ patterns = patterns.filter((p) => options.includeCategories.includes(p.category));
28
+ }
29
+ if (options.excludeCategories?.length) {
30
+ patterns = patterns.filter((p) => !options.excludeCategories.includes(p.category));
31
+ }
32
+ // Filter by severity
33
+ if (options.minSeverity) {
34
+ const severityOrder = ['low', 'medium', 'high', 'critical'];
35
+ const minIndex = severityOrder.indexOf(options.minSeverity);
36
+ patterns = patterns.filter((p) => severityOrder.indexOf(p.severity) >= minIndex);
37
+ }
38
+ return patterns;
39
+ }
40
+ /**
41
+ * Scan a directory for secrets
42
+ */
43
+ async scan(directory) {
44
+ const startTime = Date.now();
45
+ const secrets = [];
46
+ const progress = {
47
+ phase: 'indexing',
48
+ filesScanned: 0,
49
+ totalFiles: 0,
50
+ secretsFound: 0,
51
+ };
52
+ this.options.onProgress?.(progress);
53
+ // Get list of files
54
+ const files = this.getFiles(directory);
55
+ progress.totalFiles = files.length;
56
+ progress.phase = 'scanning-files';
57
+ this.options.onProgress?.(progress);
58
+ // Scan current files
59
+ for (const file of files) {
60
+ progress.currentFile = file;
61
+ this.options.onProgress?.(progress);
62
+ const fileSecrets = await this.scanFile(file, directory);
63
+ for (const secret of fileSecrets) {
64
+ secret.presentInHead = true;
65
+ secrets.push(secret);
66
+ }
67
+ progress.filesScanned++;
68
+ progress.secretsFound = secrets.length;
69
+ this.options.onProgress?.(progress);
70
+ }
71
+ // Scan git history if enabled
72
+ let commitsScanned = 0;
73
+ if (this.options.scanHistory && this.isGitRepo(directory)) {
74
+ progress.phase = 'scanning-history';
75
+ const historySecrets = await this.scanGitHistory(directory, progress);
76
+ // Mark historical secrets as not present in HEAD if not already found
77
+ for (const secret of historySecrets) {
78
+ const existsInHead = secrets.some((s) => s.file === secret.file &&
79
+ s.patternId === secret.patternId &&
80
+ s.match === secret.match);
81
+ secret.presentInHead = existsInHead;
82
+ if (!existsInHead) {
83
+ secrets.push(secret);
84
+ }
85
+ }
86
+ commitsScanned = progress.commitsScanned || 0;
87
+ }
88
+ progress.phase = 'complete';
89
+ this.options.onProgress?.(progress);
90
+ // Calculate statistics
91
+ const bySeverity = {
92
+ critical: 0,
93
+ high: 0,
94
+ medium: 0,
95
+ low: 0,
96
+ };
97
+ const byCategory = {};
98
+ for (const secret of secrets) {
99
+ bySeverity[secret.severity]++;
100
+ byCategory[secret.category] = (byCategory[secret.category] || 0) + 1;
101
+ }
102
+ const activeSecrets = secrets.filter((s) => s.presentInHead).length;
103
+ const historicalSecrets = secrets.filter((s) => !s.presentInHead).length;
104
+ // Generate .gitignore recommendations
105
+ const gitignoreRecommendations = this.generateGitignoreRecommendations(secrets);
106
+ return {
107
+ directory,
108
+ filesScanned: files.length,
109
+ commitsScanned,
110
+ secrets,
111
+ bySeverity,
112
+ byCategory,
113
+ activeSecrets,
114
+ historicalSecrets,
115
+ durationMs: Date.now() - startTime,
116
+ gitignoreRecommendations,
117
+ };
118
+ }
119
+ /**
120
+ * Scan a single file for secrets
121
+ */
122
+ async scanFile(filePath, baseDir) {
123
+ const secrets = [];
124
+ try {
125
+ const content = fs.readFileSync(filePath, 'utf-8');
126
+ const relativePath = path.relative(baseDir, filePath);
127
+ const lines = content.split('\n');
128
+ for (let lineNum = 0; lineNum < lines.length; lineNum++) {
129
+ const line = lines[lineNum];
130
+ const lineSecrets = this.scanLine(line, relativePath, lineNum + 1);
131
+ secrets.push(...lineSecrets);
132
+ }
133
+ }
134
+ catch {
135
+ // Skip files that can't be read
136
+ }
137
+ return secrets;
138
+ }
139
+ /**
140
+ * Scan a single line for secrets
141
+ */
142
+ scanLine(line, file, lineNum, commit, author, commitDate) {
143
+ const secrets = [];
144
+ // Quick keyword pre-filter
145
+ const lineLower = line.toLowerCase();
146
+ for (const pattern of this.patterns) {
147
+ // Skip if no keywords match (optimization)
148
+ if (pattern.keywords?.length) {
149
+ const hasKeyword = pattern.keywords.some((k) => lineLower.includes(k.toLowerCase()));
150
+ if (!hasKeyword)
151
+ continue;
152
+ }
153
+ // Reset regex lastIndex for global patterns
154
+ pattern.pattern.lastIndex = 0;
155
+ let match;
156
+ while ((match = pattern.pattern.exec(line)) !== null) {
157
+ const matchedText = match[0];
158
+ // Check false positive patterns
159
+ if (pattern.falsePositivePatterns?.length) {
160
+ const isFalsePositive = pattern.falsePositivePatterns.some((fp) => fp.test(line));
161
+ if (isFalsePositive)
162
+ continue;
163
+ }
164
+ // Run validator if present
165
+ if (pattern.validator && !pattern.validator(matchedText)) {
166
+ continue;
167
+ }
168
+ secrets.push({
169
+ patternId: pattern.id,
170
+ patternName: pattern.name,
171
+ file,
172
+ line: lineNum,
173
+ column: match.index + 1,
174
+ match: this.redactSecret(matchedText),
175
+ lineContent: this.truncateLine(line),
176
+ severity: pattern.severity,
177
+ category: pattern.category,
178
+ commit,
179
+ author,
180
+ commitDate,
181
+ presentInHead: false, // Will be updated later
182
+ });
183
+ }
184
+ }
185
+ return secrets;
186
+ }
187
+ /**
188
+ * Scan git history for secrets
189
+ */
190
+ async scanGitHistory(directory, progress) {
191
+ const secrets = [];
192
+ const maxCommits = this.options.maxCommits || 100;
193
+ try {
194
+ // Get commit hashes
195
+ const commits = execSync(`git -C "${directory}" log --format="%H" -n ${maxCommits}`, { encoding: 'utf-8' })
196
+ .trim()
197
+ .split('\n')
198
+ .filter(Boolean);
199
+ progress.totalCommits = commits.length;
200
+ progress.commitsScanned = 0;
201
+ for (const commit of commits) {
202
+ // Get commit info
203
+ const commitInfo = execSync(`git -C "${directory}" log -1 --format="%an|%aI" ${commit}`, { encoding: 'utf-8' }).trim();
204
+ const [author, commitDate] = commitInfo.split('|');
205
+ // Get diff for this commit
206
+ try {
207
+ const diff = execSync(`git -C "${directory}" diff-tree --no-commit-id -r -p ${commit}`, { encoding: 'utf-8', maxBuffer: 50 * 1024 * 1024 });
208
+ // Parse diff and scan for secrets
209
+ const diffSecrets = this.scanDiff(diff, commit, author, commitDate);
210
+ secrets.push(...diffSecrets);
211
+ }
212
+ catch {
213
+ // Skip commits that can't be diffed
214
+ }
215
+ progress.commitsScanned++;
216
+ progress.secretsFound = secrets.length;
217
+ this.options.onProgress?.(progress);
218
+ }
219
+ }
220
+ catch {
221
+ // Git history scan failed
222
+ }
223
+ return secrets;
224
+ }
225
+ /**
226
+ * Scan a git diff for secrets
227
+ */
228
+ scanDiff(diff, commit, author, commitDate) {
229
+ const secrets = [];
230
+ let currentFile = '';
231
+ let lineNum = 0;
232
+ const lines = diff.split('\n');
233
+ for (const line of lines) {
234
+ // Track current file
235
+ if (line.startsWith('+++ b/')) {
236
+ currentFile = line.slice(6);
237
+ lineNum = 0;
238
+ continue;
239
+ }
240
+ // Track line numbers from hunk headers
241
+ const hunkMatch = line.match(/^@@ -\d+(?:,\d+)? \+(\d+)/);
242
+ if (hunkMatch) {
243
+ lineNum = parseInt(hunkMatch[1], 10) - 1;
244
+ continue;
245
+ }
246
+ // Only scan added lines
247
+ if (line.startsWith('+') && !line.startsWith('+++')) {
248
+ lineNum++;
249
+ const content = line.slice(1); // Remove the '+' prefix
250
+ const lineSecrets = this.scanLine(content, currentFile, lineNum, commit, author, commitDate);
251
+ secrets.push(...lineSecrets);
252
+ }
253
+ else if (!line.startsWith('-')) {
254
+ lineNum++;
255
+ }
256
+ }
257
+ return secrets;
258
+ }
259
+ /**
260
+ * Get list of files to scan
261
+ */
262
+ getFiles(directory) {
263
+ const files = [];
264
+ const excludePatterns = [
265
+ /node_modules/,
266
+ /\.git/,
267
+ /dist/,
268
+ /build/,
269
+ /\.min\./,
270
+ /vendor/,
271
+ /\.lock$/,
272
+ /package-lock\.json$/,
273
+ /yarn\.lock$/,
274
+ /\.png$/i,
275
+ /\.jpg$/i,
276
+ /\.jpeg$/i,
277
+ /\.gif$/i,
278
+ /\.ico$/i,
279
+ /\.svg$/i,
280
+ /\.woff2?$/i,
281
+ /\.ttf$/i,
282
+ /\.eot$/i,
283
+ /\.mp[34]$/i,
284
+ /\.wav$/i,
285
+ /\.avi$/i,
286
+ /\.mov$/i,
287
+ /\.pdf$/i,
288
+ /\.zip$/i,
289
+ /\.tar$/i,
290
+ /\.gz$/i,
291
+ /\.wasm$/i,
292
+ ];
293
+ const walk = (dir) => {
294
+ try {
295
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
296
+ for (const entry of entries) {
297
+ const fullPath = path.join(dir, entry.name);
298
+ const relativePath = path.relative(directory, fullPath);
299
+ // Skip excluded patterns
300
+ if (excludePatterns.some((p) => p.test(relativePath))) {
301
+ continue;
302
+ }
303
+ // Apply custom exclude patterns
304
+ if (this.options.excludeFiles?.length) {
305
+ const shouldExclude = this.options.excludeFiles.some((pattern) => new RegExp(pattern).test(relativePath));
306
+ if (shouldExclude)
307
+ continue;
308
+ }
309
+ if (entry.isDirectory()) {
310
+ walk(fullPath);
311
+ }
312
+ else if (entry.isFile()) {
313
+ // Apply custom include patterns
314
+ if (this.options.includeFiles?.length) {
315
+ const shouldInclude = this.options.includeFiles.some((pattern) => new RegExp(pattern).test(relativePath));
316
+ if (!shouldInclude)
317
+ continue;
318
+ }
319
+ files.push(fullPath);
320
+ }
321
+ }
322
+ }
323
+ catch {
324
+ // Skip directories that can't be read
325
+ }
326
+ };
327
+ walk(directory);
328
+ return files;
329
+ }
330
+ /**
331
+ * Check if directory is a git repo
332
+ */
333
+ isGitRepo(directory) {
334
+ try {
335
+ execSync(`git -C "${directory}" rev-parse --git-dir`, {
336
+ encoding: 'utf-8',
337
+ stdio: 'pipe',
338
+ });
339
+ return true;
340
+ }
341
+ catch {
342
+ return false;
343
+ }
344
+ }
345
+ /**
346
+ * Redact a secret for safe display
347
+ */
348
+ redactSecret(secret) {
349
+ if (secret.length <= 8) {
350
+ return '*'.repeat(secret.length);
351
+ }
352
+ const visibleChars = Math.min(4, Math.floor(secret.length / 4));
353
+ return (secret.slice(0, visibleChars) +
354
+ '*'.repeat(secret.length - visibleChars * 2) +
355
+ secret.slice(-visibleChars));
356
+ }
357
+ /**
358
+ * Truncate long lines
359
+ */
360
+ truncateLine(line, maxLength = 200) {
361
+ if (line.length <= maxLength)
362
+ return line;
363
+ return line.slice(0, maxLength) + '...';
364
+ }
365
+ /**
366
+ * Generate .gitignore recommendations
367
+ */
368
+ generateGitignoreRecommendations(secrets) {
369
+ const recommendations = new Set();
370
+ for (const secret of secrets) {
371
+ const file = secret.file;
372
+ // Common sensitive file patterns
373
+ if (/\.env($|\.)/.test(file)) {
374
+ recommendations.add('.env*');
375
+ recommendations.add('!.env.example');
376
+ }
377
+ if (/credentials?\./.test(file)) {
378
+ recommendations.add('**/credentials*');
379
+ }
380
+ if (/secrets?\./.test(file)) {
381
+ recommendations.add('**/secrets*');
382
+ }
383
+ if (/config\.local\./.test(file)) {
384
+ recommendations.add('*.local.*');
385
+ }
386
+ if (/\.pem$/.test(file)) {
387
+ recommendations.add('*.pem');
388
+ }
389
+ if (/\.key$/.test(file)) {
390
+ recommendations.add('*.key');
391
+ }
392
+ if (/id_rsa/.test(file)) {
393
+ recommendations.add('**/id_rsa*');
394
+ }
395
+ if (/\.keystore$/.test(file)) {
396
+ recommendations.add('*.keystore');
397
+ }
398
+ if (/\.jks$/.test(file)) {
399
+ recommendations.add('*.jks');
400
+ }
401
+ if (/\.p12$/.test(file)) {
402
+ recommendations.add('*.p12');
403
+ }
404
+ if (/\.pfx$/.test(file)) {
405
+ recommendations.add('*.pfx');
406
+ }
407
+ }
408
+ // Always recommend common patterns
409
+ recommendations.add('.env');
410
+ recommendations.add('.env.local');
411
+ recommendations.add('*.pem');
412
+ recommendations.add('*.key');
413
+ return [...recommendations].sort();
414
+ }
415
+ }
416
+ /**
417
+ * Scan a directory for secrets (convenience function)
418
+ */
419
+ export async function scanForSecrets(directory, options = {}) {
420
+ const scanner = new SecretScanner(options);
421
+ return scanner.scan(directory);
422
+ }
423
+ /**
424
+ * Quick scan without git history (convenience function)
425
+ */
426
+ export async function quickSecretScan(directory) {
427
+ return scanForSecrets(directory, {
428
+ scanHistory: false,
429
+ minSeverity: 'medium',
430
+ });
431
+ }
432
+ /**
433
+ * Format scan result as text report
434
+ */
435
+ export function formatSecretReport(result) {
436
+ const lines = [];
437
+ lines.push('='.repeat(60));
438
+ lines.push('SECRET SCAN REPORT');
439
+ lines.push('='.repeat(60));
440
+ lines.push('');
441
+ lines.push(`Directory: ${result.directory}`);
442
+ lines.push(`Files Scanned: ${result.filesScanned}`);
443
+ lines.push(`Commits Scanned: ${result.commitsScanned}`);
444
+ lines.push(`Duration: ${result.durationMs}ms`);
445
+ lines.push('');
446
+ // Summary
447
+ lines.push('-'.repeat(40));
448
+ lines.push('SUMMARY');
449
+ lines.push('-'.repeat(40));
450
+ lines.push(`Total Secrets Found: ${result.secrets.length}`);
451
+ lines.push(` Active (in HEAD): ${result.activeSecrets}`);
452
+ lines.push(` Historical Only: ${result.historicalSecrets}`);
453
+ lines.push('');
454
+ lines.push('By Severity:');
455
+ lines.push(` Critical: ${result.bySeverity.critical}`);
456
+ lines.push(` High: ${result.bySeverity.high}`);
457
+ lines.push(` Medium: ${result.bySeverity.medium}`);
458
+ lines.push(` Low: ${result.bySeverity.low}`);
459
+ lines.push('');
460
+ lines.push('By Category:');
461
+ for (const [category, count] of Object.entries(result.byCategory)) {
462
+ lines.push(` ${category}: ${count}`);
463
+ }
464
+ lines.push('');
465
+ // Detailed findings
466
+ if (result.secrets.length > 0) {
467
+ lines.push('-'.repeat(40));
468
+ lines.push('FINDINGS');
469
+ lines.push('-'.repeat(40));
470
+ // Group by severity
471
+ const grouped = new Map();
472
+ for (const secret of result.secrets) {
473
+ const list = grouped.get(secret.severity) || [];
474
+ list.push(secret);
475
+ grouped.set(secret.severity, list);
476
+ }
477
+ for (const severity of ['critical', 'high', 'medium', 'low']) {
478
+ const secrets = grouped.get(severity);
479
+ if (!secrets?.length)
480
+ continue;
481
+ lines.push('');
482
+ lines.push(`[${severity.toUpperCase()}]`);
483
+ for (const secret of secrets) {
484
+ lines.push('');
485
+ lines.push(` ${secret.patternName} (${secret.category})`);
486
+ lines.push(` File: ${secret.file}:${secret.line}:${secret.column}`);
487
+ lines.push(` Match: ${secret.match}`);
488
+ if (secret.commit) {
489
+ lines.push(` Commit: ${secret.commit.slice(0, 8)}`);
490
+ lines.push(` Author: ${secret.author}`);
491
+ lines.push(` Date: ${secret.commitDate}`);
492
+ }
493
+ lines.push(` Status: ${secret.presentInHead ? 'ACTIVE' : 'Historical'}`);
494
+ }
495
+ }
496
+ }
497
+ // .gitignore recommendations
498
+ if (result.gitignoreRecommendations.length > 0) {
499
+ lines.push('');
500
+ lines.push('-'.repeat(40));
501
+ lines.push('.GITIGNORE RECOMMENDATIONS');
502
+ lines.push('-'.repeat(40));
503
+ lines.push('Add these patterns to your .gitignore:');
504
+ lines.push('');
505
+ for (const pattern of result.gitignoreRecommendations) {
506
+ lines.push(` ${pattern}`);
507
+ }
508
+ }
509
+ return lines.join('\n');
510
+ }
511
+ //# sourceMappingURL=scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/secret-scan/scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Security Scan Module
3
+ *
4
+ * Provides continuous security scanning capabilities with:
5
+ * - Repository scanning (Git clone → analyze → report)
6
+ * - OWASP Top 10 mapping
7
+ * - Trend tracking over time
8
+ */
9
+ export { SecurityScanner, scanRepository, scanDirectory, quickScan, formatScanReport, type ScanOptions, type ScanProgress, type ScanResult, type ScanMeta, type ScanFinding, type OWASPSummary, type ScanSummary, type FileResult, } from './scanner.js';
10
+ export { getOWASPMapping, getCWEsForOWASPCategory, getOWASPCategoryByRank, getOWASPCategoryDescription, type OWASPCategory, type OWASPMapping, } from './owasp-mapping.js';
11
+ export { TrendTracker, getTrendTracker, trackScan, type TrendData, type StoredScan, type TrendComparison, type TrendSummary, } from './trend-tracker.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security-scan/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,SAAS,EACT,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Security Scan Module
3
+ *
4
+ * Provides continuous security scanning capabilities with:
5
+ * - Repository scanning (Git clone → analyze → report)
6
+ * - OWASP Top 10 mapping
7
+ * - Trend tracking over time
8
+ */
9
+ // Scanner
10
+ export { SecurityScanner, scanRepository, scanDirectory, quickScan, formatScanReport, } from './scanner.js';
11
+ // OWASP Mapping
12
+ export { getOWASPMapping, getCWEsForOWASPCategory, getOWASPCategoryByRank, getOWASPCategoryDescription, } from './owasp-mapping.js';
13
+ // Trend Tracking
14
+ export { TrendTracker, getTrendTracker, trackScan, } from './trend-tracker.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security-scan/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,UAAU;AACV,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,SAAS,EACT,gBAAgB,GASjB,MAAM,cAAc,CAAC;AAEtB,gBAAgB;AAChB,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,GAG5B,MAAM,oBAAoB,CAAC;AAE5B,iBAAiB;AACjB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,SAAS,GAKV,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,29 @@
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
+ 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' | 'Unknown';
8
+ export interface OWASPMapping {
9
+ category: OWASPCategory;
10
+ rank: number;
11
+ description: string;
12
+ }
13
+ /**
14
+ * Get OWASP Top 10 mapping for a CWE ID.
15
+ */
16
+ export declare function getOWASPMapping(cweId: string): OWASPMapping;
17
+ /**
18
+ * Get all CWE IDs for an OWASP category.
19
+ */
20
+ export declare function getCWEsForOWASPCategory(category: OWASPCategory): string[];
21
+ /**
22
+ * Get OWASP category by rank (1-10).
23
+ */
24
+ export declare function getOWASPCategoryByRank(rank: number): OWASPCategory | null;
25
+ /**
26
+ * Get a short description of an OWASP category.
27
+ */
28
+ export declare function getOWASPCategoryDescription(category: OWASPCategory): string;
29
+ //# sourceMappingURL=owasp-mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owasp-mapping.d.ts","sourceRoot":"","sources":["../../src/security-scan/owasp-mapping.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,aAAa,GACrB,gCAAgC,GAChC,iCAAiC,GACjC,oBAAoB,GACpB,0BAA0B,GAC1B,oCAAoC,GACpC,6CAA6C,GAC7C,qDAAqD,GACrD,+CAA+C,GAC/C,mDAAmD,GACnD,sCAAsC,GACtC,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAmLD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CA2B3D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,EAAE,CAIzE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAezE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgB3E"}