@oculum/scanner 1.0.13 → 1.0.15

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 (1328) hide show
  1. package/dist/detect/ai-code/index.d.ts +6 -11
  2. package/dist/detect/ai-code/index.d.ts.map +1 -1
  3. package/dist/detect/ai-code/index.js +6 -24
  4. package/dist/detect/ai-code/index.js.map +1 -1
  5. package/dist/detect/ast-rules/agent-tools-ast.d.ts +14 -0
  6. package/dist/detect/ast-rules/agent-tools-ast.d.ts.map +1 -0
  7. package/dist/detect/ast-rules/agent-tools-ast.js +809 -0
  8. package/dist/detect/ast-rules/agent-tools-ast.js.map +1 -0
  9. package/dist/detect/ast-rules/ai-fingerprinting-ast.d.ts +14 -0
  10. package/dist/detect/ast-rules/ai-fingerprinting-ast.d.ts.map +1 -0
  11. package/dist/detect/ast-rules/ai-fingerprinting-ast.js +344 -0
  12. package/dist/detect/ast-rules/ai-fingerprinting-ast.js.map +1 -0
  13. package/dist/detect/ast-rules/auth-patterns-ast.d.ts +14 -0
  14. package/dist/detect/ast-rules/auth-patterns-ast.d.ts.map +1 -0
  15. package/dist/detect/ast-rules/auth-patterns-ast.js +280 -0
  16. package/dist/detect/ast-rules/auth-patterns-ast.js.map +1 -0
  17. package/dist/detect/ast-rules/byok-ast.d.ts +13 -0
  18. package/dist/detect/ast-rules/byok-ast.d.ts.map +1 -0
  19. package/dist/detect/ast-rules/byok-ast.js +180 -0
  20. package/dist/detect/ast-rules/byok-ast.js.map +1 -0
  21. package/dist/detect/ast-rules/child-process-ast.d.ts +13 -0
  22. package/dist/detect/ast-rules/child-process-ast.d.ts.map +1 -0
  23. package/dist/detect/ast-rules/child-process-ast.js +252 -0
  24. package/dist/detect/ast-rules/child-process-ast.js.map +1 -0
  25. package/dist/detect/ast-rules/dangerous-eval-ast.d.ts +13 -0
  26. package/dist/detect/ast-rules/dangerous-eval-ast.d.ts.map +1 -0
  27. package/dist/detect/ast-rules/dangerous-eval-ast.js +218 -0
  28. package/dist/detect/ast-rules/dangerous-eval-ast.js.map +1 -0
  29. package/dist/detect/ast-rules/data-exposure-ast.d.ts +13 -0
  30. package/dist/detect/ast-rules/data-exposure-ast.d.ts.map +1 -0
  31. package/dist/detect/ast-rules/data-exposure-ast.js +158 -0
  32. package/dist/detect/ast-rules/data-exposure-ast.js.map +1 -0
  33. package/dist/detect/ast-rules/dom-xss-ast.d.ts +14 -0
  34. package/dist/detect/ast-rules/dom-xss-ast.d.ts.map +1 -0
  35. package/dist/detect/ast-rules/dom-xss-ast.js +217 -0
  36. package/dist/detect/ast-rules/dom-xss-ast.js.map +1 -0
  37. package/dist/detect/ast-rules/endpoint-protection-ast.d.ts +13 -0
  38. package/dist/detect/ast-rules/endpoint-protection-ast.d.ts.map +1 -0
  39. package/dist/detect/ast-rules/endpoint-protection-ast.js +228 -0
  40. package/dist/detect/ast-rules/endpoint-protection-ast.js.map +1 -0
  41. package/dist/detect/ast-rules/entropy-ast.d.ts +17 -0
  42. package/dist/detect/ast-rules/entropy-ast.d.ts.map +1 -0
  43. package/dist/detect/ast-rules/entropy-ast.js +265 -0
  44. package/dist/detect/ast-rules/entropy-ast.js.map +1 -0
  45. package/dist/detect/ast-rules/flask-debug-ast.d.ts +10 -0
  46. package/dist/detect/ast-rules/flask-debug-ast.d.ts.map +1 -0
  47. package/dist/detect/ast-rules/flask-debug-ast.js +125 -0
  48. package/dist/detect/ast-rules/flask-debug-ast.js.map +1 -0
  49. package/dist/detect/ast-rules/framework-checks-ast.d.ts +13 -0
  50. package/dist/detect/ast-rules/framework-checks-ast.d.ts.map +1 -0
  51. package/dist/detect/ast-rules/framework-checks-ast.js +185 -0
  52. package/dist/detect/ast-rules/framework-checks-ast.js.map +1 -0
  53. package/dist/detect/ast-rules/helpers/call-analysis.d.ts +62 -0
  54. package/dist/detect/ast-rules/helpers/call-analysis.d.ts.map +1 -0
  55. package/dist/detect/ast-rules/helpers/call-analysis.js +217 -0
  56. package/dist/detect/ast-rules/helpers/call-analysis.js.map +1 -0
  57. package/dist/detect/ast-rules/helpers/context-detection.d.ts +33 -0
  58. package/dist/detect/ast-rules/helpers/context-detection.d.ts.map +1 -0
  59. package/dist/detect/ast-rules/helpers/context-detection.js +256 -0
  60. package/dist/detect/ast-rules/helpers/context-detection.js.map +1 -0
  61. package/dist/detect/ast-rules/helpers/control-flow.d.ts +40 -0
  62. package/dist/detect/ast-rules/helpers/control-flow.d.ts.map +1 -0
  63. package/dist/detect/ast-rules/helpers/control-flow.js +174 -0
  64. package/dist/detect/ast-rules/helpers/control-flow.js.map +1 -0
  65. package/dist/detect/ast-rules/helpers/import-analysis.d.ts +43 -0
  66. package/dist/detect/ast-rules/helpers/import-analysis.d.ts.map +1 -0
  67. package/dist/detect/ast-rules/helpers/import-analysis.js +149 -0
  68. package/dist/detect/ast-rules/helpers/import-analysis.js.map +1 -0
  69. package/dist/detect/ast-rules/helpers/index.d.ts +16 -0
  70. package/dist/detect/ast-rules/helpers/index.d.ts.map +1 -0
  71. package/dist/detect/ast-rules/helpers/index.js +112 -0
  72. package/dist/detect/ast-rules/helpers/index.js.map +1 -0
  73. package/dist/detect/ast-rules/helpers/python-helpers.d.ts +215 -0
  74. package/dist/detect/ast-rules/helpers/python-helpers.d.ts.map +1 -0
  75. package/dist/detect/ast-rules/helpers/python-helpers.js +935 -0
  76. package/dist/detect/ast-rules/helpers/python-helpers.js.map +1 -0
  77. package/dist/detect/ast-rules/helpers/scope-analysis.d.ts +50 -0
  78. package/dist/detect/ast-rules/helpers/scope-analysis.d.ts.map +1 -0
  79. package/dist/detect/ast-rules/helpers/scope-analysis.js +194 -0
  80. package/dist/detect/ast-rules/helpers/scope-analysis.js.map +1 -0
  81. package/dist/detect/ast-rules/helpers/string-analysis.d.ts +57 -0
  82. package/dist/detect/ast-rules/helpers/string-analysis.d.ts.map +1 -0
  83. package/dist/detect/ast-rules/helpers/string-analysis.js +184 -0
  84. package/dist/detect/ast-rules/helpers/string-analysis.js.map +1 -0
  85. package/dist/detect/ast-rules/helpers/type-extraction.d.ts +44 -0
  86. package/dist/detect/ast-rules/helpers/type-extraction.d.ts.map +1 -0
  87. package/dist/detect/ast-rules/helpers/type-extraction.js +125 -0
  88. package/dist/detect/ast-rules/helpers/type-extraction.js.map +1 -0
  89. package/dist/detect/ast-rules/helpers/user-input.d.ts +35 -0
  90. package/dist/detect/ast-rules/helpers/user-input.d.ts.map +1 -0
  91. package/dist/detect/ast-rules/helpers/user-input.js +243 -0
  92. package/dist/detect/ast-rules/helpers/user-input.js.map +1 -0
  93. package/dist/detect/ast-rules/index.d.ts +112 -0
  94. package/dist/detect/ast-rules/index.d.ts.map +1 -0
  95. package/dist/detect/ast-rules/index.js +232 -0
  96. package/dist/detect/ast-rules/index.js.map +1 -0
  97. package/dist/detect/ast-rules/json-parse-ast.d.ts +13 -0
  98. package/dist/detect/ast-rules/json-parse-ast.d.ts.map +1 -0
  99. package/dist/detect/ast-rules/json-parse-ast.js +143 -0
  100. package/dist/detect/ast-rules/json-parse-ast.js.map +1 -0
  101. package/dist/detect/ast-rules/log-injection-ast.d.ts +14 -0
  102. package/dist/detect/ast-rules/log-injection-ast.d.ts.map +1 -0
  103. package/dist/detect/ast-rules/log-injection-ast.js +235 -0
  104. package/dist/detect/ast-rules/log-injection-ast.js.map +1 -0
  105. package/dist/detect/ast-rules/logic-gates-ast.d.ts +14 -0
  106. package/dist/detect/ast-rules/logic-gates-ast.d.ts.map +1 -0
  107. package/dist/detect/ast-rules/logic-gates-ast.js +312 -0
  108. package/dist/detect/ast-rules/logic-gates-ast.js.map +1 -0
  109. package/dist/detect/ast-rules/mcp-security-ast.d.ts +14 -0
  110. package/dist/detect/ast-rules/mcp-security-ast.d.ts.map +1 -0
  111. package/dist/detect/ast-rules/mcp-security-ast.js +755 -0
  112. package/dist/detect/ast-rules/mcp-security-ast.js.map +1 -0
  113. package/dist/detect/ast-rules/model-supply-chain-ast.d.ts +13 -0
  114. package/dist/detect/ast-rules/model-supply-chain-ast.d.ts.map +1 -0
  115. package/dist/detect/ast-rules/model-supply-chain-ast.js +188 -0
  116. package/dist/detect/ast-rules/model-supply-chain-ast.js.map +1 -0
  117. package/dist/detect/ast-rules/package-hallucination-ast.d.ts +13 -0
  118. package/dist/detect/ast-rules/package-hallucination-ast.d.ts.map +1 -0
  119. package/dist/detect/ast-rules/package-hallucination-ast.js +607 -0
  120. package/dist/detect/ast-rules/package-hallucination-ast.js.map +1 -0
  121. package/dist/detect/ast-rules/prompt-hygiene-ast.d.ts +15 -0
  122. package/dist/detect/ast-rules/prompt-hygiene-ast.d.ts.map +1 -0
  123. package/dist/detect/ast-rules/prompt-hygiene-ast.js +332 -0
  124. package/dist/detect/ast-rules/prompt-hygiene-ast.js.map +1 -0
  125. package/dist/detect/ast-rules/rag-safety-ast.d.ts +18 -0
  126. package/dist/detect/ast-rules/rag-safety-ast.d.ts.map +1 -0
  127. package/dist/detect/ast-rules/rag-safety-ast.js +640 -0
  128. package/dist/detect/ast-rules/rag-safety-ast.js.map +1 -0
  129. package/dist/detect/ast-rules/request-validation-ast.d.ts +13 -0
  130. package/dist/detect/ast-rules/request-validation-ast.d.ts.map +1 -0
  131. package/dist/detect/ast-rules/request-validation-ast.js +116 -0
  132. package/dist/detect/ast-rules/request-validation-ast.js.map +1 -0
  133. package/dist/detect/ast-rules/risky-imports-ast.d.ts +14 -0
  134. package/dist/detect/ast-rules/risky-imports-ast.d.ts.map +1 -0
  135. package/dist/detect/ast-rules/risky-imports-ast.js +114 -0
  136. package/dist/detect/ast-rules/risky-imports-ast.js.map +1 -0
  137. package/dist/detect/ast-rules/schema-validation-ast.d.ts +14 -0
  138. package/dist/detect/ast-rules/schema-validation-ast.d.ts.map +1 -0
  139. package/dist/detect/ast-rules/schema-validation-ast.js +233 -0
  140. package/dist/detect/ast-rules/schema-validation-ast.js.map +1 -0
  141. package/dist/detect/ast-rules/secret-patterns-ast.d.ts +17 -0
  142. package/dist/detect/ast-rules/secret-patterns-ast.d.ts.map +1 -0
  143. package/dist/detect/ast-rules/secret-patterns-ast.js +199 -0
  144. package/dist/detect/ast-rules/secret-patterns-ast.js.map +1 -0
  145. package/dist/detect/ast-rules/security-headers-ast.d.ts +14 -0
  146. package/dist/detect/ast-rules/security-headers-ast.d.ts.map +1 -0
  147. package/dist/detect/ast-rules/security-headers-ast.js +187 -0
  148. package/dist/detect/ast-rules/security-headers-ast.js.map +1 -0
  149. package/dist/detect/ast-rules/sql-injection-ast.d.ts +17 -0
  150. package/dist/detect/ast-rules/sql-injection-ast.d.ts.map +1 -0
  151. package/dist/detect/ast-rules/sql-injection-ast.js +497 -0
  152. package/dist/detect/ast-rules/sql-injection-ast.js.map +1 -0
  153. package/dist/detect/ast-rules/ssrf-ast.d.ts +14 -0
  154. package/dist/detect/ast-rules/ssrf-ast.d.ts.map +1 -0
  155. package/dist/detect/ast-rules/ssrf-ast.js +573 -0
  156. package/dist/detect/ast-rules/ssrf-ast.js.map +1 -0
  157. package/dist/detect/ast-rules/taint-fix-templates.d.ts +18 -0
  158. package/dist/detect/ast-rules/taint-fix-templates.d.ts.map +1 -0
  159. package/dist/detect/ast-rules/taint-fix-templates.js +92 -0
  160. package/dist/detect/ast-rules/taint-fix-templates.js.map +1 -0
  161. package/dist/detect/ast-rules/taint-flow-ast.d.ts +24 -0
  162. package/dist/detect/ast-rules/taint-flow-ast.d.ts.map +1 -0
  163. package/dist/detect/ast-rules/taint-flow-ast.js +340 -0
  164. package/dist/detect/ast-rules/taint-flow-ast.js.map +1 -0
  165. package/dist/detect/ast-rules/variables-ast.d.ts +24 -0
  166. package/dist/detect/ast-rules/variables-ast.d.ts.map +1 -0
  167. package/dist/detect/ast-rules/variables-ast.js +362 -0
  168. package/dist/detect/ast-rules/variables-ast.js.map +1 -0
  169. package/dist/detect/ast-rules/weak-crypto-ast.d.ts +15 -0
  170. package/dist/detect/ast-rules/weak-crypto-ast.d.ts.map +1 -0
  171. package/dist/detect/ast-rules/weak-crypto-ast.js +406 -0
  172. package/dist/detect/ast-rules/weak-crypto-ast.js.map +1 -0
  173. package/dist/detect/ast-rules/xxe-ast.d.ts +13 -0
  174. package/dist/detect/ast-rules/xxe-ast.d.ts.map +1 -0
  175. package/dist/detect/ast-rules/xxe-ast.js +157 -0
  176. package/dist/detect/ast-rules/xxe-ast.js.map +1 -0
  177. package/dist/detect/config/agent-skill-injection.d.ts.map +1 -1
  178. package/dist/detect/config/agent-skill-injection.js +2 -24
  179. package/dist/detect/config/agent-skill-injection.js.map +1 -1
  180. package/dist/detect/config/index.d.ts +1 -0
  181. package/dist/detect/config/index.d.ts.map +1 -1
  182. package/dist/detect/config/index.js +3 -1
  183. package/dist/detect/config/index.js.map +1 -1
  184. package/dist/detect/config/osv-check.d.ts.map +1 -1
  185. package/dist/detect/config/osv-check.js +6 -1
  186. package/dist/detect/config/osv-check.js.map +1 -1
  187. package/dist/detect/config/package-check.d.ts.map +1 -1
  188. package/dist/detect/config/package-check.js +6 -1
  189. package/dist/detect/config/package-check.js.map +1 -1
  190. package/dist/detect/config/rules-file-backdoor.d.ts +36 -0
  191. package/dist/detect/config/rules-file-backdoor.d.ts.map +1 -0
  192. package/dist/detect/config/rules-file-backdoor.js +379 -0
  193. package/dist/detect/config/rules-file-backdoor.js.map +1 -0
  194. package/dist/detect/index.d.ts +43 -6
  195. package/dist/detect/index.d.ts.map +1 -1
  196. package/dist/detect/index.js +70 -7
  197. package/dist/detect/index.js.map +1 -1
  198. package/dist/detect/secrets/config-audit.d.ts +5 -0
  199. package/dist/detect/secrets/config-audit.d.ts.map +1 -1
  200. package/dist/detect/secrets/config-audit.js +131 -3
  201. package/dist/detect/secrets/config-audit.js.map +1 -1
  202. package/dist/detect/secrets/entropy.d.ts.map +1 -1
  203. package/dist/detect/secrets/entropy.js +180 -0
  204. package/dist/detect/secrets/entropy.js.map +1 -1
  205. package/dist/detect/secrets/index.d.ts +0 -2
  206. package/dist/detect/secrets/index.d.ts.map +1 -1
  207. package/dist/detect/secrets/index.js +7 -17
  208. package/dist/detect/secrets/index.js.map +1 -1
  209. package/dist/detect/structural/index.d.ts +15 -28
  210. package/dist/detect/structural/index.d.ts.map +1 -1
  211. package/dist/detect/structural/index.js +20 -497
  212. package/dist/detect/structural/index.js.map +1 -1
  213. package/dist/index.d.ts +3 -0
  214. package/dist/index.d.ts.map +1 -1
  215. package/dist/index.js +9 -1
  216. package/dist/index.js.map +1 -1
  217. package/dist/model/auth-helper-detector.d.ts.map +1 -1
  218. package/dist/model/auth-helper-detector.js +2 -7
  219. package/dist/model/auth-helper-detector.js.map +1 -1
  220. package/dist/model/import-resolver.d.ts.map +1 -1
  221. package/dist/model/import-resolver.js +94 -0
  222. package/dist/model/import-resolver.js.map +1 -1
  223. package/dist/model/imported-auth-detector.js +8 -8
  224. package/dist/model/imported-auth-detector.js.map +1 -1
  225. package/dist/model/index.d.ts +8 -0
  226. package/dist/model/index.d.ts.map +1 -1
  227. package/dist/model/index.js +198 -73
  228. package/dist/model/index.js.map +1 -1
  229. package/dist/model/module-graph.d.ts.map +1 -1
  230. package/dist/model/module-graph.js +22 -9
  231. package/dist/model/module-graph.js.map +1 -1
  232. package/dist/model/project-context.d.ts +1 -1
  233. package/dist/model/project-context.d.ts.map +1 -1
  234. package/dist/model/project-context.js +34 -0
  235. package/dist/model/project-context.js.map +1 -1
  236. package/dist/model/route-auth-resolver.d.ts.map +1 -1
  237. package/dist/model/route-auth-resolver.js +17 -2
  238. package/dist/model/route-auth-resolver.js.map +1 -1
  239. package/dist/model/route-discovery/index.js +1 -1
  240. package/dist/model/route-discovery/index.js.map +1 -1
  241. package/dist/model/route-discovery/nextjs.js +1 -1
  242. package/dist/model/route-discovery/nextjs.js.map +1 -1
  243. package/dist/model/route-discovery/python.d.ts +6 -3
  244. package/dist/model/route-discovery/python.d.ts.map +1 -1
  245. package/dist/model/route-discovery/python.js +132 -9
  246. package/dist/model/route-discovery/python.js.map +1 -1
  247. package/dist/model/route-discovery/types.d.ts +1 -1
  248. package/dist/model/route-discovery/types.d.ts.map +1 -1
  249. package/dist/model/route-discovery/utils.d.ts +8 -0
  250. package/dist/model/route-discovery/utils.d.ts.map +1 -1
  251. package/dist/model/route-discovery/utils.js +70 -0
  252. package/dist/model/route-discovery/utils.js.map +1 -1
  253. package/dist/model/taint-types.d.ts +0 -4
  254. package/dist/model/taint-types.d.ts.map +1 -1
  255. package/dist/parse/ast.d.ts +58 -0
  256. package/dist/parse/ast.d.ts.map +1 -0
  257. package/dist/parse/ast.js +230 -0
  258. package/dist/parse/ast.js.map +1 -0
  259. package/dist/parse/call-graph.d.ts +41 -0
  260. package/dist/parse/call-graph.d.ts.map +1 -0
  261. package/dist/parse/call-graph.js +386 -0
  262. package/dist/parse/call-graph.js.map +1 -0
  263. package/dist/parse/file-classifier.d.ts +11 -0
  264. package/dist/parse/file-classifier.d.ts.map +1 -1
  265. package/dist/parse/file-classifier.js +63 -15
  266. package/dist/parse/file-classifier.js.map +1 -1
  267. package/dist/parse/node-index.d.ts +32 -0
  268. package/dist/parse/node-index.d.ts.map +1 -0
  269. package/dist/parse/node-index.js +103 -0
  270. package/dist/parse/node-index.js.map +1 -0
  271. package/dist/parse/type-extractor.d.ts +50 -0
  272. package/dist/parse/type-extractor.d.ts.map +1 -0
  273. package/dist/parse/type-extractor.js +243 -0
  274. package/dist/parse/type-extractor.js.map +1 -0
  275. package/dist/pipeline/config.d.ts +10 -2
  276. package/dist/pipeline/config.d.ts.map +1 -1
  277. package/dist/pipeline/config.js.map +1 -1
  278. package/dist/pipeline/index.d.ts +3 -3
  279. package/dist/pipeline/index.d.ts.map +1 -1
  280. package/dist/pipeline/index.js +214 -65
  281. package/dist/pipeline/index.js.map +1 -1
  282. package/dist/pipeline/modes/incremental.d.ts.map +1 -1
  283. package/dist/pipeline/modes/incremental.js +2 -7
  284. package/dist/pipeline/modes/incremental.js.map +1 -1
  285. package/dist/postprocess/dedup.d.ts +5 -2
  286. package/dist/postprocess/dedup.d.ts.map +1 -1
  287. package/dist/postprocess/dedup.js +47 -16
  288. package/dist/postprocess/dedup.js.map +1 -1
  289. package/dist/report/build-result.d.ts +9 -4
  290. package/dist/report/build-result.d.ts.map +1 -1
  291. package/dist/report/build-result.js +15 -4
  292. package/dist/report/build-result.js.map +1 -1
  293. package/dist/report/formatters/cli-terminal.d.ts +1 -1
  294. package/dist/report/formatters/cli-terminal.d.ts.map +1 -1
  295. package/dist/report/formatters/cli-terminal.js +434 -231
  296. package/dist/report/formatters/cli-terminal.js.map +1 -1
  297. package/dist/report/sanitize.d.ts +10 -0
  298. package/dist/report/sanitize.d.ts.map +1 -0
  299. package/dist/report/sanitize.js +19 -0
  300. package/dist/report/sanitize.js.map +1 -0
  301. package/dist/score/adjustments.d.ts +20 -2
  302. package/dist/score/adjustments.d.ts.map +1 -1
  303. package/dist/score/adjustments.js +108 -37
  304. package/dist/score/adjustments.js.map +1 -1
  305. package/dist/score/confidence.d.ts +6 -0
  306. package/dist/score/confidence.d.ts.map +1 -1
  307. package/dist/score/confidence.js +10 -4
  308. package/dist/score/confidence.js.map +1 -1
  309. package/dist/score/evidence.d.ts +25 -0
  310. package/dist/score/evidence.d.ts.map +1 -0
  311. package/dist/score/evidence.js +51 -0
  312. package/dist/score/evidence.js.map +1 -0
  313. package/dist/score/index.d.ts +3 -1
  314. package/dist/score/index.d.ts.map +1 -1
  315. package/dist/score/index.js +25 -50
  316. package/dist/score/index.js.map +1 -1
  317. package/dist/score/types.d.ts +5 -1
  318. package/dist/score/types.d.ts.map +1 -1
  319. package/dist/shared/category-filter.d.ts.map +1 -1
  320. package/dist/shared/category-filter.js +12 -0
  321. package/dist/shared/category-filter.js.map +1 -1
  322. package/dist/shared/regex-utils.d.ts +3 -0
  323. package/dist/shared/regex-utils.d.ts.map +1 -0
  324. package/dist/shared/regex-utils.js +8 -0
  325. package/dist/shared/regex-utils.js.map +1 -0
  326. package/dist/shared/registry-clients.d.ts +7 -0
  327. package/dist/shared/registry-clients.d.ts.map +1 -1
  328. package/dist/shared/registry-clients.js +94 -17
  329. package/dist/shared/registry-clients.js.map +1 -1
  330. package/dist/shared/rules/metadata.d.ts.map +1 -1
  331. package/dist/shared/rules/metadata.js +17 -0
  332. package/dist/shared/rules/metadata.js.map +1 -1
  333. package/dist/shared/types.d.ts +60 -16
  334. package/dist/shared/types.d.ts.map +1 -1
  335. package/dist/shared/types.js +38 -21
  336. package/dist/shared/types.js.map +1 -1
  337. package/dist/taint/async-flow.d.ts +44 -0
  338. package/dist/taint/async-flow.d.ts.map +1 -0
  339. package/dist/taint/async-flow.js +271 -0
  340. package/dist/taint/async-flow.js.map +1 -0
  341. package/dist/taint/cfg-builder.d.ts +35 -0
  342. package/dist/taint/cfg-builder.d.ts.map +1 -0
  343. package/dist/taint/cfg-builder.js +980 -0
  344. package/dist/taint/cfg-builder.js.map +1 -0
  345. package/dist/taint/cfg-types.d.ts +76 -0
  346. package/dist/taint/cfg-types.d.ts.map +1 -0
  347. package/dist/taint/cfg-types.js +13 -0
  348. package/dist/taint/cfg-types.js.map +1 -0
  349. package/dist/taint/constant-propagation.d.ts +34 -0
  350. package/dist/taint/constant-propagation.d.ts.map +1 -0
  351. package/dist/taint/constant-propagation.js +164 -0
  352. package/dist/taint/constant-propagation.js.map +1 -0
  353. package/dist/taint/cross-file-analyzer.d.ts +27 -0
  354. package/dist/taint/cross-file-analyzer.d.ts.map +1 -0
  355. package/dist/taint/cross-file-analyzer.js +99 -0
  356. package/dist/taint/cross-file-analyzer.js.map +1 -0
  357. package/dist/taint/cross-file-index.d.ts +59 -0
  358. package/dist/taint/cross-file-index.d.ts.map +1 -0
  359. package/dist/taint/cross-file-index.js +183 -0
  360. package/dist/taint/cross-file-index.js.map +1 -0
  361. package/dist/taint/def-use.d.ts +27 -0
  362. package/dist/taint/def-use.d.ts.map +1 -0
  363. package/dist/taint/def-use.js +519 -0
  364. package/dist/taint/def-use.js.map +1 -0
  365. package/dist/taint/file-analysis-cache.d.ts +47 -0
  366. package/dist/taint/file-analysis-cache.d.ts.map +1 -0
  367. package/dist/taint/file-analysis-cache.js +107 -0
  368. package/dist/taint/file-analysis-cache.js.map +1 -0
  369. package/dist/taint/framework-models.d.ts +77 -0
  370. package/dist/taint/framework-models.d.ts.map +1 -0
  371. package/dist/taint/framework-models.js +258 -0
  372. package/dist/taint/framework-models.js.map +1 -0
  373. package/dist/taint/helpers.d.ts +31 -0
  374. package/dist/taint/helpers.d.ts.map +1 -0
  375. package/dist/taint/helpers.js +130 -0
  376. package/dist/taint/helpers.js.map +1 -0
  377. package/dist/taint/index.d.ts +28 -0
  378. package/dist/taint/index.d.ts.map +1 -0
  379. package/dist/taint/index.js +77 -0
  380. package/dist/taint/index.js.map +1 -0
  381. package/dist/taint/llm-registry.d.ts +47 -0
  382. package/dist/taint/llm-registry.d.ts.map +1 -0
  383. package/dist/taint/llm-registry.js +152 -0
  384. package/dist/taint/llm-registry.js.map +1 -0
  385. package/dist/taint/llm-risk-scoring.d.ts +54 -0
  386. package/dist/taint/llm-risk-scoring.d.ts.map +1 -0
  387. package/dist/taint/llm-risk-scoring.js +376 -0
  388. package/dist/taint/llm-risk-scoring.js.map +1 -0
  389. package/dist/taint/propagation-types.d.ts +104 -0
  390. package/dist/taint/propagation-types.d.ts.map +1 -0
  391. package/dist/taint/propagation-types.js +98 -0
  392. package/dist/taint/propagation-types.js.map +1 -0
  393. package/dist/taint/propagation.d.ts +111 -0
  394. package/dist/taint/propagation.d.ts.map +1 -0
  395. package/dist/taint/propagation.js +1576 -0
  396. package/dist/taint/propagation.js.map +1 -0
  397. package/dist/taint/sanitizer-registry.d.ts +26 -0
  398. package/dist/taint/sanitizer-registry.d.ts.map +1 -0
  399. package/dist/taint/sanitizer-registry.js +422 -0
  400. package/dist/taint/sanitizer-registry.js.map +1 -0
  401. package/dist/taint/sink-classifier.d.ts +27 -0
  402. package/dist/taint/sink-classifier.d.ts.map +1 -0
  403. package/dist/taint/sink-classifier.js +1166 -0
  404. package/dist/taint/sink-classifier.js.map +1 -0
  405. package/dist/taint/source-classifier.d.ts +29 -0
  406. package/dist/taint/source-classifier.d.ts.map +1 -0
  407. package/dist/taint/source-classifier.js +814 -0
  408. package/dist/taint/source-classifier.js.map +1 -0
  409. package/dist/taint/taint-analyzer.d.ts +33 -0
  410. package/dist/taint/taint-analyzer.d.ts.map +1 -0
  411. package/dist/taint/taint-analyzer.js +88 -0
  412. package/dist/taint/taint-analyzer.js.map +1 -0
  413. package/dist/taint/taint-summary.d.ts +37 -0
  414. package/dist/taint/taint-summary.d.ts.map +1 -0
  415. package/dist/taint/taint-summary.js +293 -0
  416. package/dist/taint/taint-summary.js.map +1 -0
  417. package/dist/taint/types.d.ts +47 -0
  418. package/dist/taint/types.d.ts.map +1 -0
  419. package/dist/taint/types.js +19 -0
  420. package/dist/taint/types.js.map +1 -0
  421. package/dist/tiers.d.ts +2 -2
  422. package/dist/tiers.js +1 -1
  423. package/dist/validate/clients.d.ts +2 -1
  424. package/dist/validate/clients.d.ts.map +1 -1
  425. package/dist/validate/clients.js +3 -2
  426. package/dist/validate/clients.js.map +1 -1
  427. package/dist/validate/index.d.ts +5 -6
  428. package/dist/validate/index.d.ts.map +1 -1
  429. package/dist/validate/index.js +22 -21
  430. package/dist/validate/index.js.map +1 -1
  431. package/dist/validate/prompts/modules/ai-patterns.d.ts +1 -1
  432. package/dist/validate/prompts/modules/ai-patterns.d.ts.map +1 -1
  433. package/dist/validate/prompts/modules/ai-patterns.js +16 -0
  434. package/dist/validate/prompts/modules/ai-patterns.js.map +1 -1
  435. package/dist/validate/prompts/modules/common.d.ts +1 -1
  436. package/dist/validate/prompts/modules/common.d.ts.map +1 -1
  437. package/dist/validate/prompts/modules/common.js +12 -3
  438. package/dist/validate/prompts/modules/common.js.map +1 -1
  439. package/dist/validate/providers/anthropic.d.ts +4 -4
  440. package/dist/validate/providers/anthropic.d.ts.map +1 -1
  441. package/dist/validate/providers/anthropic.js +85 -58
  442. package/dist/validate/providers/anthropic.js.map +1 -1
  443. package/dist/validate/providers/openai.d.ts +4 -4
  444. package/dist/validate/providers/openai.d.ts.map +1 -1
  445. package/dist/validate/providers/openai.js +149 -99
  446. package/dist/validate/providers/openai.js.map +1 -1
  447. package/dist/validate/request-builder.d.ts +2 -8
  448. package/dist/validate/request-builder.d.ts.map +1 -1
  449. package/dist/validate/request-builder.js +4 -34
  450. package/dist/validate/request-builder.js.map +1 -1
  451. package/dist/validate/types.d.ts +9 -0
  452. package/dist/validate/types.d.ts.map +1 -1
  453. package/dist/validate/types.js.map +1 -1
  454. package/dist/validate/utils/path-helpers.js +2 -2
  455. package/dist/validate/utils/path-helpers.js.map +1 -1
  456. package/dist/validate/utils/response-parser.d.ts +10 -0
  457. package/dist/validate/utils/response-parser.d.ts.map +1 -1
  458. package/dist/validate/utils/response-parser.js +21 -2
  459. package/dist/validate/utils/response-parser.js.map +1 -1
  460. package/dist/validate/utils/retry.d.ts.map +1 -1
  461. package/dist/validate/utils/retry.js +19 -4
  462. package/dist/validate/utils/retry.js.map +1 -1
  463. package/package.json +7 -4
  464. package/src/__tests__/benchmark/fixtures/layer2/ai-execution-sinks.ts +1 -1
  465. package/src/__tests__/benchmark/planted-benchmark.test.ts +337 -0
  466. package/src/__tests__/benchmark/utils/test-runner.ts +38 -4
  467. package/src/__tests__/category-filter.test.ts +5 -1
  468. package/src/__tests__/context-engine/route-discovery/python.test.ts +726 -0
  469. package/src/__tests__/detect/ast-rules.test.ts +1043 -0
  470. package/src/__tests__/detect/offline-mode.test.ts +147 -0
  471. package/src/__tests__/detect/postinstall-enrichment.test.ts +300 -0
  472. package/src/__tests__/detect/python-ast-rules.test.ts +569 -0
  473. package/src/__tests__/detect/python-helpers.test.ts +536 -0
  474. package/src/__tests__/detect/python-sast-rules.test.ts +453 -0
  475. package/src/__tests__/detect/rules-file-backdoor-decoders.test.ts +151 -0
  476. package/src/__tests__/detect/rules-file-backdoor.test.ts +284 -0
  477. package/src/__tests__/detect/taint-fix-templates.test.ts +150 -0
  478. package/src/__tests__/detect/taint-path-serialization.test.ts +170 -0
  479. package/src/__tests__/parse/call-graph.test.ts +300 -0
  480. package/src/__tests__/parse/python-parser.test.ts +274 -0
  481. package/src/__tests__/regression/known-false-positives.test.ts +491 -9
  482. package/src/__tests__/regression/rules-file-backdoor.test.ts +137 -0
  483. package/src/__tests__/score/adjustments.test.ts +34 -16
  484. package/src/__tests__/score/confidence.test.ts +84 -57
  485. package/src/__tests__/score/evidence-scoring.test.ts +249 -0
  486. package/src/__tests__/score/evidence.test.ts +144 -0
  487. package/src/__tests__/score/scoring-integration.test.ts +56 -34
  488. package/src/__tests__/score/taint-adjustments.test.ts +14 -228
  489. package/src/__tests__/snapshots/__snapshots__/scan-depth.test.ts.snap +65 -59
  490. package/src/__tests__/snapshots/scan-depth.test.ts +39 -7
  491. package/src/__tests__/taint/async-flow.test.ts +247 -0
  492. package/src/__tests__/taint/cfg-builder.test.ts +835 -0
  493. package/src/__tests__/taint/constant-propagation.test.ts +302 -0
  494. package/src/__tests__/taint/cross-file-index.test.ts +683 -0
  495. package/src/__tests__/taint/cross-file-integration.test.ts +275 -0
  496. package/src/__tests__/taint/cross-file-propagation.test.ts +910 -0
  497. package/src/__tests__/taint/def-use.test.ts +132 -0
  498. package/src/__tests__/taint/field-sensitive-sinks.test.ts +179 -0
  499. package/src/__tests__/taint/field-sensitivity.test.ts +342 -0
  500. package/src/__tests__/taint/file-analysis-cache.test.ts +290 -0
  501. package/src/__tests__/taint/framework-models.test.ts +227 -0
  502. package/src/__tests__/taint/llm-flow-graph.test.ts +850 -0
  503. package/src/__tests__/taint/llm-risk-scoring.test.ts +439 -0
  504. package/src/__tests__/taint/performance-parity.test.ts +315 -0
  505. package/src/__tests__/taint/propagation.test.ts +621 -0
  506. package/src/__tests__/taint/python-cross-file.test.ts +494 -0
  507. package/src/__tests__/taint/python-taint.test.ts +1344 -0
  508. package/src/__tests__/taint/sanitizer-registry.test.ts +304 -0
  509. package/src/__tests__/taint/sanitizer-regression.test.ts +111 -0
  510. package/src/__tests__/taint/sink-classifier.test.ts +537 -0
  511. package/src/__tests__/taint/source-classifier.test.ts +367 -0
  512. package/src/__tests__/taint/taint-pipeline.test.ts +418 -0
  513. package/src/__tests__/taint/taint-smoke.test.ts +400 -0
  514. package/src/__tests__/taint/taint-summary.test.ts +472 -0
  515. package/src/detect/ai-code/index.ts +6 -11
  516. package/src/detect/ast-rules/agent-tools-ast.ts +861 -0
  517. package/src/detect/ast-rules/ai-fingerprinting-ast.ts +451 -0
  518. package/src/detect/ast-rules/auth-patterns-ast.ts +304 -0
  519. package/src/detect/ast-rules/byok-ast.ts +195 -0
  520. package/src/detect/ast-rules/child-process-ast.ts +276 -0
  521. package/src/detect/ast-rules/dangerous-eval-ast.ts +227 -0
  522. package/src/detect/ast-rules/data-exposure-ast.ts +162 -0
  523. package/src/detect/ast-rules/dom-xss-ast.ts +260 -0
  524. package/src/detect/ast-rules/endpoint-protection-ast.ts +231 -0
  525. package/src/detect/ast-rules/entropy-ast.ts +268 -0
  526. package/src/detect/ast-rules/flask-debug-ast.ts +148 -0
  527. package/src/detect/ast-rules/framework-checks-ast.ts +200 -0
  528. package/src/detect/ast-rules/helpers/call-analysis.ts +256 -0
  529. package/src/detect/ast-rules/helpers/context-detection.ts +277 -0
  530. package/src/detect/ast-rules/helpers/control-flow.ts +179 -0
  531. package/src/detect/ast-rules/helpers/import-analysis.ts +185 -0
  532. package/src/detect/ast-rules/helpers/index.ts +133 -0
  533. package/src/detect/ast-rules/helpers/python-helpers.ts +1054 -0
  534. package/src/detect/ast-rules/helpers/scope-analysis.ts +224 -0
  535. package/src/detect/ast-rules/helpers/string-analysis.ts +215 -0
  536. package/src/detect/ast-rules/helpers/type-extraction.ts +138 -0
  537. package/src/detect/ast-rules/helpers/user-input.ts +256 -0
  538. package/src/detect/ast-rules/index.ts +311 -0
  539. package/src/detect/ast-rules/json-parse-ast.ts +162 -0
  540. package/src/detect/ast-rules/log-injection-ast.ts +243 -0
  541. package/src/detect/ast-rules/logic-gates-ast.ts +343 -0
  542. package/src/detect/ast-rules/mcp-security-ast.ts +808 -0
  543. package/src/detect/ast-rules/model-supply-chain-ast.ts +202 -0
  544. package/src/detect/ast-rules/package-hallucination-ast.ts +664 -0
  545. package/src/detect/ast-rules/prompt-hygiene-ast.ts +329 -0
  546. package/src/detect/ast-rules/rag-safety-ast.ts +689 -0
  547. package/src/detect/ast-rules/request-validation-ast.ts +122 -0
  548. package/src/detect/ast-rules/risky-imports-ast.ts +133 -0
  549. package/src/detect/ast-rules/schema-validation-ast.ts +244 -0
  550. package/src/detect/ast-rules/secret-patterns-ast.ts +223 -0
  551. package/src/detect/ast-rules/security-headers-ast.ts +206 -0
  552. package/src/detect/ast-rules/sql-injection-ast.ts +614 -0
  553. package/src/detect/ast-rules/ssrf-ast.ts +601 -0
  554. package/src/detect/ast-rules/taint-fix-templates.ts +108 -0
  555. package/src/detect/ast-rules/taint-flow-ast.ts +416 -0
  556. package/src/detect/ast-rules/variables-ast.ts +446 -0
  557. package/src/detect/ast-rules/weak-crypto-ast.ts +441 -0
  558. package/src/detect/ast-rules/xxe-ast.ts +184 -0
  559. package/src/detect/config/agent-skill-injection.ts +2 -24
  560. package/src/detect/config/index.ts +1 -0
  561. package/src/detect/config/osv-check.ts +6 -1
  562. package/src/detect/config/package-check.ts +6 -1
  563. package/src/detect/config/rules-file-backdoor.ts +438 -0
  564. package/src/detect/index.ts +146 -52
  565. package/src/detect/secrets/config-audit.ts +148 -3
  566. package/src/detect/secrets/entropy.ts +195 -0
  567. package/src/detect/secrets/index.ts +7 -16
  568. package/src/detect/structural/index.ts +23 -566
  569. package/src/index.ts +7 -0
  570. package/src/model/auth-helper-detector.ts +1 -7
  571. package/src/model/import-resolver.ts +104 -0
  572. package/src/model/imported-auth-detector.ts +1 -1
  573. package/src/model/index.ts +240 -80
  574. package/src/model/module-graph.ts +17 -5
  575. package/src/model/project-context.ts +28 -1
  576. package/src/model/route-auth-resolver.ts +18 -3
  577. package/src/model/route-discovery/index.ts +1 -1
  578. package/src/model/route-discovery/nextjs.ts +1 -1
  579. package/src/model/route-discovery/python.ts +156 -9
  580. package/src/model/route-discovery/types.ts +1 -1
  581. package/src/model/route-discovery/utils.ts +73 -0
  582. package/src/model/taint-types.ts +1 -6
  583. package/src/parse/ast.ts +271 -0
  584. package/src/parse/call-graph.ts +419 -0
  585. package/src/parse/file-classifier.ts +69 -15
  586. package/src/parse/node-index.ts +118 -0
  587. package/src/parse/type-extractor.ts +293 -0
  588. package/src/pipeline/config.ts +10 -1
  589. package/src/pipeline/index.ts +475 -187
  590. package/src/pipeline/modes/incremental.ts +1 -7
  591. package/src/postprocess/dedup.ts +48 -17
  592. package/src/report/build-result.ts +57 -29
  593. package/src/report/formatters/cli-terminal.ts +731 -415
  594. package/src/report/sanitize.ts +27 -0
  595. package/src/score/adjustments.ts +113 -40
  596. package/src/score/confidence.ts +10 -5
  597. package/src/score/evidence.ts +55 -0
  598. package/src/score/index.ts +27 -55
  599. package/src/score/types.ts +4 -0
  600. package/src/shared/category-filter.ts +12 -0
  601. package/src/shared/regex-utils.ts +4 -0
  602. package/src/shared/registry-clients.ts +106 -18
  603. package/src/shared/rules/__tests__/metadata.test.ts +5 -1
  604. package/src/shared/rules/metadata.ts +19 -0
  605. package/src/shared/types.ts +373 -254
  606. package/src/taint/async-flow.ts +301 -0
  607. package/src/taint/cfg-builder.ts +1127 -0
  608. package/src/taint/cfg-types.ts +110 -0
  609. package/src/taint/constant-propagation.ts +170 -0
  610. package/src/taint/cross-file-analyzer.ts +118 -0
  611. package/src/taint/cross-file-index.ts +275 -0
  612. package/src/taint/def-use.ts +556 -0
  613. package/src/taint/file-analysis-cache.ts +145 -0
  614. package/src/taint/framework-models.ts +313 -0
  615. package/src/taint/helpers.ts +138 -0
  616. package/src/taint/index.ts +71 -0
  617. package/src/taint/llm-registry.ts +174 -0
  618. package/src/taint/llm-risk-scoring.ts +412 -0
  619. package/src/taint/propagation-types.ts +188 -0
  620. package/src/taint/propagation.ts +1750 -0
  621. package/src/taint/sanitizer-registry.ts +490 -0
  622. package/src/taint/sink-classifier.ts +1402 -0
  623. package/src/taint/source-classifier.ts +859 -0
  624. package/src/taint/taint-analyzer.ts +112 -0
  625. package/src/taint/taint-summary.ts +341 -0
  626. package/src/taint/types.ts +86 -0
  627. package/src/tiers.ts +2 -2
  628. package/src/validate/clients.ts +3 -2
  629. package/src/validate/index.ts +89 -53
  630. package/src/validate/prompts/modules/ai-patterns.ts +16 -0
  631. package/src/validate/prompts/modules/common.ts +12 -3
  632. package/src/validate/providers/anthropic.ts +254 -148
  633. package/src/validate/providers/openai.ts +363 -218
  634. package/src/validate/request-builder.ts +2 -45
  635. package/src/validate/types.ts +9 -0
  636. package/src/validate/utils/path-helpers.ts +2 -2
  637. package/src/validate/utils/response-parser.ts +32 -3
  638. package/src/validate/utils/retry.ts +19 -4
  639. package/dist/ai-context/index.d.ts +0 -6
  640. package/dist/ai-context/index.d.ts.map +0 -1
  641. package/dist/ai-context/index.js +0 -13
  642. package/dist/ai-context/index.js.map +0 -1
  643. package/dist/ai-context/manager.d.ts +0 -67
  644. package/dist/ai-context/manager.d.ts.map +0 -1
  645. package/dist/ai-context/manager.js +0 -104
  646. package/dist/ai-context/manager.js.map +0 -1
  647. package/dist/baseline/diff.d.ts +0 -32
  648. package/dist/baseline/diff.d.ts.map +0 -1
  649. package/dist/baseline/diff.js +0 -119
  650. package/dist/baseline/diff.js.map +0 -1
  651. package/dist/baseline/index.d.ts +0 -9
  652. package/dist/baseline/index.d.ts.map +0 -1
  653. package/dist/baseline/index.js +0 -19
  654. package/dist/baseline/index.js.map +0 -1
  655. package/dist/baseline/manager.d.ts +0 -67
  656. package/dist/baseline/manager.d.ts.map +0 -1
  657. package/dist/baseline/manager.js +0 -180
  658. package/dist/baseline/manager.js.map +0 -1
  659. package/dist/baseline/types.d.ts +0 -91
  660. package/dist/baseline/types.d.ts.map +0 -1
  661. package/dist/baseline/types.js +0 -12
  662. package/dist/baseline/types.js.map +0 -1
  663. package/dist/category-filter.d.ts +0 -125
  664. package/dist/category-filter.d.ts.map +0 -1
  665. package/dist/category-filter.js +0 -360
  666. package/dist/category-filter.js.map +0 -1
  667. package/dist/detect/ai-code/agent-tools.d.ts +0 -22
  668. package/dist/detect/ai-code/agent-tools.d.ts.map +0 -1
  669. package/dist/detect/ai-code/agent-tools.js +0 -1509
  670. package/dist/detect/ai-code/agent-tools.js.map +0 -1
  671. package/dist/detect/ai-code/byok-patterns.d.ts +0 -15
  672. package/dist/detect/ai-code/byok-patterns.d.ts.map +0 -1
  673. package/dist/detect/ai-code/byok-patterns.js +0 -313
  674. package/dist/detect/ai-code/byok-patterns.js.map +0 -1
  675. package/dist/detect/ai-code/endpoint-protection.d.ts +0 -38
  676. package/dist/detect/ai-code/endpoint-protection.d.ts.map +0 -1
  677. package/dist/detect/ai-code/endpoint-protection.js +0 -349
  678. package/dist/detect/ai-code/endpoint-protection.js.map +0 -1
  679. package/dist/detect/ai-code/execution-sinks.d.ts +0 -21
  680. package/dist/detect/ai-code/execution-sinks.d.ts.map +0 -1
  681. package/dist/detect/ai-code/execution-sinks.js +0 -1158
  682. package/dist/detect/ai-code/execution-sinks.js.map +0 -1
  683. package/dist/detect/ai-code/fingerprinting.d.ts +0 -10
  684. package/dist/detect/ai-code/fingerprinting.d.ts.map +0 -1
  685. package/dist/detect/ai-code/fingerprinting.js +0 -665
  686. package/dist/detect/ai-code/fingerprinting.js.map +0 -1
  687. package/dist/detect/ai-code/mcp-security.d.ts +0 -20
  688. package/dist/detect/ai-code/mcp-security.d.ts.map +0 -1
  689. package/dist/detect/ai-code/mcp-security.js +0 -880
  690. package/dist/detect/ai-code/mcp-security.js.map +0 -1
  691. package/dist/detect/ai-code/model-supply-chain.d.ts +0 -23
  692. package/dist/detect/ai-code/model-supply-chain.d.ts.map +0 -1
  693. package/dist/detect/ai-code/model-supply-chain.js +0 -447
  694. package/dist/detect/ai-code/model-supply-chain.js.map +0 -1
  695. package/dist/detect/ai-code/package-hallucination.d.ts +0 -22
  696. package/dist/detect/ai-code/package-hallucination.d.ts.map +0 -1
  697. package/dist/detect/ai-code/package-hallucination.js +0 -841
  698. package/dist/detect/ai-code/package-hallucination.js.map +0 -1
  699. package/dist/detect/ai-code/prompt-hygiene.d.ts +0 -22
  700. package/dist/detect/ai-code/prompt-hygiene.d.ts.map +0 -1
  701. package/dist/detect/ai-code/prompt-hygiene.js +0 -1177
  702. package/dist/detect/ai-code/prompt-hygiene.js.map +0 -1
  703. package/dist/detect/ai-code/rag-safety.d.ts +0 -24
  704. package/dist/detect/ai-code/rag-safety.d.ts.map +0 -1
  705. package/dist/detect/ai-code/rag-safety.js +0 -913
  706. package/dist/detect/ai-code/rag-safety.js.map +0 -1
  707. package/dist/detect/ai-code/schema-validation.d.ts +0 -28
  708. package/dist/detect/ai-code/schema-validation.d.ts.map +0 -1
  709. package/dist/detect/ai-code/schema-validation.js +0 -378
  710. package/dist/detect/ai-code/schema-validation.js.map +0 -1
  711. package/dist/detect/secrets/patterns.d.ts +0 -11
  712. package/dist/detect/secrets/patterns.d.ts.map +0 -1
  713. package/dist/detect/secrets/patterns.js +0 -518
  714. package/dist/detect/secrets/patterns.js.map +0 -1
  715. package/dist/detect/secrets/weak-crypto.d.ts +0 -10
  716. package/dist/detect/secrets/weak-crypto.d.ts.map +0 -1
  717. package/dist/detect/secrets/weak-crypto.js +0 -432
  718. package/dist/detect/secrets/weak-crypto.js.map +0 -1
  719. package/dist/detect/structural/auth-patterns.d.ts +0 -22
  720. package/dist/detect/structural/auth-patterns.d.ts.map +0 -1
  721. package/dist/detect/structural/auth-patterns.js +0 -533
  722. package/dist/detect/structural/auth-patterns.js.map +0 -1
  723. package/dist/detect/structural/dangerous-functions/child-process.d.ts +0 -16
  724. package/dist/detect/structural/dangerous-functions/child-process.d.ts.map +0 -1
  725. package/dist/detect/structural/dangerous-functions/child-process.js +0 -74
  726. package/dist/detect/structural/dangerous-functions/child-process.js.map +0 -1
  727. package/dist/detect/structural/dangerous-functions/dom-xss.d.ts +0 -34
  728. package/dist/detect/structural/dangerous-functions/dom-xss.d.ts.map +0 -1
  729. package/dist/detect/structural/dangerous-functions/dom-xss.js +0 -230
  730. package/dist/detect/structural/dangerous-functions/dom-xss.js.map +0 -1
  731. package/dist/detect/structural/dangerous-functions/index.d.ts +0 -16
  732. package/dist/detect/structural/dangerous-functions/index.d.ts.map +0 -1
  733. package/dist/detect/structural/dangerous-functions/index.js +0 -1193
  734. package/dist/detect/structural/dangerous-functions/index.js.map +0 -1
  735. package/dist/detect/structural/dangerous-functions/json-parse.d.ts +0 -31
  736. package/dist/detect/structural/dangerous-functions/json-parse.d.ts.map +0 -1
  737. package/dist/detect/structural/dangerous-functions/json-parse.js +0 -326
  738. package/dist/detect/structural/dangerous-functions/json-parse.js.map +0 -1
  739. package/dist/detect/structural/dangerous-functions/math-random.d.ts +0 -111
  740. package/dist/detect/structural/dangerous-functions/math-random.d.ts.map +0 -1
  741. package/dist/detect/structural/dangerous-functions/math-random.js +0 -684
  742. package/dist/detect/structural/dangerous-functions/math-random.js.map +0 -1
  743. package/dist/detect/structural/dangerous-functions/patterns.d.ts +0 -21
  744. package/dist/detect/structural/dangerous-functions/patterns.d.ts.map +0 -1
  745. package/dist/detect/structural/dangerous-functions/patterns.js +0 -163
  746. package/dist/detect/structural/dangerous-functions/patterns.js.map +0 -1
  747. package/dist/detect/structural/dangerous-functions/request-validation.d.ts +0 -13
  748. package/dist/detect/structural/dangerous-functions/request-validation.d.ts.map +0 -1
  749. package/dist/detect/structural/dangerous-functions/request-validation.js +0 -126
  750. package/dist/detect/structural/dangerous-functions/request-validation.js.map +0 -1
  751. package/dist/detect/structural/dangerous-functions/utils/control-flow.d.ts +0 -24
  752. package/dist/detect/structural/dangerous-functions/utils/control-flow.d.ts.map +0 -1
  753. package/dist/detect/structural/dangerous-functions/utils/control-flow.js +0 -70
  754. package/dist/detect/structural/dangerous-functions/utils/control-flow.js.map +0 -1
  755. package/dist/detect/structural/dangerous-functions/utils/helpers.d.ts +0 -31
  756. package/dist/detect/structural/dangerous-functions/utils/helpers.d.ts.map +0 -1
  757. package/dist/detect/structural/dangerous-functions/utils/helpers.js +0 -147
  758. package/dist/detect/structural/dangerous-functions/utils/helpers.js.map +0 -1
  759. package/dist/detect/structural/dangerous-functions/utils/index.d.ts +0 -9
  760. package/dist/detect/structural/dangerous-functions/utils/index.d.ts.map +0 -1
  761. package/dist/detect/structural/dangerous-functions/utils/index.js +0 -23
  762. package/dist/detect/structural/dangerous-functions/utils/index.js.map +0 -1
  763. package/dist/detect/structural/dangerous-functions/utils/schema-validation.d.ts +0 -22
  764. package/dist/detect/structural/dangerous-functions/utils/schema-validation.d.ts.map +0 -1
  765. package/dist/detect/structural/dangerous-functions/utils/schema-validation.js +0 -102
  766. package/dist/detect/structural/dangerous-functions/utils/schema-validation.js.map +0 -1
  767. package/dist/detect/structural/data-exposure.d.ts +0 -19
  768. package/dist/detect/structural/data-exposure.d.ts.map +0 -1
  769. package/dist/detect/structural/data-exposure.js +0 -262
  770. package/dist/detect/structural/data-exposure.js.map +0 -1
  771. package/dist/detect/structural/framework-checks.d.ts +0 -10
  772. package/dist/detect/structural/framework-checks.d.ts.map +0 -1
  773. package/dist/detect/structural/framework-checks.js +0 -389
  774. package/dist/detect/structural/framework-checks.js.map +0 -1
  775. package/dist/detect/structural/log-injection.d.ts +0 -18
  776. package/dist/detect/structural/log-injection.d.ts.map +0 -1
  777. package/dist/detect/structural/log-injection.js +0 -217
  778. package/dist/detect/structural/log-injection.js.map +0 -1
  779. package/dist/detect/structural/logic-gates.d.ts +0 -10
  780. package/dist/detect/structural/logic-gates.d.ts.map +0 -1
  781. package/dist/detect/structural/logic-gates.js +0 -227
  782. package/dist/detect/structural/logic-gates.js.map +0 -1
  783. package/dist/detect/structural/risky-imports.d.ts +0 -10
  784. package/dist/detect/structural/risky-imports.d.ts.map +0 -1
  785. package/dist/detect/structural/risky-imports.js +0 -168
  786. package/dist/detect/structural/risky-imports.js.map +0 -1
  787. package/dist/detect/structural/security-headers.d.ts +0 -18
  788. package/dist/detect/structural/security-headers.d.ts.map +0 -1
  789. package/dist/detect/structural/security-headers.js +0 -196
  790. package/dist/detect/structural/security-headers.js.map +0 -1
  791. package/dist/detect/structural/ssrf-detection.d.ts +0 -18
  792. package/dist/detect/structural/ssrf-detection.d.ts.map +0 -1
  793. package/dist/detect/structural/ssrf-detection.js +0 -263
  794. package/dist/detect/structural/ssrf-detection.js.map +0 -1
  795. package/dist/detect/structural/variables.d.ts +0 -11
  796. package/dist/detect/structural/variables.d.ts.map +0 -1
  797. package/dist/detect/structural/variables.js +0 -159
  798. package/dist/detect/structural/variables.js.map +0 -1
  799. package/dist/detect/structural/xxe-detection.d.ts +0 -18
  800. package/dist/detect/structural/xxe-detection.d.ts.map +0 -1
  801. package/dist/detect/structural/xxe-detection.js +0 -245
  802. package/dist/detect/structural/xxe-detection.js.map +0 -1
  803. package/dist/filtering/context-adjustments.d.ts +0 -23
  804. package/dist/filtering/context-adjustments.d.ts.map +0 -1
  805. package/dist/filtering/context-adjustments.js +0 -100
  806. package/dist/filtering/context-adjustments.js.map +0 -1
  807. package/dist/filtering/index.d.ts +0 -3
  808. package/dist/filtering/index.d.ts.map +0 -1
  809. package/dist/filtering/index.js +0 -8
  810. package/dist/filtering/index.js.map +0 -1
  811. package/dist/filtering/pipeline.d.ts +0 -48
  812. package/dist/filtering/pipeline.d.ts.map +0 -1
  813. package/dist/filtering/pipeline.js +0 -76
  814. package/dist/filtering/pipeline.js.map +0 -1
  815. package/dist/formatters/ai-context.d.ts +0 -23
  816. package/dist/formatters/ai-context.d.ts.map +0 -1
  817. package/dist/formatters/ai-context.js +0 -238
  818. package/dist/formatters/ai-context.js.map +0 -1
  819. package/dist/formatters/cli-terminal.d.ts +0 -65
  820. package/dist/formatters/cli-terminal.d.ts.map +0 -1
  821. package/dist/formatters/cli-terminal.js +0 -735
  822. package/dist/formatters/cli-terminal.js.map +0 -1
  823. package/dist/formatters/github-comment.d.ts +0 -41
  824. package/dist/formatters/github-comment.d.ts.map +0 -1
  825. package/dist/formatters/github-comment.js +0 -370
  826. package/dist/formatters/github-comment.js.map +0 -1
  827. package/dist/formatters/grouping.d.ts +0 -52
  828. package/dist/formatters/grouping.d.ts.map +0 -1
  829. package/dist/formatters/grouping.js +0 -152
  830. package/dist/formatters/grouping.js.map +0 -1
  831. package/dist/formatters/ide/claude-code.d.ts +0 -17
  832. package/dist/formatters/ide/claude-code.d.ts.map +0 -1
  833. package/dist/formatters/ide/claude-code.js +0 -94
  834. package/dist/formatters/ide/claude-code.js.map +0 -1
  835. package/dist/formatters/ide/cursor.d.ts +0 -13
  836. package/dist/formatters/ide/cursor.d.ts.map +0 -1
  837. package/dist/formatters/ide/cursor.js +0 -125
  838. package/dist/formatters/ide/cursor.js.map +0 -1
  839. package/dist/formatters/ide/index.d.ts +0 -62
  840. package/dist/formatters/ide/index.d.ts.map +0 -1
  841. package/dist/formatters/ide/index.js +0 -184
  842. package/dist/formatters/ide/index.js.map +0 -1
  843. package/dist/formatters/ide/windsurf.d.ts +0 -13
  844. package/dist/formatters/ide/windsurf.d.ts.map +0 -1
  845. package/dist/formatters/ide/windsurf.js +0 -117
  846. package/dist/formatters/ide/windsurf.js.map +0 -1
  847. package/dist/formatters/index.d.ts +0 -11
  848. package/dist/formatters/index.d.ts.map +0 -1
  849. package/dist/formatters/index.js +0 -54
  850. package/dist/formatters/index.js.map +0 -1
  851. package/dist/formatters/vscode-diagnostic.d.ts +0 -103
  852. package/dist/formatters/vscode-diagnostic.d.ts.map +0 -1
  853. package/dist/formatters/vscode-diagnostic.js +0 -151
  854. package/dist/formatters/vscode-diagnostic.js.map +0 -1
  855. package/dist/layer1/comments.d.ts +0 -11
  856. package/dist/layer1/comments.d.ts.map +0 -1
  857. package/dist/layer1/comments.js +0 -203
  858. package/dist/layer1/comments.js.map +0 -1
  859. package/dist/layer1/config-audit.d.ts +0 -11
  860. package/dist/layer1/config-audit.d.ts.map +0 -1
  861. package/dist/layer1/config-audit.js +0 -311
  862. package/dist/layer1/config-audit.js.map +0 -1
  863. package/dist/layer1/config-mcp-audit.d.ts +0 -23
  864. package/dist/layer1/config-mcp-audit.d.ts.map +0 -1
  865. package/dist/layer1/config-mcp-audit.js +0 -239
  866. package/dist/layer1/config-mcp-audit.js.map +0 -1
  867. package/dist/layer1/entropy.d.ts +0 -11
  868. package/dist/layer1/entropy.d.ts.map +0 -1
  869. package/dist/layer1/entropy.js +0 -741
  870. package/dist/layer1/entropy.js.map +0 -1
  871. package/dist/layer1/file-flags.d.ts +0 -10
  872. package/dist/layer1/file-flags.d.ts.map +0 -1
  873. package/dist/layer1/file-flags.js +0 -119
  874. package/dist/layer1/file-flags.js.map +0 -1
  875. package/dist/layer1/index.d.ts +0 -38
  876. package/dist/layer1/index.d.ts.map +0 -1
  877. package/dist/layer1/index.js +0 -170
  878. package/dist/layer1/index.js.map +0 -1
  879. package/dist/layer1/patterns.d.ts +0 -11
  880. package/dist/layer1/patterns.d.ts.map +0 -1
  881. package/dist/layer1/patterns.js +0 -512
  882. package/dist/layer1/patterns.js.map +0 -1
  883. package/dist/layer1/urls.d.ts +0 -11
  884. package/dist/layer1/urls.d.ts.map +0 -1
  885. package/dist/layer1/urls.js +0 -444
  886. package/dist/layer1/urls.js.map +0 -1
  887. package/dist/layer1/weak-crypto.d.ts +0 -10
  888. package/dist/layer1/weak-crypto.d.ts.map +0 -1
  889. package/dist/layer1/weak-crypto.js +0 -428
  890. package/dist/layer1/weak-crypto.js.map +0 -1
  891. package/dist/layer2/ai-agent-tools.d.ts +0 -22
  892. package/dist/layer2/ai-agent-tools.d.ts.map +0 -1
  893. package/dist/layer2/ai-agent-tools.js +0 -1490
  894. package/dist/layer2/ai-agent-tools.js.map +0 -1
  895. package/dist/layer2/ai-endpoint-protection.d.ts +0 -38
  896. package/dist/layer2/ai-endpoint-protection.d.ts.map +0 -1
  897. package/dist/layer2/ai-endpoint-protection.js +0 -346
  898. package/dist/layer2/ai-endpoint-protection.js.map +0 -1
  899. package/dist/layer2/ai-execution-sinks.d.ts +0 -21
  900. package/dist/layer2/ai-execution-sinks.d.ts.map +0 -1
  901. package/dist/layer2/ai-execution-sinks.js +0 -1155
  902. package/dist/layer2/ai-execution-sinks.js.map +0 -1
  903. package/dist/layer2/ai-fingerprinting.d.ts +0 -10
  904. package/dist/layer2/ai-fingerprinting.d.ts.map +0 -1
  905. package/dist/layer2/ai-fingerprinting.js +0 -650
  906. package/dist/layer2/ai-fingerprinting.js.map +0 -1
  907. package/dist/layer2/ai-mcp-security.d.ts +0 -20
  908. package/dist/layer2/ai-mcp-security.d.ts.map +0 -1
  909. package/dist/layer2/ai-mcp-security.js +0 -877
  910. package/dist/layer2/ai-mcp-security.js.map +0 -1
  911. package/dist/layer2/ai-package-hallucination.d.ts +0 -22
  912. package/dist/layer2/ai-package-hallucination.d.ts.map +0 -1
  913. package/dist/layer2/ai-package-hallucination.js +0 -828
  914. package/dist/layer2/ai-package-hallucination.js.map +0 -1
  915. package/dist/layer2/ai-prompt-hygiene.d.ts +0 -22
  916. package/dist/layer2/ai-prompt-hygiene.d.ts.map +0 -1
  917. package/dist/layer2/ai-prompt-hygiene.js +0 -1156
  918. package/dist/layer2/ai-prompt-hygiene.js.map +0 -1
  919. package/dist/layer2/ai-rag-safety.d.ts +0 -24
  920. package/dist/layer2/ai-rag-safety.d.ts.map +0 -1
  921. package/dist/layer2/ai-rag-safety.js +0 -910
  922. package/dist/layer2/ai-rag-safety.js.map +0 -1
  923. package/dist/layer2/ai-schema-validation.d.ts +0 -28
  924. package/dist/layer2/ai-schema-validation.d.ts.map +0 -1
  925. package/dist/layer2/ai-schema-validation.js +0 -375
  926. package/dist/layer2/ai-schema-validation.js.map +0 -1
  927. package/dist/layer2/auth-antipatterns.d.ts +0 -22
  928. package/dist/layer2/auth-antipatterns.d.ts.map +0 -1
  929. package/dist/layer2/auth-antipatterns.js +0 -522
  930. package/dist/layer2/auth-antipatterns.js.map +0 -1
  931. package/dist/layer2/byok-patterns.d.ts +0 -15
  932. package/dist/layer2/byok-patterns.d.ts.map +0 -1
  933. package/dist/layer2/byok-patterns.js +0 -302
  934. package/dist/layer2/byok-patterns.js.map +0 -1
  935. package/dist/layer2/dangerous-functions/child-process.d.ts +0 -16
  936. package/dist/layer2/dangerous-functions/child-process.d.ts.map +0 -1
  937. package/dist/layer2/dangerous-functions/child-process.js +0 -74
  938. package/dist/layer2/dangerous-functions/child-process.js.map +0 -1
  939. package/dist/layer2/dangerous-functions/dom-xss.d.ts +0 -34
  940. package/dist/layer2/dangerous-functions/dom-xss.d.ts.map +0 -1
  941. package/dist/layer2/dangerous-functions/dom-xss.js +0 -230
  942. package/dist/layer2/dangerous-functions/dom-xss.js.map +0 -1
  943. package/dist/layer2/dangerous-functions/index.d.ts +0 -16
  944. package/dist/layer2/dangerous-functions/index.d.ts.map +0 -1
  945. package/dist/layer2/dangerous-functions/index.js +0 -1152
  946. package/dist/layer2/dangerous-functions/index.js.map +0 -1
  947. package/dist/layer2/dangerous-functions/json-parse.d.ts +0 -31
  948. package/dist/layer2/dangerous-functions/json-parse.d.ts.map +0 -1
  949. package/dist/layer2/dangerous-functions/json-parse.js +0 -319
  950. package/dist/layer2/dangerous-functions/json-parse.js.map +0 -1
  951. package/dist/layer2/dangerous-functions/math-random.d.ts +0 -111
  952. package/dist/layer2/dangerous-functions/math-random.d.ts.map +0 -1
  953. package/dist/layer2/dangerous-functions/math-random.js +0 -684
  954. package/dist/layer2/dangerous-functions/math-random.js.map +0 -1
  955. package/dist/layer2/dangerous-functions/patterns.d.ts +0 -21
  956. package/dist/layer2/dangerous-functions/patterns.d.ts.map +0 -1
  957. package/dist/layer2/dangerous-functions/patterns.js +0 -163
  958. package/dist/layer2/dangerous-functions/patterns.js.map +0 -1
  959. package/dist/layer2/dangerous-functions/request-validation.d.ts +0 -13
  960. package/dist/layer2/dangerous-functions/request-validation.d.ts.map +0 -1
  961. package/dist/layer2/dangerous-functions/request-validation.js +0 -119
  962. package/dist/layer2/dangerous-functions/request-validation.js.map +0 -1
  963. package/dist/layer2/dangerous-functions/utils/control-flow.d.ts +0 -24
  964. package/dist/layer2/dangerous-functions/utils/control-flow.d.ts.map +0 -1
  965. package/dist/layer2/dangerous-functions/utils/control-flow.js +0 -70
  966. package/dist/layer2/dangerous-functions/utils/control-flow.js.map +0 -1
  967. package/dist/layer2/dangerous-functions/utils/helpers.d.ts +0 -31
  968. package/dist/layer2/dangerous-functions/utils/helpers.d.ts.map +0 -1
  969. package/dist/layer2/dangerous-functions/utils/helpers.js +0 -147
  970. package/dist/layer2/dangerous-functions/utils/helpers.js.map +0 -1
  971. package/dist/layer2/dangerous-functions/utils/index.d.ts +0 -9
  972. package/dist/layer2/dangerous-functions/utils/index.d.ts.map +0 -1
  973. package/dist/layer2/dangerous-functions/utils/index.js +0 -23
  974. package/dist/layer2/dangerous-functions/utils/index.js.map +0 -1
  975. package/dist/layer2/dangerous-functions/utils/schema-validation.d.ts +0 -22
  976. package/dist/layer2/dangerous-functions/utils/schema-validation.d.ts.map +0 -1
  977. package/dist/layer2/dangerous-functions/utils/schema-validation.js +0 -102
  978. package/dist/layer2/dangerous-functions/utils/schema-validation.js.map +0 -1
  979. package/dist/layer2/data-exposure.d.ts +0 -19
  980. package/dist/layer2/data-exposure.d.ts.map +0 -1
  981. package/dist/layer2/data-exposure.js +0 -255
  982. package/dist/layer2/data-exposure.js.map +0 -1
  983. package/dist/layer2/framework-checks.d.ts +0 -10
  984. package/dist/layer2/framework-checks.d.ts.map +0 -1
  985. package/dist/layer2/framework-checks.js +0 -384
  986. package/dist/layer2/framework-checks.js.map +0 -1
  987. package/dist/layer2/index.d.ts +0 -74
  988. package/dist/layer2/index.d.ts.map +0 -1
  989. package/dist/layer2/index.js +0 -544
  990. package/dist/layer2/index.js.map +0 -1
  991. package/dist/layer2/log-injection.d.ts +0 -18
  992. package/dist/layer2/log-injection.d.ts.map +0 -1
  993. package/dist/layer2/log-injection.js +0 -214
  994. package/dist/layer2/log-injection.js.map +0 -1
  995. package/dist/layer2/logic-gates.d.ts +0 -10
  996. package/dist/layer2/logic-gates.d.ts.map +0 -1
  997. package/dist/layer2/logic-gates.js +0 -220
  998. package/dist/layer2/logic-gates.js.map +0 -1
  999. package/dist/layer2/model-supply-chain.d.ts +0 -23
  1000. package/dist/layer2/model-supply-chain.d.ts.map +0 -1
  1001. package/dist/layer2/model-supply-chain.js +0 -444
  1002. package/dist/layer2/model-supply-chain.js.map +0 -1
  1003. package/dist/layer2/risky-imports.d.ts +0 -10
  1004. package/dist/layer2/risky-imports.d.ts.map +0 -1
  1005. package/dist/layer2/risky-imports.js +0 -165
  1006. package/dist/layer2/risky-imports.js.map +0 -1
  1007. package/dist/layer2/security-headers.d.ts +0 -18
  1008. package/dist/layer2/security-headers.d.ts.map +0 -1
  1009. package/dist/layer2/security-headers.js +0 -187
  1010. package/dist/layer2/security-headers.js.map +0 -1
  1011. package/dist/layer2/ssrf-detection.d.ts +0 -18
  1012. package/dist/layer2/ssrf-detection.d.ts.map +0 -1
  1013. package/dist/layer2/ssrf-detection.js +0 -252
  1014. package/dist/layer2/ssrf-detection.js.map +0 -1
  1015. package/dist/layer2/variables.d.ts +0 -11
  1016. package/dist/layer2/variables.d.ts.map +0 -1
  1017. package/dist/layer2/variables.js +0 -156
  1018. package/dist/layer2/variables.js.map +0 -1
  1019. package/dist/layer2/xxe-detection.d.ts +0 -18
  1020. package/dist/layer2/xxe-detection.d.ts.map +0 -1
  1021. package/dist/layer2/xxe-detection.js +0 -242
  1022. package/dist/layer2/xxe-detection.js.map +0 -1
  1023. package/dist/layer3/anthropic/auto-dismiss.d.ts +0 -24
  1024. package/dist/layer3/anthropic/auto-dismiss.d.ts.map +0 -1
  1025. package/dist/layer3/anthropic/auto-dismiss.js +0 -199
  1026. package/dist/layer3/anthropic/auto-dismiss.js.map +0 -1
  1027. package/dist/layer3/anthropic/clients.d.ts +0 -44
  1028. package/dist/layer3/anthropic/clients.d.ts.map +0 -1
  1029. package/dist/layer3/anthropic/clients.js +0 -81
  1030. package/dist/layer3/anthropic/clients.js.map +0 -1
  1031. package/dist/layer3/anthropic/index.d.ts +0 -41
  1032. package/dist/layer3/anthropic/index.d.ts.map +0 -1
  1033. package/dist/layer3/anthropic/index.js +0 -141
  1034. package/dist/layer3/anthropic/index.js.map +0 -1
  1035. package/dist/layer3/anthropic/prompts/index.d.ts +0 -8
  1036. package/dist/layer3/anthropic/prompts/index.d.ts.map +0 -1
  1037. package/dist/layer3/anthropic/prompts/index.js +0 -16
  1038. package/dist/layer3/anthropic/prompts/index.js.map +0 -1
  1039. package/dist/layer3/anthropic/prompts/modules/ai-patterns.d.ts +0 -19
  1040. package/dist/layer3/anthropic/prompts/modules/ai-patterns.d.ts.map +0 -1
  1041. package/dist/layer3/anthropic/prompts/modules/ai-patterns.js +0 -156
  1042. package/dist/layer3/anthropic/prompts/modules/ai-patterns.js.map +0 -1
  1043. package/dist/layer3/anthropic/prompts/modules/auth-access.d.ts +0 -9
  1044. package/dist/layer3/anthropic/prompts/modules/auth-access.d.ts.map +0 -1
  1045. package/dist/layer3/anthropic/prompts/modules/auth-access.js +0 -25
  1046. package/dist/layer3/anthropic/prompts/modules/auth-access.js.map +0 -1
  1047. package/dist/layer3/anthropic/prompts/modules/common.d.ts +0 -11
  1048. package/dist/layer3/anthropic/prompts/modules/common.d.ts.map +0 -1
  1049. package/dist/layer3/anthropic/prompts/modules/common.js +0 -152
  1050. package/dist/layer3/anthropic/prompts/modules/common.js.map +0 -1
  1051. package/dist/layer3/anthropic/prompts/modules/index.d.ts +0 -54
  1052. package/dist/layer3/anthropic/prompts/modules/index.d.ts.map +0 -1
  1053. package/dist/layer3/anthropic/prompts/modules/index.js +0 -185
  1054. package/dist/layer3/anthropic/prompts/modules/index.js.map +0 -1
  1055. package/dist/layer3/anthropic/prompts/modules/owasp-classic.d.ts +0 -8
  1056. package/dist/layer3/anthropic/prompts/modules/owasp-classic.d.ts.map +0 -1
  1057. package/dist/layer3/anthropic/prompts/modules/owasp-classic.js +0 -84
  1058. package/dist/layer3/anthropic/prompts/modules/owasp-classic.js.map +0 -1
  1059. package/dist/layer3/anthropic/prompts/modules/secrets-crypto.d.ts +0 -8
  1060. package/dist/layer3/anthropic/prompts/modules/secrets-crypto.d.ts.map +0 -1
  1061. package/dist/layer3/anthropic/prompts/modules/secrets-crypto.js +0 -68
  1062. package/dist/layer3/anthropic/prompts/modules/secrets-crypto.js.map +0 -1
  1063. package/dist/layer3/anthropic/prompts/modules/xss-prompt.d.ts +0 -8
  1064. package/dist/layer3/anthropic/prompts/modules/xss-prompt.d.ts.map +0 -1
  1065. package/dist/layer3/anthropic/prompts/modules/xss-prompt.js +0 -22
  1066. package/dist/layer3/anthropic/prompts/modules/xss-prompt.js.map +0 -1
  1067. package/dist/layer3/anthropic/prompts/semantic-analysis.d.ts +0 -15
  1068. package/dist/layer3/anthropic/prompts/semantic-analysis.d.ts.map +0 -1
  1069. package/dist/layer3/anthropic/prompts/semantic-analysis.js +0 -169
  1070. package/dist/layer3/anthropic/prompts/semantic-analysis.js.map +0 -1
  1071. package/dist/layer3/anthropic/prompts/validation.d.ts +0 -18
  1072. package/dist/layer3/anthropic/prompts/validation.d.ts.map +0 -1
  1073. package/dist/layer3/anthropic/prompts/validation.js +0 -25
  1074. package/dist/layer3/anthropic/prompts/validation.js.map +0 -1
  1075. package/dist/layer3/anthropic/providers/anthropic.d.ts +0 -21
  1076. package/dist/layer3/anthropic/providers/anthropic.d.ts.map +0 -1
  1077. package/dist/layer3/anthropic/providers/anthropic.js +0 -269
  1078. package/dist/layer3/anthropic/providers/anthropic.js.map +0 -1
  1079. package/dist/layer3/anthropic/providers/index.d.ts +0 -8
  1080. package/dist/layer3/anthropic/providers/index.d.ts.map +0 -1
  1081. package/dist/layer3/anthropic/providers/index.js +0 -15
  1082. package/dist/layer3/anthropic/providers/index.js.map +0 -1
  1083. package/dist/layer3/anthropic/providers/openai.d.ts +0 -18
  1084. package/dist/layer3/anthropic/providers/openai.d.ts.map +0 -1
  1085. package/dist/layer3/anthropic/providers/openai.js +0 -343
  1086. package/dist/layer3/anthropic/providers/openai.js.map +0 -1
  1087. package/dist/layer3/anthropic/request-builder.d.ts +0 -27
  1088. package/dist/layer3/anthropic/request-builder.d.ts.map +0 -1
  1089. package/dist/layer3/anthropic/request-builder.js +0 -150
  1090. package/dist/layer3/anthropic/request-builder.js.map +0 -1
  1091. package/dist/layer3/anthropic/types.d.ts +0 -88
  1092. package/dist/layer3/anthropic/types.d.ts.map +0 -1
  1093. package/dist/layer3/anthropic/types.js +0 -38
  1094. package/dist/layer3/anthropic/types.js.map +0 -1
  1095. package/dist/layer3/anthropic/utils/context-extractor.d.ts +0 -55
  1096. package/dist/layer3/anthropic/utils/context-extractor.d.ts.map +0 -1
  1097. package/dist/layer3/anthropic/utils/context-extractor.js +0 -161
  1098. package/dist/layer3/anthropic/utils/context-extractor.js.map +0 -1
  1099. package/dist/layer3/anthropic/utils/index.d.ts +0 -11
  1100. package/dist/layer3/anthropic/utils/index.d.ts.map +0 -1
  1101. package/dist/layer3/anthropic/utils/index.js +0 -27
  1102. package/dist/layer3/anthropic/utils/index.js.map +0 -1
  1103. package/dist/layer3/anthropic/utils/path-helpers.d.ts +0 -21
  1104. package/dist/layer3/anthropic/utils/path-helpers.d.ts.map +0 -1
  1105. package/dist/layer3/anthropic/utils/path-helpers.js +0 -69
  1106. package/dist/layer3/anthropic/utils/path-helpers.js.map +0 -1
  1107. package/dist/layer3/anthropic/utils/response-parser.d.ts +0 -40
  1108. package/dist/layer3/anthropic/utils/response-parser.d.ts.map +0 -1
  1109. package/dist/layer3/anthropic/utils/response-parser.js +0 -285
  1110. package/dist/layer3/anthropic/utils/response-parser.js.map +0 -1
  1111. package/dist/layer3/anthropic/utils/retry.d.ts +0 -15
  1112. package/dist/layer3/anthropic/utils/retry.d.ts.map +0 -1
  1113. package/dist/layer3/anthropic/utils/retry.js +0 -62
  1114. package/dist/layer3/anthropic/utils/retry.js.map +0 -1
  1115. package/dist/layer3/index.d.ts +0 -27
  1116. package/dist/layer3/index.d.ts.map +0 -1
  1117. package/dist/layer3/index.js +0 -150
  1118. package/dist/layer3/index.js.map +0 -1
  1119. package/dist/layer3/osv-check.d.ts +0 -75
  1120. package/dist/layer3/osv-check.d.ts.map +0 -1
  1121. package/dist/layer3/osv-check.js +0 -308
  1122. package/dist/layer3/osv-check.js.map +0 -1
  1123. package/dist/layer3/package-check.d.ts +0 -63
  1124. package/dist/layer3/package-check.d.ts.map +0 -1
  1125. package/dist/layer3/package-check.js +0 -508
  1126. package/dist/layer3/package-check.js.map +0 -1
  1127. package/dist/model/cross-file-taint.d.ts +0 -40
  1128. package/dist/model/cross-file-taint.d.ts.map +0 -1
  1129. package/dist/model/cross-file-taint.js +0 -290
  1130. package/dist/model/cross-file-taint.js.map +0 -1
  1131. package/dist/model/function-classifier.d.ts +0 -32
  1132. package/dist/model/function-classifier.d.ts.map +0 -1
  1133. package/dist/model/function-classifier.js +0 -143
  1134. package/dist/model/function-classifier.js.map +0 -1
  1135. package/dist/model/sanitiser-detection.d.ts +0 -27
  1136. package/dist/model/sanitiser-detection.d.ts.map +0 -1
  1137. package/dist/model/sanitiser-detection.js +0 -224
  1138. package/dist/model/sanitiser-detection.js.map +0 -1
  1139. package/dist/model/sink-matcher.d.ts +0 -17
  1140. package/dist/model/sink-matcher.d.ts.map +0 -1
  1141. package/dist/model/sink-matcher.js +0 -141
  1142. package/dist/model/sink-matcher.js.map +0 -1
  1143. package/dist/model/sink-patterns.d.ts +0 -19
  1144. package/dist/model/sink-patterns.d.ts.map +0 -1
  1145. package/dist/model/sink-patterns.js +0 -88
  1146. package/dist/model/sink-patterns.js.map +0 -1
  1147. package/dist/model/source-discovery.d.ts +0 -15
  1148. package/dist/model/source-discovery.d.ts.map +0 -1
  1149. package/dist/model/source-discovery.js +0 -170
  1150. package/dist/model/source-discovery.js.map +0 -1
  1151. package/dist/model/taint-tracker.d.ts +0 -21
  1152. package/dist/model/taint-tracker.d.ts.map +0 -1
  1153. package/dist/model/taint-tracker.js +0 -281
  1154. package/dist/model/taint-tracker.js.map +0 -1
  1155. package/dist/modes/incremental.d.ts +0 -66
  1156. package/dist/modes/incremental.d.ts.map +0 -1
  1157. package/dist/modes/incremental.js +0 -200
  1158. package/dist/modes/incremental.js.map +0 -1
  1159. package/dist/rules/framework-fixes.d.ts +0 -48
  1160. package/dist/rules/framework-fixes.d.ts.map +0 -1
  1161. package/dist/rules/framework-fixes.js +0 -439
  1162. package/dist/rules/framework-fixes.js.map +0 -1
  1163. package/dist/rules/index.d.ts +0 -8
  1164. package/dist/rules/index.d.ts.map +0 -1
  1165. package/dist/rules/index.js +0 -18
  1166. package/dist/rules/index.js.map +0 -1
  1167. package/dist/rules/metadata.d.ts +0 -43
  1168. package/dist/rules/metadata.d.ts.map +0 -1
  1169. package/dist/rules/metadata.js +0 -800
  1170. package/dist/rules/metadata.js.map +0 -1
  1171. package/dist/score/auto-dismiss.d.ts +0 -28
  1172. package/dist/score/auto-dismiss.d.ts.map +0 -1
  1173. package/dist/score/auto-dismiss.js +0 -200
  1174. package/dist/score/auto-dismiss.js.map +0 -1
  1175. package/dist/suppression/config-loader.d.ts +0 -74
  1176. package/dist/suppression/config-loader.d.ts.map +0 -1
  1177. package/dist/suppression/config-loader.js +0 -424
  1178. package/dist/suppression/config-loader.js.map +0 -1
  1179. package/dist/suppression/hash.d.ts +0 -48
  1180. package/dist/suppression/hash.d.ts.map +0 -1
  1181. package/dist/suppression/hash.js +0 -88
  1182. package/dist/suppression/hash.js.map +0 -1
  1183. package/dist/suppression/index.d.ts +0 -11
  1184. package/dist/suppression/index.d.ts.map +0 -1
  1185. package/dist/suppression/index.js +0 -39
  1186. package/dist/suppression/index.js.map +0 -1
  1187. package/dist/suppression/inline-parser.d.ts +0 -39
  1188. package/dist/suppression/inline-parser.d.ts.map +0 -1
  1189. package/dist/suppression/inline-parser.js +0 -218
  1190. package/dist/suppression/inline-parser.js.map +0 -1
  1191. package/dist/suppression/manager.d.ts +0 -94
  1192. package/dist/suppression/manager.d.ts.map +0 -1
  1193. package/dist/suppression/manager.js +0 -292
  1194. package/dist/suppression/manager.js.map +0 -1
  1195. package/dist/suppression/types.d.ts +0 -151
  1196. package/dist/suppression/types.d.ts.map +0 -1
  1197. package/dist/suppression/types.js +0 -28
  1198. package/dist/suppression/types.js.map +0 -1
  1199. package/dist/types.d.ts +0 -331
  1200. package/dist/types.d.ts.map +0 -1
  1201. package/dist/types.js +0 -124
  1202. package/dist/types.js.map +0 -1
  1203. package/dist/utils/auth-helper-detector.d.ts +0 -56
  1204. package/dist/utils/auth-helper-detector.d.ts.map +0 -1
  1205. package/dist/utils/auth-helper-detector.js +0 -360
  1206. package/dist/utils/auth-helper-detector.js.map +0 -1
  1207. package/dist/utils/code-analysis.d.ts +0 -39
  1208. package/dist/utils/code-analysis.d.ts.map +0 -1
  1209. package/dist/utils/code-analysis.js +0 -159
  1210. package/dist/utils/code-analysis.js.map +0 -1
  1211. package/dist/utils/comment-analyzer.d.ts +0 -38
  1212. package/dist/utils/comment-analyzer.d.ts.map +0 -1
  1213. package/dist/utils/comment-analyzer.js +0 -218
  1214. package/dist/utils/comment-analyzer.js.map +0 -1
  1215. package/dist/utils/context-helpers.d.ts +0 -219
  1216. package/dist/utils/context-helpers.d.ts.map +0 -1
  1217. package/dist/utils/context-helpers.js +0 -886
  1218. package/dist/utils/context-helpers.js.map +0 -1
  1219. package/dist/utils/diff-detector.d.ts +0 -53
  1220. package/dist/utils/diff-detector.d.ts.map +0 -1
  1221. package/dist/utils/diff-detector.js +0 -104
  1222. package/dist/utils/diff-detector.js.map +0 -1
  1223. package/dist/utils/diff-parser.d.ts +0 -80
  1224. package/dist/utils/diff-parser.d.ts.map +0 -1
  1225. package/dist/utils/diff-parser.js +0 -202
  1226. package/dist/utils/diff-parser.js.map +0 -1
  1227. package/dist/utils/environment-context.d.ts +0 -76
  1228. package/dist/utils/environment-context.d.ts.map +0 -1
  1229. package/dist/utils/environment-context.js +0 -271
  1230. package/dist/utils/environment-context.js.map +0 -1
  1231. package/dist/utils/imported-auth-detector.d.ts +0 -37
  1232. package/dist/utils/imported-auth-detector.d.ts.map +0 -1
  1233. package/dist/utils/imported-auth-detector.js +0 -251
  1234. package/dist/utils/imported-auth-detector.js.map +0 -1
  1235. package/dist/utils/intent-detector.d.ts +0 -66
  1236. package/dist/utils/intent-detector.d.ts.map +0 -1
  1237. package/dist/utils/intent-detector.js +0 -282
  1238. package/dist/utils/intent-detector.js.map +0 -1
  1239. package/dist/utils/middleware-detector.d.ts +0 -55
  1240. package/dist/utils/middleware-detector.d.ts.map +0 -1
  1241. package/dist/utils/middleware-detector.js +0 -260
  1242. package/dist/utils/middleware-detector.js.map +0 -1
  1243. package/dist/utils/oauth-flow-detector.d.ts +0 -41
  1244. package/dist/utils/oauth-flow-detector.d.ts.map +0 -1
  1245. package/dist/utils/oauth-flow-detector.js +0 -202
  1246. package/dist/utils/oauth-flow-detector.js.map +0 -1
  1247. package/dist/utils/parsed-file.d.ts +0 -51
  1248. package/dist/utils/parsed-file.d.ts.map +0 -1
  1249. package/dist/utils/parsed-file.js +0 -95
  1250. package/dist/utils/parsed-file.js.map +0 -1
  1251. package/dist/utils/path-exclusions.d.ts +0 -55
  1252. package/dist/utils/path-exclusions.d.ts.map +0 -1
  1253. package/dist/utils/path-exclusions.js +0 -224
  1254. package/dist/utils/path-exclusions.js.map +0 -1
  1255. package/dist/utils/project-context-builder.d.ts +0 -119
  1256. package/dist/utils/project-context-builder.d.ts.map +0 -1
  1257. package/dist/utils/project-context-builder.js +0 -534
  1258. package/dist/utils/project-context-builder.js.map +0 -1
  1259. package/dist/utils/registry-clients.d.ts +0 -93
  1260. package/dist/utils/registry-clients.d.ts.map +0 -1
  1261. package/dist/utils/registry-clients.js +0 -273
  1262. package/dist/utils/registry-clients.js.map +0 -1
  1263. package/dist/utils/route-hierarchy.d.ts +0 -50
  1264. package/dist/utils/route-hierarchy.d.ts.map +0 -1
  1265. package/dist/utils/route-hierarchy.js +0 -226
  1266. package/dist/utils/route-hierarchy.js.map +0 -1
  1267. package/dist/utils/schema-semantics.d.ts +0 -45
  1268. package/dist/utils/schema-semantics.d.ts.map +0 -1
  1269. package/dist/utils/schema-semantics.js +0 -193
  1270. package/dist/utils/schema-semantics.js.map +0 -1
  1271. package/dist/utils/trpc-analyzer.d.ts +0 -78
  1272. package/dist/utils/trpc-analyzer.d.ts.map +0 -1
  1273. package/dist/utils/trpc-analyzer.js +0 -297
  1274. package/dist/utils/trpc-analyzer.js.map +0 -1
  1275. package/src/__tests__/context-engine/cross-file-taint.test.ts +0 -284
  1276. package/src/__tests__/context-engine/function-classifier.test.ts +0 -146
  1277. package/src/__tests__/context-engine/integration.test.ts +0 -320
  1278. package/src/__tests__/context-engine/sanitiser-detection.test.ts +0 -187
  1279. package/src/__tests__/context-engine/sink-matcher.test.ts +0 -251
  1280. package/src/__tests__/context-engine/source-discovery.test.ts +0 -186
  1281. package/src/__tests__/context-engine/taint-tracker.test.ts +0 -182
  1282. package/src/__tests__/snapshots/__snapshots__/anthropic-validation-refactor.test.ts.snap +0 -750
  1283. package/src/__tests__/snapshots/__snapshots__/dangerous-functions-refactor.test.ts.snap +0 -555
  1284. package/src/__tests__/snapshots/anthropic-validation-refactor.test.ts +0 -321
  1285. package/src/__tests__/snapshots/dangerous-functions-refactor.test.ts +0 -439
  1286. package/src/detect/ai-code/agent-tools.ts +0 -1662
  1287. package/src/detect/ai-code/byok-patterns.ts +0 -354
  1288. package/src/detect/ai-code/endpoint-protection.ts +0 -406
  1289. package/src/detect/ai-code/execution-sinks.ts +0 -1310
  1290. package/src/detect/ai-code/fingerprinting.ts +0 -774
  1291. package/src/detect/ai-code/mcp-security.ts +0 -937
  1292. package/src/detect/ai-code/model-supply-chain.ts +0 -535
  1293. package/src/detect/ai-code/package-hallucination.ts +0 -955
  1294. package/src/detect/ai-code/prompt-hygiene.ts +0 -1314
  1295. package/src/detect/ai-code/rag-safety.ts +0 -977
  1296. package/src/detect/ai-code/schema-validation.ts +0 -427
  1297. package/src/detect/secrets/patterns.ts +0 -561
  1298. package/src/detect/secrets/weak-crypto.ts +0 -485
  1299. package/src/detect/structural/__tests__/math-random-enhanced.test.ts +0 -405
  1300. package/src/detect/structural/auth-patterns.ts +0 -621
  1301. package/src/detect/structural/dangerous-functions/child-process.ts +0 -98
  1302. package/src/detect/structural/dangerous-functions/dom-xss.ts +0 -292
  1303. package/src/detect/structural/dangerous-functions/index.ts +0 -1556
  1304. package/src/detect/structural/dangerous-functions/json-parse.ts +0 -393
  1305. package/src/detect/structural/dangerous-functions/math-random.ts +0 -789
  1306. package/src/detect/structural/dangerous-functions/patterns.ts +0 -176
  1307. package/src/detect/structural/dangerous-functions/request-validation.ts +0 -153
  1308. package/src/detect/structural/dangerous-functions/utils/control-flow.ts +0 -35
  1309. package/src/detect/structural/dangerous-functions/utils/helpers.ts +0 -170
  1310. package/src/detect/structural/dangerous-functions/utils/index.ts +0 -25
  1311. package/src/detect/structural/dangerous-functions/utils/schema-validation.ts +0 -106
  1312. package/src/detect/structural/data-exposure.ts +0 -302
  1313. package/src/detect/structural/framework-checks.ts +0 -439
  1314. package/src/detect/structural/log-injection.ts +0 -254
  1315. package/src/detect/structural/logic-gates.ts +0 -256
  1316. package/src/detect/structural/risky-imports.ts +0 -197
  1317. package/src/detect/structural/security-headers.ts +0 -231
  1318. package/src/detect/structural/ssrf-detection.ts +0 -300
  1319. package/src/detect/structural/variables.ts +0 -177
  1320. package/src/detect/structural/xxe-detection.ts +0 -295
  1321. package/src/model/cross-file-taint.ts +0 -374
  1322. package/src/model/function-classifier.ts +0 -184
  1323. package/src/model/sanitiser-detection.ts +0 -268
  1324. package/src/model/sink-matcher.ts +0 -178
  1325. package/src/model/sink-patterns.ts +0 -109
  1326. package/src/model/source-discovery.ts +0 -209
  1327. package/src/model/taint-tracker.ts +0 -333
  1328. package/src/score/auto-dismiss.ts +0 -224
@@ -3,6 +3,39 @@
3
3
  * CLI Terminal Formatter
4
4
  * Formats scan results with ANSI colors for terminal output
5
5
  */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
6
39
  Object.defineProperty(exports, "__esModule", { value: true });
7
40
  exports.formatTerminalOutput = formatTerminalOutput;
8
41
  exports.formatCompactSummary = formatCompactSummary;
@@ -11,39 +44,45 @@ exports.formatFindingDetail = formatFindingDetail;
11
44
  exports.formatSimpleList = formatSimpleList;
12
45
  exports.formatJSON = formatJSON;
13
46
  exports.formatSARIF = formatSARIF;
47
+ const path = __importStar(require("path"));
14
48
  const grouping_1 = require("./grouping");
15
49
  const hash_1 = require("../../postprocess/suppression/hash");
50
+ const sanitize_1 = require("../sanitize");
16
51
  /**
17
52
  * ANSI color codes
18
53
  */
19
54
  const colors = {
20
- reset: '\x1b[0m',
21
- bold: '\x1b[1m',
22
- dim: '\x1b[2m',
23
- underline: '\x1b[4m',
55
+ reset: "\x1b[0m",
56
+ bold: "\x1b[1m",
57
+ dim: "\x1b[2m",
58
+ underline: "\x1b[4m",
24
59
  // Foreground colors
25
- red: '\x1b[31m',
26
- green: '\x1b[32m',
27
- yellow: '\x1b[33m',
28
- blue: '\x1b[34m',
29
- magenta: '\x1b[35m',
30
- cyan: '\x1b[36m',
31
- white: '\x1b[37m',
32
- gray: '\x1b[90m',
60
+ red: "\x1b[31m",
61
+ green: "\x1b[32m",
62
+ yellow: "\x1b[33m",
63
+ blue: "\x1b[34m",
64
+ magenta: "\x1b[35m",
65
+ cyan: "\x1b[36m",
66
+ white: "\x1b[37m",
67
+ gray: "\x1b[90m",
33
68
  // Background colors
34
- bgRed: '\x1b[41m',
35
- bgYellow: '\x1b[43m',
36
- bgBlue: '\x1b[44m',
69
+ bgRed: "\x1b[41m",
70
+ bgYellow: "\x1b[43m",
71
+ bgBlue: "\x1b[44m",
37
72
  };
38
73
  /**
39
74
  * Severity colors and symbols
40
75
  */
41
76
  const SEVERITY_STYLE = {
42
- critical: { color: colors.bgRed + colors.white, symbol: '●', label: 'CRITICAL' },
43
- high: { color: colors.red, symbol: '●', label: 'HIGH' },
44
- medium: { color: colors.yellow, symbol: '', label: 'MEDIUM' },
45
- low: { color: colors.blue, symbol: '○', label: 'LOW' },
46
- info: { color: colors.gray, symbol: '○', label: 'INFO' },
77
+ critical: {
78
+ color: colors.bgRed + colors.white,
79
+ symbol: "",
80
+ label: "CRITICAL",
81
+ },
82
+ high: { color: colors.red, symbol: "●", label: "HIGH" },
83
+ medium: { color: colors.yellow, symbol: "●", label: "MEDIUM" },
84
+ low: { color: colors.blue, symbol: "○", label: "LOW" },
85
+ info: { color: colors.gray, symbol: "○", label: "INFO" },
47
86
  };
48
87
  /**
49
88
  * Format colored text
@@ -65,7 +104,7 @@ function severityBadge(severity) {
65
104
  * Verbose: All of the above plus references and validation notes
66
105
  */
67
106
  function formatFinding(finding, options = {}) {
68
- const { indent = ' ', compact = false, verbose = false } = options;
107
+ const { indent = " ", compact = false, verbose = false } = options;
69
108
  const badge = severityBadge(finding.severity);
70
109
  const location = c(colors.cyan, `${finding.filePath}:${finding.lineNumber}`);
71
110
  const hash = (0, hash_1.computeFindingHash)(finding);
@@ -76,29 +115,48 @@ function formatFinding(finding, options = {}) {
76
115
  // Default actionable output
77
116
  let output = `${indent}${badge} ${c(colors.bold, finding.title)}\n`;
78
117
  output += `${indent} ${location}\n`;
79
- output += '\n';
118
+ output += "\n";
80
119
  // Impact (why this matters) - shown by default
81
120
  if (finding.impact) {
82
- output += `${indent} ${c(colors.yellow + colors.bold, 'Impact:')} ${finding.impact}\n`;
83
- output += '\n';
121
+ output += `${indent} ${c(colors.yellow + colors.bold, "Impact:")} ${finding.impact}\n`;
122
+ output += "\n";
123
+ }
124
+ // Taint flow path — shown for taint-based findings
125
+ if (finding.taintPath && finding.taintPath.steps.length > 0) {
126
+ output += `${indent} ${c(colors.yellow + colors.bold, "Flow:")}\n`;
127
+ for (const step of finding.taintPath.steps) {
128
+ const icon = step.stepType === "source"
129
+ ? "▶"
130
+ : step.stepType === "sink"
131
+ ? "◀"
132
+ : step.stepType === "sanitizer"
133
+ ? "✕"
134
+ : "→";
135
+ const lineRef = step.filePath
136
+ ? `${step.filePath}:${step.line}`
137
+ : `L${step.line}`;
138
+ const varPart = step.variable ? ` ${c(colors.cyan, step.variable)}` : "";
139
+ output += `${indent} ${c(colors.dim, icon)} ${c(colors.dim, lineRef)}${varPart} ${c(colors.dim, "—")} ${step.description}\n`;
140
+ }
141
+ output += "\n";
84
142
  }
85
143
  // Code snippet
86
144
  if (finding.lineContent && finding.lineContent.trim()) {
87
- output += `${indent} ${c(colors.dim, 'Code:')} ${c(colors.white, finding.lineContent.trim().substring(0, 80))}${finding.lineContent.trim().length > 80 ? '...' : ''}\n`;
88
- output += '\n';
145
+ output += `${indent} ${c(colors.dim, "Code:")} ${c(colors.white, finding.lineContent.trim().substring(0, 80))}${finding.lineContent.trim().length > 80 ? "..." : ""}\n`;
146
+ output += "\n";
89
147
  }
90
148
  // Fix steps - shown by default (numbered list)
91
149
  if (finding.fixSteps && finding.fixSteps.length > 0) {
92
- output += `${indent} ${c(colors.green + colors.bold, 'Fix:')}\n`;
150
+ output += `${indent} ${c(colors.green + colors.bold, "Fix:")}\n`;
93
151
  finding.fixSteps.forEach((step, i) => {
94
152
  output += `${indent} ${c(colors.green, `${i + 1}. ${step}`)}\n`;
95
153
  });
96
- output += '\n';
154
+ output += "\n";
97
155
  }
98
156
  else if (finding.suggestedFix) {
99
157
  // Fallback to legacy suggestedFix field
100
158
  output += `${indent} ${c(colors.green, finding.suggestedFix)}\n`;
101
- output += '\n';
159
+ output += "\n";
102
160
  }
103
161
  // Verbose mode: show additional details
104
162
  if (verbose) {
@@ -106,8 +164,8 @@ function formatFinding(finding, options = {}) {
106
164
  output += `${indent} ${c(colors.dim, finding.description)}\n`;
107
165
  // References (OWASP/CWE links)
108
166
  if (finding.references && finding.references.length > 0) {
109
- output += `${indent} ${c(colors.blue, 'References:')}\n`;
110
- finding.references.forEach(ref => {
167
+ output += `${indent} ${c(colors.blue, "References:")}\n`;
168
+ finding.references.forEach((ref) => {
111
169
  output += `${indent} ${c(colors.blue, ` • ${ref}`)}\n`;
112
170
  });
113
171
  }
@@ -117,7 +175,7 @@ function formatFinding(finding, options = {}) {
117
175
  }
118
176
  // AI enhanced indicator
119
177
  if (finding.aiEnhanced) {
120
- output += `${indent} ${c(colors.magenta, '[AI] Enhanced fix suggestion')}\n`;
178
+ output += `${indent} ${c(colors.magenta, "[AI] Enhanced fix suggestion")}\n`;
121
179
  }
122
180
  }
123
181
  // Suppress command - always shown
@@ -143,12 +201,12 @@ function formatGroup(group, options = {}) {
143
201
  counts.push(c(colors.blue, `${severityCounts.low} low`));
144
202
  if (severityCounts.info > 0)
145
203
  counts.push(c(colors.gray, `${severityCounts.info} info`));
146
- let output = `\n${c(colors.bold, `${config.icon} ${themeName}`)} (${counts.join(', ')})\n`;
147
- output += c(colors.dim, ''.repeat(60)) + '\n';
204
+ let output = `\n${c(colors.bold, `${config.icon} ${themeName}`)} (${counts.join(", ")})\n`;
205
+ output += c(colors.dim, "".repeat(60)) + "\n";
148
206
  // Show findings
149
207
  const shown = findings.slice(0, maxFindings);
150
208
  for (const finding of shown) {
151
- output += formatFinding(finding, { compact, verbose }) + '\n';
209
+ output += formatFinding(finding, { compact, verbose }) + "\n";
152
210
  }
153
211
  // Truncation notice
154
212
  if (findings.length > maxFindings) {
@@ -160,35 +218,71 @@ function formatGroup(group, options = {}) {
160
218
  * Format baseline diff summary
161
219
  */
162
220
  function formatDiffSummary(baselineDiff) {
163
- let output = '';
164
- output += c(colors.bold, 'Baseline Comparison') + '\n';
165
- output += c(colors.dim, ''.repeat(40)) + '\n';
221
+ let output = "";
222
+ output += c(colors.bold, "Baseline Comparison") + "\n";
223
+ output += c(colors.dim, "".repeat(40)) + "\n";
166
224
  output += ` + ${c(colors.yellow, `${baselineDiff.newCount} new`)} findings\n`;
167
225
  output += ` - ${c(colors.green, `${baselineDiff.fixedCount} fixed`)} since baseline\n`;
168
226
  output += ` = ${c(colors.dim, `${baselineDiff.existingCount} existing`)} (in baseline)\n`;
169
- output += '\n';
227
+ output += "\n";
170
228
  // Format baseline date
171
229
  const baselineDate = new Date(baselineDiff.baselineCreatedAt);
172
- const dateStr = baselineDate.toLocaleDateString('en-US', {
173
- year: 'numeric',
174
- month: 'short',
175
- day: 'numeric',
230
+ const dateStr = baselineDate.toLocaleDateString("en-US", {
231
+ year: "numeric",
232
+ month: "short",
233
+ day: "numeric",
176
234
  });
177
- const commitStr = baselineDiff.baselineCommit ? ` (${baselineDiff.baselineCommit})` : '';
178
- output += c(colors.dim, `Baseline from ${dateStr}${commitStr}`) + '\n\n';
235
+ const commitStr = baselineDiff.baselineCommit
236
+ ? ` (${baselineDiff.baselineCommit})`
237
+ : "";
238
+ output += c(colors.dim, `Baseline from ${dateStr}${commitStr}`) + "\n\n";
179
239
  return output;
180
240
  }
241
+ /**
242
+ * Collapse findings that share the same title|severity|category signature
243
+ * across 3+ distinct files into a single representative entry.
244
+ * Applied at display time only — does not mutate the underlying scan result.
245
+ */
246
+ function collapseAcrossFiles(findings) {
247
+ const bySignature = new Map();
248
+ for (const f of findings) {
249
+ const sig = `${f.title}|${f.severity}|${f.category}`;
250
+ const group = bySignature.get(sig) ?? [];
251
+ group.push(f);
252
+ bySignature.set(sig, group);
253
+ }
254
+ const result = [];
255
+ for (const [, group] of bySignature) {
256
+ const files = [...new Set(group.map((f) => f.filePath))];
257
+ if (files.length >= 3) {
258
+ const first = group[0];
259
+ const fileList = files
260
+ .slice(0, 3)
261
+ .map((f) => path.basename(f))
262
+ .join(", ");
263
+ result.push({
264
+ ...first,
265
+ title: `${first.title} (${files.length} routes)`,
266
+ description: `${first.description}\n\nAffects ${files.length} files: ${fileList}${files.length > 3 ? `, ... and ${files.length - 3} more` : ""}`,
267
+ });
268
+ }
269
+ else {
270
+ result.push(...group);
271
+ }
272
+ }
273
+ return result;
274
+ }
181
275
  /**
182
276
  * Format full scan result for terminal
183
277
  */
184
278
  function formatTerminalOutput(result, options = {}) {
185
279
  const { maxFindingsPerGroup = 10, showAllFindings = false, compact = false, verbose = false, } = options;
186
- const { vulnerabilities, severityCounts, hasBlockingIssues, filesScanned, scanDuration, baselineDiff } = result;
187
- let output = '\n';
280
+ const { vulnerabilities, severityCounts, hasBlockingIssues, filesScanned, scanDuration, baselineDiff, } = result;
281
+ let output = "\n";
188
282
  // Header
189
- output += c(colors.bold, ''.repeat(60)) + '\n';
190
- output += c(colors.bold, ' OCULUM SECURITY SCAN RESULTS') + '\n';
191
- output += c(colors.bold, ''.repeat(60)) + '\n\n';
283
+ output += c(colors.bold, "".repeat(60)) + "\n";
284
+ output += c(colors.bold, " OCULUM SECURITY SCAN RESULTS") + "\n";
285
+ output += c(colors.bold, "".repeat(60)) + "\n\n";
192
286
  // Baseline diff summary (if present)
193
287
  if (baselineDiff) {
194
288
  output += formatDiffSummary(baselineDiff);
@@ -196,81 +290,120 @@ function formatTerminalOutput(result, options = {}) {
196
290
  // Status
197
291
  if (hasBlockingIssues) {
198
292
  const blocking = severityCounts.critical + severityCounts.high;
199
- output += c(colors.bgRed + colors.white + colors.bold, ` ! ${blocking} BLOCKING ISSUES FOUND `) + '\n\n';
293
+ output +=
294
+ c(colors.bgRed + colors.white + colors.bold, ` ! ${blocking} BLOCKING ISSUES FOUND `) + "\n\n";
200
295
  }
201
296
  else if (vulnerabilities.length > 0) {
202
- output += c(colors.yellow, `${vulnerabilities.length} issues found (no blocking issues)`) + '\n\n';
297
+ output +=
298
+ c(colors.yellow, `${vulnerabilities.length} issues found (no blocking issues)`) + "\n\n";
203
299
  }
204
300
  else {
205
- output += c(colors.green, 'No security issues found!') + '\n\n';
206
- output += c(colors.dim, `Scanned ${filesScanned} files in ${(scanDuration / 1000).toFixed(1)}s`) + '\n';
301
+ output += c(colors.green, "No security issues found!") + "\n\n";
302
+ output +=
303
+ c(colors.dim, `Scanned ${filesScanned} files in ${(scanDuration / 1000).toFixed(1)}s`) + "\n";
207
304
  return output;
208
305
  }
209
306
  // Summary counts
210
- output += c(colors.bold, 'Summary:') + '\n';
307
+ output += c(colors.bold, "Summary:") + "\n";
211
308
  if (severityCounts.critical > 0)
212
- output += ` ${severityBadge('critical')} ${severityCounts.critical}\n`;
309
+ output += ` ${severityBadge("critical")} ${severityCounts.critical}\n`;
213
310
  if (severityCounts.high > 0)
214
- output += ` ${severityBadge('high')} ${severityCounts.high}\n`;
311
+ output += ` ${severityBadge("high")} ${severityCounts.high}\n`;
215
312
  if (severityCounts.medium > 0)
216
- output += ` ${severityBadge('medium')} ${severityCounts.medium}\n`;
313
+ output += ` ${severityBadge("medium")} ${severityCounts.medium}\n`;
217
314
  if (severityCounts.low > 0)
218
- output += ` ${severityBadge('low')} ${severityCounts.low}\n`;
315
+ output += ` ${severityBadge("low")} ${severityCounts.low}\n`;
219
316
  if (severityCounts.info > 0)
220
- output += ` ${severityBadge('info')} ${severityCounts.info}\n`;
221
- output += '\n';
317
+ output += ` ${severityBadge("info")} ${severityCounts.info}\n`;
318
+ output += "\n";
222
319
  // Blocking issues first
223
320
  const blockingIssues = (0, grouping_1.getBlockingIssues)(vulnerabilities);
321
+ const blockingIds = new Set(blockingIssues.map((f) => f.id));
224
322
  if (blockingIssues.length > 0) {
225
- output += c(colors.bgRed + colors.white + colors.bold, ' BLOCKING ISSUES ') + '\n';
226
- output += c(colors.red, 'These must be fixed before merging:') + '\n\n';
323
+ output +=
324
+ c(colors.bgRed + colors.white + colors.bold, " BLOCKING ISSUES ") + "\n";
325
+ output += c(colors.red, "These must be fixed before merging:") + "\n\n";
227
326
  for (const finding of blockingIssues.slice(0, 10)) {
228
327
  output += formatFinding(finding, { compact, verbose });
229
- output += '\n';
328
+ output += "\n";
230
329
  }
231
330
  if (blockingIssues.length > 10) {
232
331
  output += c(colors.dim, ` ... and ${blockingIssues.length - 10} more blocking issues\n`);
233
332
  }
234
- output += '\n';
333
+ output += "\n";
235
334
  }
236
335
  // Grouped findings
237
336
  const grouped = (0, grouping_1.groupByTheme)(vulnerabilities);
238
- output += c(colors.bold, '─'.repeat(60)) + '\n';
239
- output += c(colors.bold, 'ALL FINDINGS BY CATEGORY') + '\n';
240
- for (const group of grouped) {
241
- // Skip if only showing non-blocking and all are blocking
242
- if (!showAllFindings) {
243
- const nonBlocking = group.findings.filter(f => f.severity !== 'critical' && f.severity !== 'high');
244
- if (nonBlocking.length === 0 && blockingIssues.length > 0)
337
+ // Check if any groups have non-blocking findings to display
338
+ const hasNonBlockingGroups = showAllFindings ||
339
+ grouped.some((group) => {
340
+ const displayFindings = group.findings.filter((f) => !blockingIds.has(f.id));
341
+ return displayFindings.length > 0;
342
+ });
343
+ if (hasNonBlockingGroups) {
344
+ output += c(colors.bold, "─".repeat(60)) + "\n";
345
+ output += c(colors.bold, "ALL FINDINGS BY CATEGORY") + "\n";
346
+ for (const group of grouped) {
347
+ const displayFindings = showAllFindings
348
+ ? group.findings
349
+ : group.findings.filter((f) => !blockingIds.has(f.id));
350
+ if (displayFindings.length === 0)
245
351
  continue;
352
+ const collapsed = collapseAcrossFiles(displayFindings);
353
+ // Recompute severity counts from the filtered/collapsed findings
354
+ const filteredCounts = {
355
+ critical: 0,
356
+ high: 0,
357
+ medium: 0,
358
+ low: 0,
359
+ info: 0,
360
+ };
361
+ for (const f of collapsed)
362
+ filteredCounts[f.severity] = (filteredCounts[f.severity] ?? 0) + 1;
363
+ output += formatGroup({
364
+ ...group,
365
+ findings: collapsed,
366
+ severityCounts: filteredCounts,
367
+ }, {
368
+ maxFindings: maxFindingsPerGroup,
369
+ compact,
370
+ verbose,
371
+ });
246
372
  }
247
- output += formatGroup(group, { maxFindings: maxFindingsPerGroup, compact, verbose });
248
373
  }
249
374
  // Suppressed findings section (if any)
250
- if (result.suppressedVulnerabilities && result.suppressedVulnerabilities.length > 0) {
251
- output += '\n' + c(colors.dim, '─'.repeat(60)) + '\n';
252
- output += c(colors.dim + colors.bold, 'SUPPRESSED FINDINGS') + '\n';
253
- output += c(colors.dim, `${result.suppressedVulnerabilities.length} findings suppressed`) + '\n\n';
375
+ if (result.suppressedVulnerabilities &&
376
+ result.suppressedVulnerabilities.length > 0) {
377
+ output += "\n" + c(colors.dim, "─".repeat(60)) + "\n";
378
+ output += c(colors.dim + colors.bold, "SUPPRESSED FINDINGS") + "\n";
379
+ output +=
380
+ c(colors.dim, `${result.suppressedVulnerabilities.length} findings suppressed`) + "\n\n";
254
381
  for (const suppressed of result.suppressedVulnerabilities.slice(0, 5)) {
255
- const typeLabel = suppressed.suppressionType === 'inline' ? 'inline'
256
- : suppressed.suppressionType === 'config-finding' ? 'config'
257
- : 'rule';
258
- output += c(colors.dim, ` ${suppressed.hash.slice(0, 8)} ${suppressed.filePath}:${suppressed.lineNumber}`) + '\n';
259
- output += c(colors.dim, ` ${suppressed.title}`) + '\n';
260
- output += c(colors.dim, ` [${typeLabel}] ${suppressed.suppressionReason}`) + '\n';
382
+ const typeLabel = suppressed.suppressionType === "inline"
383
+ ? "inline"
384
+ : suppressed.suppressionType === "config-finding"
385
+ ? "config"
386
+ : "rule";
387
+ output +=
388
+ c(colors.dim, ` ${suppressed.hash.slice(0, 8)} ${suppressed.filePath}:${suppressed.lineNumber}`) + "\n";
389
+ output += c(colors.dim, ` ${suppressed.title}`) + "\n";
390
+ output +=
391
+ c(colors.dim, ` [${typeLabel}] ${suppressed.suppressionReason}`) +
392
+ "\n";
261
393
  if (suppressed.expires) {
262
- output += c(colors.dim, ` Expires: ${suppressed.expires}`) + '\n';
394
+ output += c(colors.dim, ` Expires: ${suppressed.expires}`) + "\n";
263
395
  }
264
- output += '\n';
396
+ output += "\n";
265
397
  }
266
398
  if (result.suppressedVulnerabilities.length > 5) {
267
399
  output += c(colors.dim, ` ... and ${result.suppressedVulnerabilities.length - 5} more suppressed\n`);
268
400
  }
269
401
  }
270
402
  // Suppression stats (if any)
271
- if (result.suppressionStats && (result.suppressionStats.inlineSuppressed > 0 ||
272
- result.suppressionStats.configFindingSuppressed > 0 ||
273
- result.suppressionStats.configRuleSuppressed > 0)) {
403
+ if (result.suppressionStats &&
404
+ (result.suppressionStats.inlineSuppressed > 0 ||
405
+ result.suppressionStats.configFindingSuppressed > 0 ||
406
+ result.suppressionStats.configRuleSuppressed > 0)) {
274
407
  const stats = result.suppressionStats;
275
408
  const parts = [];
276
409
  if (stats.inlineSuppressed > 0)
@@ -282,12 +415,50 @@ function formatTerminalOutput(result, options = {}) {
282
415
  if (stats.expired > 0)
283
416
  parts.push(`${stats.expired} expired`);
284
417
  if (!result.suppressedVulnerabilities) {
285
- output += '\n' + c(colors.dim, `Suppressed: ${parts.join(', ')}`) + '\n';
418
+ output += "\n" + c(colors.dim, `Suppressed: ${parts.join(", ")}`) + "\n";
286
419
  }
287
420
  }
421
+ // For Review section (confidence-suppressed findings eligible for review)
422
+ const MAX_FOR_REVIEW = 5;
423
+ if (result.forReviewFindings && result.forReviewFindings.length > 0) {
424
+ output += "\n" + c(colors.dim, "─".repeat(60)) + "\n";
425
+ output += c(colors.yellow + colors.bold, "FOR REVIEW") + " ";
426
+ output +=
427
+ c(colors.dim, `(${result.forReviewFindings.length} lower-confidence findings)`) + "\n";
428
+ output +=
429
+ c(colors.dim, "Run with -d verified to AI-validate these findings.") +
430
+ "\n\n";
431
+ for (const finding of result.forReviewFindings.slice(0, MAX_FOR_REVIEW)) {
432
+ const score = Math.round(finding.confidenceScore * 100);
433
+ output += ` ${severityBadge(finding.severity)} ${finding.title}\n`;
434
+ output +=
435
+ c(colors.dim, ` ${finding.filePath}:${finding.lineNumber}`) + " ";
436
+ output += c(colors.dim, `[${score}%]`) + "\n";
437
+ }
438
+ if (result.forReviewFindings.length > MAX_FOR_REVIEW) {
439
+ output +=
440
+ c(colors.dim, `\n ... and ${result.forReviewFindings.length - MAX_FOR_REVIEW} more`) + "\n";
441
+ }
442
+ }
443
+ // Unvalidated findings notice
444
+ const unvalidatedCount = vulnerabilities.filter((v) => v.validationStatus === "not_validated").length;
445
+ if (unvalidatedCount > 0) {
446
+ output +=
447
+ "\n" +
448
+ c(colors.yellow, ` ⚠ ${unvalidatedCount} finding(s) need AI review (run with --depth verified)`) +
449
+ "\n";
450
+ }
288
451
  // Footer
289
- output += '\n' + c(colors.dim, ''.repeat(60)) + '\n';
290
- output += c(colors.dim, `Scanned ${filesScanned} files in ${(scanDuration / 1000).toFixed(1)}s`) + '\n';
452
+ output += "\n" + c(colors.dim, "".repeat(60)) + "\n";
453
+ // Language breakdown
454
+ if (result.languageStats && Object.keys(result.languageStats).length > 0) {
455
+ const langParts = Object.entries(result.languageStats)
456
+ .sort(([, a], [, b]) => b - a)
457
+ .map(([lang, count]) => `${count} ${lang}`);
458
+ output += c(colors.dim, `Scanned: ${langParts.join(", ")}`) + "\n";
459
+ }
460
+ output +=
461
+ c(colors.dim, `Scanned ${filesScanned} files in ${(scanDuration / 1000).toFixed(1)}s`) + "\n";
291
462
  return output;
292
463
  }
293
464
  /**
@@ -301,8 +472,8 @@ function formatCompactSummary(vulnerabilities, options = {}) {
301
472
  const { showNumbers = true, maxPerSeverity = 5, showHint = true, noColor = false, } = options;
302
473
  if (vulnerabilities.length === 0) {
303
474
  return noColor
304
- ? 'No security issues found.'
305
- : c(colors.green, 'No security issues found.');
475
+ ? "No security issues found."
476
+ : c(colors.green, "No security issues found.");
306
477
  }
307
478
  // Group by severity
308
479
  const bySeverity = {
@@ -316,9 +487,15 @@ function formatCompactSummary(vulnerabilities, options = {}) {
316
487
  bySeverity[v.severity].push(v);
317
488
  }
318
489
  // Build output
319
- let output = '';
490
+ let output = "";
320
491
  let globalIndex = 1;
321
- const severityOrder = ['critical', 'high', 'medium', 'low', 'info'];
492
+ const severityOrder = [
493
+ "critical",
494
+ "high",
495
+ "medium",
496
+ "low",
497
+ "info",
498
+ ];
322
499
  const severityColors = {
323
500
  critical: colors.bgRed + colors.white,
324
501
  high: colors.red,
@@ -339,13 +516,13 @@ function formatCompactSummary(vulnerabilities, options = {}) {
339
516
  // Show findings
340
517
  const shown = findings.slice(0, maxPerSeverity);
341
518
  for (const finding of shown) {
342
- const num = showNumbers ? `${globalIndex}. ` : '';
519
+ const num = showNumbers ? `${globalIndex}. ` : "";
343
520
  const location = noColor
344
521
  ? `${finding.filePath}:${finding.lineNumber}`
345
522
  : c(colors.cyan, `${finding.filePath}:${finding.lineNumber}`);
346
523
  output += noColor
347
524
  ? ` ${num}${finding.title} in ${location}\n`
348
- : ` ${c(colors.dim, num)}${finding.title} ${c(colors.dim, 'in')} ${location}\n`;
525
+ : ` ${c(colors.dim, num)}${finding.title} ${c(colors.dim, "in")} ${location}\n`;
349
526
  globalIndex++;
350
527
  }
351
528
  // Show truncation notice
@@ -360,7 +537,7 @@ function formatCompactSummary(vulnerabilities, options = {}) {
360
537
  }
361
538
  // Hint at bottom
362
539
  if (showHint && vulnerabilities.length > 0) {
363
- output += '\n';
540
+ output += "\n";
364
541
  output += noColor
365
542
  ? "Run 'oculum show 1' for details · 'oculum fix' for suggestions\n"
366
543
  : c(colors.dim, "Run 'oculum show 1' for details · 'oculum fix' for suggestions\n");
@@ -382,7 +559,7 @@ function getNumberedFindings(vulnerabilities) {
382
559
  */
383
560
  function formatFindingDetail(finding, number, options = {}) {
384
561
  const { verbose = false, noColor = false } = options;
385
- let output = '';
562
+ let output = "";
386
563
  // Header
387
564
  const badge = noColor
388
565
  ? `[${finding.severity.toUpperCase()}]`
@@ -391,67 +568,75 @@ function formatFindingDetail(finding, number, options = {}) {
391
568
  output += `\n#${number} ${badge} ${title}\n`;
392
569
  // Location
393
570
  const location = noColor
394
- ? finding.filePath + ':' + finding.lineNumber
571
+ ? finding.filePath + ":" + finding.lineNumber
395
572
  : c(colors.cyan, `${finding.filePath}:${finding.lineNumber}`);
396
573
  output += ` ${location}\n`;
397
- output += '\n';
574
+ output += "\n";
398
575
  // Impact
399
576
  if (finding.impact) {
400
- const impactLabel = noColor ? 'Impact:' : c(colors.yellow + colors.bold, 'Impact:');
577
+ const impactLabel = noColor
578
+ ? "Impact:"
579
+ : c(colors.yellow + colors.bold, "Impact:");
401
580
  output += ` ${impactLabel} ${finding.impact}\n`;
402
- output += '\n';
581
+ output += "\n";
403
582
  }
404
583
  // Code snippet
405
584
  if (finding.lineContent && finding.lineContent.trim()) {
406
- const codeLabel = noColor ? 'Code:' : c(colors.dim, 'Code:');
585
+ const codeLabel = noColor ? "Code:" : c(colors.dim, "Code:");
407
586
  const code = finding.lineContent.trim().substring(0, 100);
408
587
  const codeText = noColor ? code : c(colors.white, code);
409
- output += ` ${codeLabel} ${codeText}${finding.lineContent.trim().length > 100 ? '...' : ''}\n`;
410
- output += '\n';
588
+ output += ` ${codeLabel} ${codeText}${finding.lineContent.trim().length > 100 ? "..." : ""}\n`;
589
+ output += "\n";
411
590
  }
412
591
  // Description
413
592
  output += noColor
414
593
  ? ` ${finding.description}\n`
415
594
  : ` ${c(colors.dim, finding.description)}\n`;
416
- output += '\n';
595
+ output += "\n";
417
596
  // Fix steps
418
597
  if (finding.fixSteps && finding.fixSteps.length > 0) {
419
- const fixLabel = noColor ? 'How to fix:' : c(colors.green + colors.bold, 'How to fix:');
598
+ const fixLabel = noColor
599
+ ? "How to fix:"
600
+ : c(colors.green + colors.bold, "How to fix:");
420
601
  output += ` ${fixLabel}\n`;
421
602
  finding.fixSteps.forEach((step, i) => {
422
- const stepText = noColor ? `${i + 1}. ${step}` : c(colors.green, `${i + 1}. ${step}`);
603
+ const stepText = noColor
604
+ ? `${i + 1}. ${step}`
605
+ : c(colors.green, `${i + 1}. ${step}`);
423
606
  output += ` ${stepText}\n`;
424
607
  });
425
- output += '\n';
608
+ output += "\n";
426
609
  }
427
610
  else if (finding.suggestedFix) {
428
- const fixLabel = noColor ? 'Suggested fix:' : c(colors.green + colors.bold, 'Suggested fix:');
611
+ const fixLabel = noColor
612
+ ? "Suggested fix:"
613
+ : c(colors.green + colors.bold, "Suggested fix:");
429
614
  output += ` ${fixLabel} ${finding.suggestedFix}\n`;
430
- output += '\n';
615
+ output += "\n";
431
616
  }
432
617
  // Verbose mode: additional details
433
618
  if (verbose) {
434
619
  // References
435
620
  if (finding.references && finding.references.length > 0) {
436
- const refLabel = noColor ? 'References:' : c(colors.blue, 'References:');
621
+ const refLabel = noColor ? "References:" : c(colors.blue, "References:");
437
622
  output += ` ${refLabel}\n`;
438
- finding.references.forEach(ref => {
623
+ finding.references.forEach((ref) => {
439
624
  output += noColor
440
625
  ? ` - ${ref}\n`
441
626
  : ` ${c(colors.blue, `- ${ref}`)}\n`;
442
627
  });
443
- output += '\n';
628
+ output += "\n";
444
629
  }
445
630
  // Validation notes
446
631
  if (finding.validationNotes) {
447
- const notesLabel = noColor ? '[AI]' : c(colors.magenta, '[AI]');
632
+ const notesLabel = noColor ? "[AI]" : c(colors.magenta, "[AI]");
448
633
  output += ` ${notesLabel} ${finding.validationNotes}\n`;
449
- output += '\n';
634
+ output += "\n";
450
635
  }
451
636
  // Category and confidence
452
637
  output += noColor
453
- ? ` Category: ${finding.category} · Confidence: ${finding.confidence || 'medium'} · Layer: ${finding.layer}\n`
454
- : c(colors.dim, ` Category: ${finding.category} · Confidence: ${finding.confidence || 'medium'} · Layer: ${finding.layer}\n`);
638
+ ? ` Category: ${finding.category} · Confidence: ${finding.confidence || "medium"} · Layer: ${finding.layer}\n`
639
+ : c(colors.dim, ` Category: ${finding.category} · Confidence: ${finding.confidence || "medium"} · Layer: ${finding.layer}\n`);
455
640
  }
456
641
  return output;
457
642
  }
@@ -459,7 +644,7 @@ function formatFindingDetail(finding, number, options = {}) {
459
644
  * Format as simple list (no grouping, no colors)
460
645
  */
461
646
  function formatSimpleList(vulnerabilities) {
462
- let output = '';
647
+ let output = "";
463
648
  for (const finding of vulnerabilities) {
464
649
  const severity = finding.severity.toUpperCase().padEnd(8);
465
650
  output += `[${severity}] ${finding.filePath}:${finding.lineNumber} - ${finding.title}\n`;
@@ -470,104 +655,104 @@ function formatSimpleList(vulnerabilities) {
470
655
  * Format as JSON (for piping to other tools)
471
656
  */
472
657
  function formatJSON(result, pretty = false) {
473
- if (pretty) {
474
- return JSON.stringify(result, null, 2);
475
- }
476
- return JSON.stringify(result);
658
+ const sanitized = (0, sanitize_1.sanitizeScanResult)(result);
659
+ return pretty
660
+ ? JSON.stringify(sanitized, null, 2)
661
+ : JSON.stringify(sanitized);
477
662
  }
478
663
  /**
479
664
  * Rule metadata for SARIF output
480
665
  */
481
666
  const RULE_METADATA = {
482
667
  hardcoded_secret: {
483
- name: 'Hardcoded Secret',
484
- description: 'Sensitive credentials or API keys hardcoded in source code. These can be extracted from version control history or compiled binaries.',
485
- helpUri: 'https://oculum.dev/docs/rules/hardcoded-secrets',
486
- tags: ['security', 'secrets', 'credentials'],
668
+ name: "Hardcoded Secret",
669
+ description: "Sensitive credentials or API keys hardcoded in source code. These can be extracted from version control history or compiled binaries.",
670
+ helpUri: "https://oculum.dev/docs/rules/hardcoded-secrets",
671
+ tags: ["security", "secrets", "credentials"],
487
672
  },
488
673
  high_entropy_string: {
489
- name: 'High Entropy String',
490
- description: 'A high-entropy string that may be a secret or API key. Review to ensure it is not sensitive data.',
491
- helpUri: 'https://oculum.dev/docs/rules/high-entropy',
492
- tags: ['security', 'secrets'],
674
+ name: "High Entropy String",
675
+ description: "A high-entropy string that may be a secret or API key. Review to ensure it is not sensitive data.",
676
+ helpUri: "https://oculum.dev/docs/rules/high-entropy",
677
+ tags: ["security", "secrets"],
493
678
  },
494
679
  ai_prompt_injection: {
495
- name: 'AI Prompt Injection',
496
- description: 'User input is included in AI prompts without proper sanitization, potentially allowing prompt injection attacks.',
497
- helpUri: 'https://oculum.dev/docs/rules/prompt-injection',
498
- tags: ['security', 'ai', 'injection'],
680
+ name: "AI Prompt Injection",
681
+ description: "User input is included in AI prompts without proper sanitization, potentially allowing prompt injection attacks.",
682
+ helpUri: "https://oculum.dev/docs/rules/prompt-injection",
683
+ tags: ["security", "ai", "injection"],
499
684
  },
500
685
  ai_unsafe_execution: {
501
- name: 'AI Unsafe Execution',
502
- description: 'AI-generated content is used in code execution, SQL queries, or other dangerous sinks without validation.',
503
- helpUri: 'https://oculum.dev/docs/rules/unsafe-execution',
504
- tags: ['security', 'ai', 'injection'],
686
+ name: "AI Unsafe Execution",
687
+ description: "AI-generated content is used in code execution, SQL queries, or other dangerous sinks without validation.",
688
+ helpUri: "https://oculum.dev/docs/rules/unsafe-execution",
689
+ tags: ["security", "ai", "injection"],
505
690
  },
506
691
  ai_overpermissive_tool: {
507
- name: 'AI Overpermissive Tool',
508
- description: 'AI agent tool has excessive permissions without proper restrictions or sandboxing.',
509
- helpUri: 'https://oculum.dev/docs/rules/overpermissive-tools',
510
- tags: ['security', 'ai', 'authorization'],
692
+ name: "AI Overpermissive Tool",
693
+ description: "AI agent tool has excessive permissions without proper restrictions or sandboxing.",
694
+ helpUri: "https://oculum.dev/docs/rules/overpermissive-tools",
695
+ tags: ["security", "ai", "authorization"],
511
696
  },
512
697
  ai_rag_exfiltration: {
513
- name: 'AI RAG Data Exfiltration',
514
- description: 'RAG (Retrieval Augmented Generation) queries may expose data across tenant boundaries or leak sensitive context.',
515
- helpUri: 'https://oculum.dev/docs/rules/rag-exfiltration',
516
- tags: ['security', 'ai', 'data-exposure'],
698
+ name: "AI RAG Data Exfiltration",
699
+ description: "RAG (Retrieval Augmented Generation) queries may expose data across tenant boundaries or leak sensitive context.",
700
+ helpUri: "https://oculum.dev/docs/rules/rag-exfiltration",
701
+ tags: ["security", "ai", "data-exposure"],
517
702
  },
518
703
  ai_endpoint_unprotected: {
519
- name: 'AI Endpoint Unprotected',
520
- description: 'AI endpoint lacks authentication or rate limiting, potentially allowing abuse or cost attacks.',
521
- helpUri: 'https://oculum.dev/docs/rules/unprotected-endpoints',
522
- tags: ['security', 'ai', 'authentication'],
704
+ name: "AI Endpoint Unprotected",
705
+ description: "AI endpoint lacks authentication or rate limiting, potentially allowing abuse or cost attacks.",
706
+ helpUri: "https://oculum.dev/docs/rules/unprotected-endpoints",
707
+ tags: ["security", "ai", "authentication"],
523
708
  },
524
709
  ai_schema_mismatch: {
525
- name: 'AI Schema Validation Missing',
526
- description: 'AI-generated output is used without schema validation, potentially allowing malformed or malicious data.',
527
- helpUri: 'https://oculum.dev/docs/rules/schema-validation',
528
- tags: ['security', 'ai', 'validation'],
710
+ name: "AI Schema Validation Missing",
711
+ description: "AI-generated output is used without schema validation, potentially allowing malformed or malicious data.",
712
+ helpUri: "https://oculum.dev/docs/rules/schema-validation",
713
+ tags: ["security", "ai", "validation"],
529
714
  },
530
715
  sql_injection: {
531
- name: 'SQL Injection',
532
- description: 'User input is concatenated into SQL queries without parameterization, allowing SQL injection attacks.',
533
- helpUri: 'https://oculum.dev/docs/rules/sql-injection',
534
- tags: ['security', 'injection', 'database'],
716
+ name: "SQL Injection",
717
+ description: "User input is concatenated into SQL queries without parameterization, allowing SQL injection attacks.",
718
+ helpUri: "https://oculum.dev/docs/rules/sql-injection",
719
+ tags: ["security", "injection", "database"],
535
720
  },
536
721
  xss: {
537
- name: 'Cross-Site Scripting (XSS)',
538
- description: 'User input is rendered in HTML without proper escaping, allowing script injection.',
539
- helpUri: 'https://oculum.dev/docs/rules/xss',
540
- tags: ['security', 'injection', 'web'],
722
+ name: "Cross-Site Scripting (XSS)",
723
+ description: "User input is rendered in HTML without proper escaping, allowing script injection.",
724
+ helpUri: "https://oculum.dev/docs/rules/xss",
725
+ tags: ["security", "injection", "web"],
541
726
  },
542
727
  command_injection: {
543
- name: 'Command Injection',
544
- description: 'User input is passed to shell commands without sanitization, allowing arbitrary command execution.',
545
- helpUri: 'https://oculum.dev/docs/rules/command-injection',
546
- tags: ['security', 'injection', 'shell'],
728
+ name: "Command Injection",
729
+ description: "User input is passed to shell commands without sanitization, allowing arbitrary command execution.",
730
+ helpUri: "https://oculum.dev/docs/rules/command-injection",
731
+ tags: ["security", "injection", "shell"],
547
732
  },
548
733
  missing_auth: {
549
- name: 'Missing Authentication',
550
- description: 'Sensitive endpoint or route lacks authentication checks.',
551
- helpUri: 'https://oculum.dev/docs/rules/missing-auth',
552
- tags: ['security', 'authentication'],
734
+ name: "Missing Authentication",
735
+ description: "Sensitive endpoint or route lacks authentication checks.",
736
+ helpUri: "https://oculum.dev/docs/rules/missing-auth",
737
+ tags: ["security", "authentication"],
553
738
  },
554
739
  data_exposure: {
555
- name: 'Data Exposure',
556
- description: 'Sensitive data may be exposed through logging, error messages, or API responses.',
557
- helpUri: 'https://oculum.dev/docs/rules/data-exposure',
558
- tags: ['security', 'data-exposure'],
740
+ name: "Data Exposure",
741
+ description: "Sensitive data may be exposed through logging, error messages, or API responses.",
742
+ helpUri: "https://oculum.dev/docs/rules/data-exposure",
743
+ tags: ["security", "data-exposure"],
559
744
  },
560
745
  insecure_config: {
561
- name: 'Insecure Configuration',
562
- description: 'Security-relevant configuration is set to an insecure value.',
563
- helpUri: 'https://oculum.dev/docs/rules/insecure-config',
564
- tags: ['security', 'configuration'],
746
+ name: "Insecure Configuration",
747
+ description: "Security-relevant configuration is set to an insecure value.",
748
+ helpUri: "https://oculum.dev/docs/rules/insecure-config",
749
+ tags: ["security", "configuration"],
565
750
  },
566
751
  dangerous_function: {
567
- name: 'Dangerous Function',
568
- description: 'Use of a function known to be dangerous or deprecated for security reasons.',
569
- helpUri: 'https://oculum.dev/docs/rules/dangerous-functions',
570
- tags: ['security', 'code-quality'],
752
+ name: "Dangerous Function",
753
+ description: "Use of a function known to be dangerous or deprecated for security reasons.",
754
+ helpUri: "https://oculum.dev/docs/rules/dangerous-functions",
755
+ tags: ["security", "code-quality"],
571
756
  },
572
757
  };
573
758
  /**
@@ -583,11 +768,12 @@ function formatSARIF(result) {
583
768
  message: {
584
769
  text: v.description,
585
770
  },
586
- locations: [{
771
+ locations: [
772
+ {
587
773
  physicalLocation: {
588
774
  artifactLocation: {
589
775
  uri: v.filePath,
590
- uriBaseId: '%SRCROOT%',
776
+ uriBaseId: "%SRCROOT%",
591
777
  },
592
778
  region: {
593
779
  startLine: v.lineNumber,
@@ -595,15 +781,20 @@ function formatSARIF(result) {
595
781
  snippet: v.lineContent ? { text: v.lineContent } : undefined,
596
782
  },
597
783
  },
598
- }],
784
+ },
785
+ ],
599
786
  fingerprints: {
600
- 'oculum/v1': `${v.category}:${v.filePath}:${v.lineNumber}`,
787
+ "oculum/v1": `${v.category}:${v.filePath}:${v.lineNumber}`,
601
788
  },
602
- fixes: v.suggestedFix ? [{
603
- description: {
604
- text: v.suggestedFix,
789
+ fixes: v.suggestedFix
790
+ ? [
791
+ {
792
+ description: {
793
+ text: v.suggestedFix,
794
+ },
605
795
  },
606
- }] : undefined,
796
+ ]
797
+ : undefined,
607
798
  properties: {
608
799
  confidence: v.confidence,
609
800
  layer: v.layer,
@@ -617,59 +808,65 @@ function formatSARIF(result) {
617
808
  message: {
618
809
  text: s.title,
619
810
  },
620
- locations: [{
811
+ locations: [
812
+ {
621
813
  physicalLocation: {
622
814
  artifactLocation: {
623
815
  uri: s.filePath,
624
- uriBaseId: '%SRCROOT%',
816
+ uriBaseId: "%SRCROOT%",
625
817
  },
626
818
  region: {
627
819
  startLine: s.lineNumber,
628
820
  startColumn: 1,
629
821
  },
630
822
  },
631
- }],
823
+ },
824
+ ],
632
825
  fingerprints: {
633
- 'oculum/v1': `${s.category}:${s.filePath}:${s.lineNumber}`,
634
- 'oculum/hash': s.hash,
826
+ "oculum/v1": `${s.category}:${s.filePath}:${s.lineNumber}`,
827
+ "oculum/hash": s.hash,
635
828
  },
636
- suppressions: [{
637
- kind: s.suppressionType === 'inline' ? 'inSource' : 'external',
829
+ suppressions: [
830
+ {
831
+ kind: s.suppressionType === "inline" ? "inSource" : "external",
638
832
  justification: s.suppressionReason,
639
- state: 'accepted',
640
- }],
833
+ state: "accepted",
834
+ },
835
+ ],
641
836
  properties: {
642
837
  suppressionType: s.suppressionType,
643
838
  expires: s.expires,
644
839
  },
645
840
  }));
646
841
  return {
647
- $schema: 'https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json',
648
- version: '2.1.0',
649
- runs: [{
842
+ $schema: "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json",
843
+ version: "2.1.0",
844
+ runs: [
845
+ {
650
846
  tool: {
651
847
  driver: {
652
- name: 'Oculum',
653
- version: '1.0.0',
654
- informationUri: 'https://oculum.dev',
655
- organization: 'Oculum Security',
848
+ name: "Oculum",
849
+ version: "1.0.0",
850
+ informationUri: "https://oculum.dev",
851
+ organization: "Oculum Security",
656
852
  rules: getUniqueRules(result.vulnerabilities),
657
853
  },
658
854
  },
659
855
  results: [...activeResults, ...suppressedResults],
660
- columnKind: 'utf16CodeUnits',
661
- }],
856
+ columnKind: "utf16CodeUnits",
857
+ },
858
+ ],
662
859
  };
663
860
  }
664
861
  function mapSeverityToSARIF(severity) {
665
862
  switch (severity) {
666
- case 'critical':
667
- case 'high':
668
- return 'error';
669
- case 'medium':
670
- return 'warning';
863
+ case "critical":
864
+ case "high":
865
+ return "error";
866
+ case "medium":
867
+ return "warning";
671
868
  default:
672
- return 'note';
869
+ return "note";
673
870
  }
674
871
  }
675
872
  function getRuleIndex(vulnerabilities, category) {
@@ -693,7 +890,8 @@ function getUniqueRules(vulnerabilities) {
693
890
  continue;
694
891
  seen.add(v.category);
695
892
  const metadata = RULE_METADATA[v.category];
696
- const ruleName = metadata?.name || v.category.replace(/_/g, ' ').replace(/\b\w/g, c => c.toUpperCase());
893
+ const ruleName = metadata?.name ||
894
+ v.category.replace(/_/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
697
895
  rules.push({
698
896
  id: v.category,
699
897
  name: ruleName,
@@ -701,18 +899,23 @@ function getUniqueRules(vulnerabilities) {
701
899
  fullDescription: {
702
900
  text: metadata?.description || v.description,
703
901
  },
704
- helpUri: metadata?.helpUri || `https://oculum.dev/docs/rules/${v.category.replace(/_/g, '-')}`,
902
+ helpUri: metadata?.helpUri ||
903
+ `https://oculum.dev/docs/rules/${v.category.replace(/_/g, "-")}`,
705
904
  help: {
706
905
  text: metadata?.description || v.description,
707
- markdown: `# ${ruleName}\n\n${metadata?.description || v.description}\n\n[Learn more](${metadata?.helpUri || 'https://oculum.dev/docs'})`,
906
+ markdown: `# ${ruleName}\n\n${metadata?.description || v.description}\n\n[Learn more](${metadata?.helpUri || "https://oculum.dev/docs"})`,
708
907
  },
709
908
  defaultConfiguration: {
710
909
  level: mapSeverityToSARIF(v.severity),
711
910
  },
712
911
  properties: {
713
- tags: metadata?.tags || ['security'],
714
- precision: v.confidence === 'high' ? 'high' : v.confidence === 'medium' ? 'medium' : 'low',
715
- 'security-severity': mapSeverityToScore(v.severity),
912
+ tags: metadata?.tags || ["security"],
913
+ precision: v.confidence === "high"
914
+ ? "high"
915
+ : v.confidence === "medium"
916
+ ? "medium"
917
+ : "low",
918
+ "security-severity": mapSeverityToScore(v.severity),
716
919
  },
717
920
  });
718
921
  }
@@ -720,16 +923,16 @@ function getUniqueRules(vulnerabilities) {
720
923
  }
721
924
  function mapSeverityToScore(severity) {
722
925
  switch (severity) {
723
- case 'critical':
724
- return '9.0';
725
- case 'high':
726
- return '7.0';
727
- case 'medium':
728
- return '5.0';
729
- case 'low':
730
- return '3.0';
926
+ case "critical":
927
+ return "9.0";
928
+ case "high":
929
+ return "7.0";
930
+ case "medium":
931
+ return "5.0";
932
+ case "low":
933
+ return "3.0";
731
934
  default:
732
- return '1.0';
935
+ return "1.0";
733
936
  }
734
937
  }
735
938
  //# sourceMappingURL=cli-terminal.js.map