@oculum/scanner 1.0.14 → 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 (1323) 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.map +1 -1
  199. package/dist/detect/secrets/config-audit.js +36 -3
  200. package/dist/detect/secrets/config-audit.js.map +1 -1
  201. package/dist/detect/secrets/entropy.d.ts.map +1 -1
  202. package/dist/detect/secrets/entropy.js +180 -0
  203. package/dist/detect/secrets/entropy.js.map +1 -1
  204. package/dist/detect/secrets/index.d.ts +0 -2
  205. package/dist/detect/secrets/index.d.ts.map +1 -1
  206. package/dist/detect/secrets/index.js +7 -17
  207. package/dist/detect/secrets/index.js.map +1 -1
  208. package/dist/detect/structural/index.d.ts +15 -28
  209. package/dist/detect/structural/index.d.ts.map +1 -1
  210. package/dist/detect/structural/index.js +20 -497
  211. package/dist/detect/structural/index.js.map +1 -1
  212. package/dist/index.d.ts +3 -0
  213. package/dist/index.d.ts.map +1 -1
  214. package/dist/index.js +9 -1
  215. package/dist/index.js.map +1 -1
  216. package/dist/model/auth-helper-detector.d.ts.map +1 -1
  217. package/dist/model/auth-helper-detector.js +2 -7
  218. package/dist/model/auth-helper-detector.js.map +1 -1
  219. package/dist/model/import-resolver.d.ts.map +1 -1
  220. package/dist/model/import-resolver.js +94 -0
  221. package/dist/model/import-resolver.js.map +1 -1
  222. package/dist/model/imported-auth-detector.js +8 -8
  223. package/dist/model/imported-auth-detector.js.map +1 -1
  224. package/dist/model/index.d.ts +8 -0
  225. package/dist/model/index.d.ts.map +1 -1
  226. package/dist/model/index.js +198 -73
  227. package/dist/model/index.js.map +1 -1
  228. package/dist/model/module-graph.d.ts.map +1 -1
  229. package/dist/model/module-graph.js +22 -9
  230. package/dist/model/module-graph.js.map +1 -1
  231. package/dist/model/project-context.d.ts +1 -1
  232. package/dist/model/project-context.d.ts.map +1 -1
  233. package/dist/model/project-context.js +34 -0
  234. package/dist/model/project-context.js.map +1 -1
  235. package/dist/model/route-auth-resolver.d.ts.map +1 -1
  236. package/dist/model/route-auth-resolver.js +17 -2
  237. package/dist/model/route-auth-resolver.js.map +1 -1
  238. package/dist/model/route-discovery/index.js +1 -1
  239. package/dist/model/route-discovery/index.js.map +1 -1
  240. package/dist/model/route-discovery/nextjs.js +1 -1
  241. package/dist/model/route-discovery/nextjs.js.map +1 -1
  242. package/dist/model/route-discovery/python.d.ts +6 -3
  243. package/dist/model/route-discovery/python.d.ts.map +1 -1
  244. package/dist/model/route-discovery/python.js +132 -9
  245. package/dist/model/route-discovery/python.js.map +1 -1
  246. package/dist/model/route-discovery/types.d.ts +1 -1
  247. package/dist/model/route-discovery/types.d.ts.map +1 -1
  248. package/dist/model/route-discovery/utils.d.ts +8 -0
  249. package/dist/model/route-discovery/utils.d.ts.map +1 -1
  250. package/dist/model/route-discovery/utils.js +70 -0
  251. package/dist/model/route-discovery/utils.js.map +1 -1
  252. package/dist/model/taint-types.d.ts +0 -4
  253. package/dist/model/taint-types.d.ts.map +1 -1
  254. package/dist/parse/ast.d.ts +58 -0
  255. package/dist/parse/ast.d.ts.map +1 -0
  256. package/dist/parse/ast.js +230 -0
  257. package/dist/parse/ast.js.map +1 -0
  258. package/dist/parse/call-graph.d.ts +41 -0
  259. package/dist/parse/call-graph.d.ts.map +1 -0
  260. package/dist/parse/call-graph.js +386 -0
  261. package/dist/parse/call-graph.js.map +1 -0
  262. package/dist/parse/file-classifier.d.ts +11 -0
  263. package/dist/parse/file-classifier.d.ts.map +1 -1
  264. package/dist/parse/file-classifier.js +63 -15
  265. package/dist/parse/file-classifier.js.map +1 -1
  266. package/dist/parse/node-index.d.ts +32 -0
  267. package/dist/parse/node-index.d.ts.map +1 -0
  268. package/dist/parse/node-index.js +103 -0
  269. package/dist/parse/node-index.js.map +1 -0
  270. package/dist/parse/type-extractor.d.ts +50 -0
  271. package/dist/parse/type-extractor.d.ts.map +1 -0
  272. package/dist/parse/type-extractor.js +243 -0
  273. package/dist/parse/type-extractor.js.map +1 -0
  274. package/dist/pipeline/config.d.ts +7 -1
  275. package/dist/pipeline/config.d.ts.map +1 -1
  276. package/dist/pipeline/config.js.map +1 -1
  277. package/dist/pipeline/index.d.ts +3 -3
  278. package/dist/pipeline/index.d.ts.map +1 -1
  279. package/dist/pipeline/index.js +192 -64
  280. package/dist/pipeline/index.js.map +1 -1
  281. package/dist/pipeline/modes/incremental.d.ts.map +1 -1
  282. package/dist/pipeline/modes/incremental.js +2 -7
  283. package/dist/pipeline/modes/incremental.js.map +1 -1
  284. package/dist/postprocess/dedup.d.ts +5 -2
  285. package/dist/postprocess/dedup.d.ts.map +1 -1
  286. package/dist/postprocess/dedup.js +47 -16
  287. package/dist/postprocess/dedup.js.map +1 -1
  288. package/dist/report/build-result.d.ts +9 -4
  289. package/dist/report/build-result.d.ts.map +1 -1
  290. package/dist/report/build-result.js +15 -4
  291. package/dist/report/build-result.js.map +1 -1
  292. package/dist/report/formatters/cli-terminal.d.ts +1 -1
  293. package/dist/report/formatters/cli-terminal.d.ts.map +1 -1
  294. package/dist/report/formatters/cli-terminal.js +434 -231
  295. package/dist/report/formatters/cli-terminal.js.map +1 -1
  296. package/dist/report/sanitize.d.ts +10 -0
  297. package/dist/report/sanitize.d.ts.map +1 -0
  298. package/dist/report/sanitize.js +19 -0
  299. package/dist/report/sanitize.js.map +1 -0
  300. package/dist/score/adjustments.d.ts +20 -2
  301. package/dist/score/adjustments.d.ts.map +1 -1
  302. package/dist/score/adjustments.js +108 -37
  303. package/dist/score/adjustments.js.map +1 -1
  304. package/dist/score/confidence.d.ts +6 -0
  305. package/dist/score/confidence.d.ts.map +1 -1
  306. package/dist/score/confidence.js +10 -4
  307. package/dist/score/confidence.js.map +1 -1
  308. package/dist/score/evidence.d.ts +25 -0
  309. package/dist/score/evidence.d.ts.map +1 -0
  310. package/dist/score/evidence.js +51 -0
  311. package/dist/score/evidence.js.map +1 -0
  312. package/dist/score/index.d.ts +3 -1
  313. package/dist/score/index.d.ts.map +1 -1
  314. package/dist/score/index.js +25 -50
  315. package/dist/score/index.js.map +1 -1
  316. package/dist/score/types.d.ts +5 -1
  317. package/dist/score/types.d.ts.map +1 -1
  318. package/dist/shared/category-filter.d.ts.map +1 -1
  319. package/dist/shared/category-filter.js +12 -0
  320. package/dist/shared/category-filter.js.map +1 -1
  321. package/dist/shared/regex-utils.d.ts +3 -0
  322. package/dist/shared/regex-utils.d.ts.map +1 -0
  323. package/dist/shared/regex-utils.js +8 -0
  324. package/dist/shared/regex-utils.js.map +1 -0
  325. package/dist/shared/registry-clients.d.ts +7 -0
  326. package/dist/shared/registry-clients.d.ts.map +1 -1
  327. package/dist/shared/registry-clients.js +94 -17
  328. package/dist/shared/registry-clients.js.map +1 -1
  329. package/dist/shared/rules/metadata.d.ts.map +1 -1
  330. package/dist/shared/rules/metadata.js +17 -0
  331. package/dist/shared/rules/metadata.js.map +1 -1
  332. package/dist/shared/types.d.ts +59 -15
  333. package/dist/shared/types.d.ts.map +1 -1
  334. package/dist/shared/types.js +38 -21
  335. package/dist/shared/types.js.map +1 -1
  336. package/dist/taint/async-flow.d.ts +44 -0
  337. package/dist/taint/async-flow.d.ts.map +1 -0
  338. package/dist/taint/async-flow.js +271 -0
  339. package/dist/taint/async-flow.js.map +1 -0
  340. package/dist/taint/cfg-builder.d.ts +35 -0
  341. package/dist/taint/cfg-builder.d.ts.map +1 -0
  342. package/dist/taint/cfg-builder.js +980 -0
  343. package/dist/taint/cfg-builder.js.map +1 -0
  344. package/dist/taint/cfg-types.d.ts +76 -0
  345. package/dist/taint/cfg-types.d.ts.map +1 -0
  346. package/dist/taint/cfg-types.js +13 -0
  347. package/dist/taint/cfg-types.js.map +1 -0
  348. package/dist/taint/constant-propagation.d.ts +34 -0
  349. package/dist/taint/constant-propagation.d.ts.map +1 -0
  350. package/dist/taint/constant-propagation.js +164 -0
  351. package/dist/taint/constant-propagation.js.map +1 -0
  352. package/dist/taint/cross-file-analyzer.d.ts +27 -0
  353. package/dist/taint/cross-file-analyzer.d.ts.map +1 -0
  354. package/dist/taint/cross-file-analyzer.js +99 -0
  355. package/dist/taint/cross-file-analyzer.js.map +1 -0
  356. package/dist/taint/cross-file-index.d.ts +59 -0
  357. package/dist/taint/cross-file-index.d.ts.map +1 -0
  358. package/dist/taint/cross-file-index.js +183 -0
  359. package/dist/taint/cross-file-index.js.map +1 -0
  360. package/dist/taint/def-use.d.ts +27 -0
  361. package/dist/taint/def-use.d.ts.map +1 -0
  362. package/dist/taint/def-use.js +519 -0
  363. package/dist/taint/def-use.js.map +1 -0
  364. package/dist/taint/file-analysis-cache.d.ts +47 -0
  365. package/dist/taint/file-analysis-cache.d.ts.map +1 -0
  366. package/dist/taint/file-analysis-cache.js +107 -0
  367. package/dist/taint/file-analysis-cache.js.map +1 -0
  368. package/dist/taint/framework-models.d.ts +77 -0
  369. package/dist/taint/framework-models.d.ts.map +1 -0
  370. package/dist/taint/framework-models.js +258 -0
  371. package/dist/taint/framework-models.js.map +1 -0
  372. package/dist/taint/helpers.d.ts +31 -0
  373. package/dist/taint/helpers.d.ts.map +1 -0
  374. package/dist/taint/helpers.js +130 -0
  375. package/dist/taint/helpers.js.map +1 -0
  376. package/dist/taint/index.d.ts +28 -0
  377. package/dist/taint/index.d.ts.map +1 -0
  378. package/dist/taint/index.js +77 -0
  379. package/dist/taint/index.js.map +1 -0
  380. package/dist/taint/llm-registry.d.ts +47 -0
  381. package/dist/taint/llm-registry.d.ts.map +1 -0
  382. package/dist/taint/llm-registry.js +152 -0
  383. package/dist/taint/llm-registry.js.map +1 -0
  384. package/dist/taint/llm-risk-scoring.d.ts +54 -0
  385. package/dist/taint/llm-risk-scoring.d.ts.map +1 -0
  386. package/dist/taint/llm-risk-scoring.js +376 -0
  387. package/dist/taint/llm-risk-scoring.js.map +1 -0
  388. package/dist/taint/propagation-types.d.ts +104 -0
  389. package/dist/taint/propagation-types.d.ts.map +1 -0
  390. package/dist/taint/propagation-types.js +98 -0
  391. package/dist/taint/propagation-types.js.map +1 -0
  392. package/dist/taint/propagation.d.ts +111 -0
  393. package/dist/taint/propagation.d.ts.map +1 -0
  394. package/dist/taint/propagation.js +1576 -0
  395. package/dist/taint/propagation.js.map +1 -0
  396. package/dist/taint/sanitizer-registry.d.ts +26 -0
  397. package/dist/taint/sanitizer-registry.d.ts.map +1 -0
  398. package/dist/taint/sanitizer-registry.js +422 -0
  399. package/dist/taint/sanitizer-registry.js.map +1 -0
  400. package/dist/taint/sink-classifier.d.ts +27 -0
  401. package/dist/taint/sink-classifier.d.ts.map +1 -0
  402. package/dist/taint/sink-classifier.js +1166 -0
  403. package/dist/taint/sink-classifier.js.map +1 -0
  404. package/dist/taint/source-classifier.d.ts +29 -0
  405. package/dist/taint/source-classifier.d.ts.map +1 -0
  406. package/dist/taint/source-classifier.js +814 -0
  407. package/dist/taint/source-classifier.js.map +1 -0
  408. package/dist/taint/taint-analyzer.d.ts +33 -0
  409. package/dist/taint/taint-analyzer.d.ts.map +1 -0
  410. package/dist/taint/taint-analyzer.js +88 -0
  411. package/dist/taint/taint-analyzer.js.map +1 -0
  412. package/dist/taint/taint-summary.d.ts +37 -0
  413. package/dist/taint/taint-summary.d.ts.map +1 -0
  414. package/dist/taint/taint-summary.js +293 -0
  415. package/dist/taint/taint-summary.js.map +1 -0
  416. package/dist/taint/types.d.ts +47 -0
  417. package/dist/taint/types.d.ts.map +1 -0
  418. package/dist/taint/types.js +19 -0
  419. package/dist/taint/types.js.map +1 -0
  420. package/dist/validate/clients.d.ts +2 -1
  421. package/dist/validate/clients.d.ts.map +1 -1
  422. package/dist/validate/clients.js +3 -2
  423. package/dist/validate/clients.js.map +1 -1
  424. package/dist/validate/index.d.ts +5 -6
  425. package/dist/validate/index.d.ts.map +1 -1
  426. package/dist/validate/index.js +22 -21
  427. package/dist/validate/index.js.map +1 -1
  428. package/dist/validate/prompts/modules/ai-patterns.d.ts +1 -1
  429. package/dist/validate/prompts/modules/ai-patterns.d.ts.map +1 -1
  430. package/dist/validate/prompts/modules/ai-patterns.js +16 -0
  431. package/dist/validate/prompts/modules/ai-patterns.js.map +1 -1
  432. package/dist/validate/prompts/modules/common.d.ts +1 -1
  433. package/dist/validate/prompts/modules/common.d.ts.map +1 -1
  434. package/dist/validate/prompts/modules/common.js +12 -3
  435. package/dist/validate/prompts/modules/common.js.map +1 -1
  436. package/dist/validate/providers/anthropic.d.ts +4 -4
  437. package/dist/validate/providers/anthropic.d.ts.map +1 -1
  438. package/dist/validate/providers/anthropic.js +85 -58
  439. package/dist/validate/providers/anthropic.js.map +1 -1
  440. package/dist/validate/providers/openai.d.ts +4 -4
  441. package/dist/validate/providers/openai.d.ts.map +1 -1
  442. package/dist/validate/providers/openai.js +149 -99
  443. package/dist/validate/providers/openai.js.map +1 -1
  444. package/dist/validate/request-builder.d.ts +2 -8
  445. package/dist/validate/request-builder.d.ts.map +1 -1
  446. package/dist/validate/request-builder.js +4 -34
  447. package/dist/validate/request-builder.js.map +1 -1
  448. package/dist/validate/types.d.ts +9 -0
  449. package/dist/validate/types.d.ts.map +1 -1
  450. package/dist/validate/types.js.map +1 -1
  451. package/dist/validate/utils/path-helpers.js +2 -2
  452. package/dist/validate/utils/path-helpers.js.map +1 -1
  453. package/dist/validate/utils/response-parser.d.ts +10 -0
  454. package/dist/validate/utils/response-parser.d.ts.map +1 -1
  455. package/dist/validate/utils/response-parser.js +21 -2
  456. package/dist/validate/utils/response-parser.js.map +1 -1
  457. package/dist/validate/utils/retry.d.ts.map +1 -1
  458. package/dist/validate/utils/retry.js +19 -4
  459. package/dist/validate/utils/retry.js.map +1 -1
  460. package/package.json +7 -4
  461. package/src/__tests__/benchmark/fixtures/layer2/ai-execution-sinks.ts +1 -1
  462. package/src/__tests__/benchmark/planted-benchmark.test.ts +337 -0
  463. package/src/__tests__/benchmark/utils/test-runner.ts +38 -4
  464. package/src/__tests__/category-filter.test.ts +5 -1
  465. package/src/__tests__/context-engine/route-discovery/python.test.ts +726 -0
  466. package/src/__tests__/detect/ast-rules.test.ts +1043 -0
  467. package/src/__tests__/detect/offline-mode.test.ts +147 -0
  468. package/src/__tests__/detect/python-ast-rules.test.ts +569 -0
  469. package/src/__tests__/detect/python-helpers.test.ts +536 -0
  470. package/src/__tests__/detect/python-sast-rules.test.ts +453 -0
  471. package/src/__tests__/detect/rules-file-backdoor-decoders.test.ts +151 -0
  472. package/src/__tests__/detect/rules-file-backdoor.test.ts +284 -0
  473. package/src/__tests__/detect/taint-fix-templates.test.ts +150 -0
  474. package/src/__tests__/detect/taint-path-serialization.test.ts +170 -0
  475. package/src/__tests__/parse/call-graph.test.ts +300 -0
  476. package/src/__tests__/parse/python-parser.test.ts +274 -0
  477. package/src/__tests__/regression/known-false-positives.test.ts +491 -9
  478. package/src/__tests__/regression/rules-file-backdoor.test.ts +137 -0
  479. package/src/__tests__/score/adjustments.test.ts +34 -16
  480. package/src/__tests__/score/confidence.test.ts +84 -57
  481. package/src/__tests__/score/evidence-scoring.test.ts +249 -0
  482. package/src/__tests__/score/evidence.test.ts +144 -0
  483. package/src/__tests__/score/scoring-integration.test.ts +56 -34
  484. package/src/__tests__/score/taint-adjustments.test.ts +14 -228
  485. package/src/__tests__/snapshots/__snapshots__/scan-depth.test.ts.snap +65 -59
  486. package/src/__tests__/snapshots/scan-depth.test.ts +39 -7
  487. package/src/__tests__/taint/async-flow.test.ts +247 -0
  488. package/src/__tests__/taint/cfg-builder.test.ts +835 -0
  489. package/src/__tests__/taint/constant-propagation.test.ts +302 -0
  490. package/src/__tests__/taint/cross-file-index.test.ts +683 -0
  491. package/src/__tests__/taint/cross-file-integration.test.ts +275 -0
  492. package/src/__tests__/taint/cross-file-propagation.test.ts +910 -0
  493. package/src/__tests__/taint/def-use.test.ts +132 -0
  494. package/src/__tests__/taint/field-sensitive-sinks.test.ts +179 -0
  495. package/src/__tests__/taint/field-sensitivity.test.ts +342 -0
  496. package/src/__tests__/taint/file-analysis-cache.test.ts +290 -0
  497. package/src/__tests__/taint/framework-models.test.ts +227 -0
  498. package/src/__tests__/taint/llm-flow-graph.test.ts +850 -0
  499. package/src/__tests__/taint/llm-risk-scoring.test.ts +439 -0
  500. package/src/__tests__/taint/performance-parity.test.ts +315 -0
  501. package/src/__tests__/taint/propagation.test.ts +621 -0
  502. package/src/__tests__/taint/python-cross-file.test.ts +494 -0
  503. package/src/__tests__/taint/python-taint.test.ts +1344 -0
  504. package/src/__tests__/taint/sanitizer-registry.test.ts +304 -0
  505. package/src/__tests__/taint/sanitizer-regression.test.ts +111 -0
  506. package/src/__tests__/taint/sink-classifier.test.ts +537 -0
  507. package/src/__tests__/taint/source-classifier.test.ts +367 -0
  508. package/src/__tests__/taint/taint-pipeline.test.ts +418 -0
  509. package/src/__tests__/taint/taint-smoke.test.ts +400 -0
  510. package/src/__tests__/taint/taint-summary.test.ts +472 -0
  511. package/src/detect/ai-code/index.ts +6 -11
  512. package/src/detect/ast-rules/agent-tools-ast.ts +861 -0
  513. package/src/detect/ast-rules/ai-fingerprinting-ast.ts +451 -0
  514. package/src/detect/ast-rules/auth-patterns-ast.ts +304 -0
  515. package/src/detect/ast-rules/byok-ast.ts +195 -0
  516. package/src/detect/ast-rules/child-process-ast.ts +276 -0
  517. package/src/detect/ast-rules/dangerous-eval-ast.ts +227 -0
  518. package/src/detect/ast-rules/data-exposure-ast.ts +162 -0
  519. package/src/detect/ast-rules/dom-xss-ast.ts +260 -0
  520. package/src/detect/ast-rules/endpoint-protection-ast.ts +231 -0
  521. package/src/detect/ast-rules/entropy-ast.ts +268 -0
  522. package/src/detect/ast-rules/flask-debug-ast.ts +148 -0
  523. package/src/detect/ast-rules/framework-checks-ast.ts +200 -0
  524. package/src/detect/ast-rules/helpers/call-analysis.ts +256 -0
  525. package/src/detect/ast-rules/helpers/context-detection.ts +277 -0
  526. package/src/detect/ast-rules/helpers/control-flow.ts +179 -0
  527. package/src/detect/ast-rules/helpers/import-analysis.ts +185 -0
  528. package/src/detect/ast-rules/helpers/index.ts +133 -0
  529. package/src/detect/ast-rules/helpers/python-helpers.ts +1054 -0
  530. package/src/detect/ast-rules/helpers/scope-analysis.ts +224 -0
  531. package/src/detect/ast-rules/helpers/string-analysis.ts +215 -0
  532. package/src/detect/ast-rules/helpers/type-extraction.ts +138 -0
  533. package/src/detect/ast-rules/helpers/user-input.ts +256 -0
  534. package/src/detect/ast-rules/index.ts +311 -0
  535. package/src/detect/ast-rules/json-parse-ast.ts +162 -0
  536. package/src/detect/ast-rules/log-injection-ast.ts +243 -0
  537. package/src/detect/ast-rules/logic-gates-ast.ts +343 -0
  538. package/src/detect/ast-rules/mcp-security-ast.ts +808 -0
  539. package/src/detect/ast-rules/model-supply-chain-ast.ts +202 -0
  540. package/src/detect/ast-rules/package-hallucination-ast.ts +664 -0
  541. package/src/detect/ast-rules/prompt-hygiene-ast.ts +329 -0
  542. package/src/detect/ast-rules/rag-safety-ast.ts +689 -0
  543. package/src/detect/ast-rules/request-validation-ast.ts +122 -0
  544. package/src/detect/ast-rules/risky-imports-ast.ts +133 -0
  545. package/src/detect/ast-rules/schema-validation-ast.ts +244 -0
  546. package/src/detect/ast-rules/secret-patterns-ast.ts +223 -0
  547. package/src/detect/ast-rules/security-headers-ast.ts +206 -0
  548. package/src/detect/ast-rules/sql-injection-ast.ts +614 -0
  549. package/src/detect/ast-rules/ssrf-ast.ts +601 -0
  550. package/src/detect/ast-rules/taint-fix-templates.ts +108 -0
  551. package/src/detect/ast-rules/taint-flow-ast.ts +416 -0
  552. package/src/detect/ast-rules/variables-ast.ts +446 -0
  553. package/src/detect/ast-rules/weak-crypto-ast.ts +441 -0
  554. package/src/detect/ast-rules/xxe-ast.ts +184 -0
  555. package/src/detect/config/agent-skill-injection.ts +2 -24
  556. package/src/detect/config/index.ts +1 -0
  557. package/src/detect/config/osv-check.ts +6 -1
  558. package/src/detect/config/package-check.ts +6 -1
  559. package/src/detect/config/rules-file-backdoor.ts +438 -0
  560. package/src/detect/index.ts +146 -52
  561. package/src/detect/secrets/config-audit.ts +37 -3
  562. package/src/detect/secrets/entropy.ts +195 -0
  563. package/src/detect/secrets/index.ts +7 -16
  564. package/src/detect/structural/index.ts +23 -566
  565. package/src/index.ts +7 -0
  566. package/src/model/auth-helper-detector.ts +1 -7
  567. package/src/model/import-resolver.ts +104 -0
  568. package/src/model/imported-auth-detector.ts +1 -1
  569. package/src/model/index.ts +240 -80
  570. package/src/model/module-graph.ts +17 -5
  571. package/src/model/project-context.ts +28 -1
  572. package/src/model/route-auth-resolver.ts +18 -3
  573. package/src/model/route-discovery/index.ts +1 -1
  574. package/src/model/route-discovery/nextjs.ts +1 -1
  575. package/src/model/route-discovery/python.ts +156 -9
  576. package/src/model/route-discovery/types.ts +1 -1
  577. package/src/model/route-discovery/utils.ts +73 -0
  578. package/src/model/taint-types.ts +1 -6
  579. package/src/parse/ast.ts +271 -0
  580. package/src/parse/call-graph.ts +419 -0
  581. package/src/parse/file-classifier.ts +69 -15
  582. package/src/parse/node-index.ts +118 -0
  583. package/src/parse/type-extractor.ts +293 -0
  584. package/src/pipeline/config.ts +7 -0
  585. package/src/pipeline/index.ts +464 -199
  586. package/src/pipeline/modes/incremental.ts +1 -7
  587. package/src/postprocess/dedup.ts +48 -17
  588. package/src/report/build-result.ts +57 -29
  589. package/src/report/formatters/cli-terminal.ts +731 -415
  590. package/src/report/sanitize.ts +27 -0
  591. package/src/score/adjustments.ts +113 -40
  592. package/src/score/confidence.ts +10 -5
  593. package/src/score/evidence.ts +55 -0
  594. package/src/score/index.ts +27 -55
  595. package/src/score/types.ts +4 -0
  596. package/src/shared/category-filter.ts +12 -0
  597. package/src/shared/regex-utils.ts +4 -0
  598. package/src/shared/registry-clients.ts +106 -18
  599. package/src/shared/rules/__tests__/metadata.test.ts +5 -1
  600. package/src/shared/rules/metadata.ts +19 -0
  601. package/src/shared/types.ts +372 -253
  602. package/src/taint/async-flow.ts +301 -0
  603. package/src/taint/cfg-builder.ts +1127 -0
  604. package/src/taint/cfg-types.ts +110 -0
  605. package/src/taint/constant-propagation.ts +170 -0
  606. package/src/taint/cross-file-analyzer.ts +118 -0
  607. package/src/taint/cross-file-index.ts +275 -0
  608. package/src/taint/def-use.ts +556 -0
  609. package/src/taint/file-analysis-cache.ts +145 -0
  610. package/src/taint/framework-models.ts +313 -0
  611. package/src/taint/helpers.ts +138 -0
  612. package/src/taint/index.ts +71 -0
  613. package/src/taint/llm-registry.ts +174 -0
  614. package/src/taint/llm-risk-scoring.ts +412 -0
  615. package/src/taint/propagation-types.ts +188 -0
  616. package/src/taint/propagation.ts +1750 -0
  617. package/src/taint/sanitizer-registry.ts +490 -0
  618. package/src/taint/sink-classifier.ts +1402 -0
  619. package/src/taint/source-classifier.ts +859 -0
  620. package/src/taint/taint-analyzer.ts +112 -0
  621. package/src/taint/taint-summary.ts +341 -0
  622. package/src/taint/types.ts +86 -0
  623. package/src/validate/clients.ts +3 -2
  624. package/src/validate/index.ts +89 -53
  625. package/src/validate/prompts/modules/ai-patterns.ts +16 -0
  626. package/src/validate/prompts/modules/common.ts +12 -3
  627. package/src/validate/providers/anthropic.ts +254 -148
  628. package/src/validate/providers/openai.ts +363 -218
  629. package/src/validate/request-builder.ts +2 -45
  630. package/src/validate/types.ts +9 -0
  631. package/src/validate/utils/path-helpers.ts +2 -2
  632. package/src/validate/utils/response-parser.ts +32 -3
  633. package/src/validate/utils/retry.ts +19 -4
  634. package/dist/ai-context/index.d.ts +0 -6
  635. package/dist/ai-context/index.d.ts.map +0 -1
  636. package/dist/ai-context/index.js +0 -13
  637. package/dist/ai-context/index.js.map +0 -1
  638. package/dist/ai-context/manager.d.ts +0 -67
  639. package/dist/ai-context/manager.d.ts.map +0 -1
  640. package/dist/ai-context/manager.js +0 -104
  641. package/dist/ai-context/manager.js.map +0 -1
  642. package/dist/baseline/diff.d.ts +0 -32
  643. package/dist/baseline/diff.d.ts.map +0 -1
  644. package/dist/baseline/diff.js +0 -119
  645. package/dist/baseline/diff.js.map +0 -1
  646. package/dist/baseline/index.d.ts +0 -9
  647. package/dist/baseline/index.d.ts.map +0 -1
  648. package/dist/baseline/index.js +0 -19
  649. package/dist/baseline/index.js.map +0 -1
  650. package/dist/baseline/manager.d.ts +0 -67
  651. package/dist/baseline/manager.d.ts.map +0 -1
  652. package/dist/baseline/manager.js +0 -180
  653. package/dist/baseline/manager.js.map +0 -1
  654. package/dist/baseline/types.d.ts +0 -91
  655. package/dist/baseline/types.d.ts.map +0 -1
  656. package/dist/baseline/types.js +0 -12
  657. package/dist/baseline/types.js.map +0 -1
  658. package/dist/category-filter.d.ts +0 -125
  659. package/dist/category-filter.d.ts.map +0 -1
  660. package/dist/category-filter.js +0 -360
  661. package/dist/category-filter.js.map +0 -1
  662. package/dist/detect/ai-code/agent-tools.d.ts +0 -22
  663. package/dist/detect/ai-code/agent-tools.d.ts.map +0 -1
  664. package/dist/detect/ai-code/agent-tools.js +0 -1509
  665. package/dist/detect/ai-code/agent-tools.js.map +0 -1
  666. package/dist/detect/ai-code/byok-patterns.d.ts +0 -15
  667. package/dist/detect/ai-code/byok-patterns.d.ts.map +0 -1
  668. package/dist/detect/ai-code/byok-patterns.js +0 -313
  669. package/dist/detect/ai-code/byok-patterns.js.map +0 -1
  670. package/dist/detect/ai-code/endpoint-protection.d.ts +0 -38
  671. package/dist/detect/ai-code/endpoint-protection.d.ts.map +0 -1
  672. package/dist/detect/ai-code/endpoint-protection.js +0 -349
  673. package/dist/detect/ai-code/endpoint-protection.js.map +0 -1
  674. package/dist/detect/ai-code/execution-sinks.d.ts +0 -21
  675. package/dist/detect/ai-code/execution-sinks.d.ts.map +0 -1
  676. package/dist/detect/ai-code/execution-sinks.js +0 -1158
  677. package/dist/detect/ai-code/execution-sinks.js.map +0 -1
  678. package/dist/detect/ai-code/fingerprinting.d.ts +0 -10
  679. package/dist/detect/ai-code/fingerprinting.d.ts.map +0 -1
  680. package/dist/detect/ai-code/fingerprinting.js +0 -665
  681. package/dist/detect/ai-code/fingerprinting.js.map +0 -1
  682. package/dist/detect/ai-code/mcp-security.d.ts +0 -20
  683. package/dist/detect/ai-code/mcp-security.d.ts.map +0 -1
  684. package/dist/detect/ai-code/mcp-security.js +0 -880
  685. package/dist/detect/ai-code/mcp-security.js.map +0 -1
  686. package/dist/detect/ai-code/model-supply-chain.d.ts +0 -23
  687. package/dist/detect/ai-code/model-supply-chain.d.ts.map +0 -1
  688. package/dist/detect/ai-code/model-supply-chain.js +0 -447
  689. package/dist/detect/ai-code/model-supply-chain.js.map +0 -1
  690. package/dist/detect/ai-code/package-hallucination.d.ts +0 -22
  691. package/dist/detect/ai-code/package-hallucination.d.ts.map +0 -1
  692. package/dist/detect/ai-code/package-hallucination.js +0 -841
  693. package/dist/detect/ai-code/package-hallucination.js.map +0 -1
  694. package/dist/detect/ai-code/prompt-hygiene.d.ts +0 -22
  695. package/dist/detect/ai-code/prompt-hygiene.d.ts.map +0 -1
  696. package/dist/detect/ai-code/prompt-hygiene.js +0 -1177
  697. package/dist/detect/ai-code/prompt-hygiene.js.map +0 -1
  698. package/dist/detect/ai-code/rag-safety.d.ts +0 -24
  699. package/dist/detect/ai-code/rag-safety.d.ts.map +0 -1
  700. package/dist/detect/ai-code/rag-safety.js +0 -913
  701. package/dist/detect/ai-code/rag-safety.js.map +0 -1
  702. package/dist/detect/ai-code/schema-validation.d.ts +0 -28
  703. package/dist/detect/ai-code/schema-validation.d.ts.map +0 -1
  704. package/dist/detect/ai-code/schema-validation.js +0 -378
  705. package/dist/detect/ai-code/schema-validation.js.map +0 -1
  706. package/dist/detect/secrets/patterns.d.ts +0 -11
  707. package/dist/detect/secrets/patterns.d.ts.map +0 -1
  708. package/dist/detect/secrets/patterns.js +0 -518
  709. package/dist/detect/secrets/patterns.js.map +0 -1
  710. package/dist/detect/secrets/weak-crypto.d.ts +0 -10
  711. package/dist/detect/secrets/weak-crypto.d.ts.map +0 -1
  712. package/dist/detect/secrets/weak-crypto.js +0 -432
  713. package/dist/detect/secrets/weak-crypto.js.map +0 -1
  714. package/dist/detect/structural/auth-patterns.d.ts +0 -22
  715. package/dist/detect/structural/auth-patterns.d.ts.map +0 -1
  716. package/dist/detect/structural/auth-patterns.js +0 -533
  717. package/dist/detect/structural/auth-patterns.js.map +0 -1
  718. package/dist/detect/structural/dangerous-functions/child-process.d.ts +0 -16
  719. package/dist/detect/structural/dangerous-functions/child-process.d.ts.map +0 -1
  720. package/dist/detect/structural/dangerous-functions/child-process.js +0 -74
  721. package/dist/detect/structural/dangerous-functions/child-process.js.map +0 -1
  722. package/dist/detect/structural/dangerous-functions/dom-xss.d.ts +0 -34
  723. package/dist/detect/structural/dangerous-functions/dom-xss.d.ts.map +0 -1
  724. package/dist/detect/structural/dangerous-functions/dom-xss.js +0 -230
  725. package/dist/detect/structural/dangerous-functions/dom-xss.js.map +0 -1
  726. package/dist/detect/structural/dangerous-functions/index.d.ts +0 -16
  727. package/dist/detect/structural/dangerous-functions/index.d.ts.map +0 -1
  728. package/dist/detect/structural/dangerous-functions/index.js +0 -1193
  729. package/dist/detect/structural/dangerous-functions/index.js.map +0 -1
  730. package/dist/detect/structural/dangerous-functions/json-parse.d.ts +0 -31
  731. package/dist/detect/structural/dangerous-functions/json-parse.d.ts.map +0 -1
  732. package/dist/detect/structural/dangerous-functions/json-parse.js +0 -326
  733. package/dist/detect/structural/dangerous-functions/json-parse.js.map +0 -1
  734. package/dist/detect/structural/dangerous-functions/math-random.d.ts +0 -111
  735. package/dist/detect/structural/dangerous-functions/math-random.d.ts.map +0 -1
  736. package/dist/detect/structural/dangerous-functions/math-random.js +0 -684
  737. package/dist/detect/structural/dangerous-functions/math-random.js.map +0 -1
  738. package/dist/detect/structural/dangerous-functions/patterns.d.ts +0 -21
  739. package/dist/detect/structural/dangerous-functions/patterns.d.ts.map +0 -1
  740. package/dist/detect/structural/dangerous-functions/patterns.js +0 -163
  741. package/dist/detect/structural/dangerous-functions/patterns.js.map +0 -1
  742. package/dist/detect/structural/dangerous-functions/request-validation.d.ts +0 -13
  743. package/dist/detect/structural/dangerous-functions/request-validation.d.ts.map +0 -1
  744. package/dist/detect/structural/dangerous-functions/request-validation.js +0 -126
  745. package/dist/detect/structural/dangerous-functions/request-validation.js.map +0 -1
  746. package/dist/detect/structural/dangerous-functions/utils/control-flow.d.ts +0 -24
  747. package/dist/detect/structural/dangerous-functions/utils/control-flow.d.ts.map +0 -1
  748. package/dist/detect/structural/dangerous-functions/utils/control-flow.js +0 -70
  749. package/dist/detect/structural/dangerous-functions/utils/control-flow.js.map +0 -1
  750. package/dist/detect/structural/dangerous-functions/utils/helpers.d.ts +0 -31
  751. package/dist/detect/structural/dangerous-functions/utils/helpers.d.ts.map +0 -1
  752. package/dist/detect/structural/dangerous-functions/utils/helpers.js +0 -147
  753. package/dist/detect/structural/dangerous-functions/utils/helpers.js.map +0 -1
  754. package/dist/detect/structural/dangerous-functions/utils/index.d.ts +0 -9
  755. package/dist/detect/structural/dangerous-functions/utils/index.d.ts.map +0 -1
  756. package/dist/detect/structural/dangerous-functions/utils/index.js +0 -23
  757. package/dist/detect/structural/dangerous-functions/utils/index.js.map +0 -1
  758. package/dist/detect/structural/dangerous-functions/utils/schema-validation.d.ts +0 -22
  759. package/dist/detect/structural/dangerous-functions/utils/schema-validation.d.ts.map +0 -1
  760. package/dist/detect/structural/dangerous-functions/utils/schema-validation.js +0 -102
  761. package/dist/detect/structural/dangerous-functions/utils/schema-validation.js.map +0 -1
  762. package/dist/detect/structural/data-exposure.d.ts +0 -19
  763. package/dist/detect/structural/data-exposure.d.ts.map +0 -1
  764. package/dist/detect/structural/data-exposure.js +0 -262
  765. package/dist/detect/structural/data-exposure.js.map +0 -1
  766. package/dist/detect/structural/framework-checks.d.ts +0 -10
  767. package/dist/detect/structural/framework-checks.d.ts.map +0 -1
  768. package/dist/detect/structural/framework-checks.js +0 -389
  769. package/dist/detect/structural/framework-checks.js.map +0 -1
  770. package/dist/detect/structural/log-injection.d.ts +0 -18
  771. package/dist/detect/structural/log-injection.d.ts.map +0 -1
  772. package/dist/detect/structural/log-injection.js +0 -217
  773. package/dist/detect/structural/log-injection.js.map +0 -1
  774. package/dist/detect/structural/logic-gates.d.ts +0 -10
  775. package/dist/detect/structural/logic-gates.d.ts.map +0 -1
  776. package/dist/detect/structural/logic-gates.js +0 -227
  777. package/dist/detect/structural/logic-gates.js.map +0 -1
  778. package/dist/detect/structural/risky-imports.d.ts +0 -10
  779. package/dist/detect/structural/risky-imports.d.ts.map +0 -1
  780. package/dist/detect/structural/risky-imports.js +0 -168
  781. package/dist/detect/structural/risky-imports.js.map +0 -1
  782. package/dist/detect/structural/security-headers.d.ts +0 -18
  783. package/dist/detect/structural/security-headers.d.ts.map +0 -1
  784. package/dist/detect/structural/security-headers.js +0 -196
  785. package/dist/detect/structural/security-headers.js.map +0 -1
  786. package/dist/detect/structural/ssrf-detection.d.ts +0 -18
  787. package/dist/detect/structural/ssrf-detection.d.ts.map +0 -1
  788. package/dist/detect/structural/ssrf-detection.js +0 -263
  789. package/dist/detect/structural/ssrf-detection.js.map +0 -1
  790. package/dist/detect/structural/variables.d.ts +0 -11
  791. package/dist/detect/structural/variables.d.ts.map +0 -1
  792. package/dist/detect/structural/variables.js +0 -159
  793. package/dist/detect/structural/variables.js.map +0 -1
  794. package/dist/detect/structural/xxe-detection.d.ts +0 -18
  795. package/dist/detect/structural/xxe-detection.d.ts.map +0 -1
  796. package/dist/detect/structural/xxe-detection.js +0 -245
  797. package/dist/detect/structural/xxe-detection.js.map +0 -1
  798. package/dist/filtering/context-adjustments.d.ts +0 -23
  799. package/dist/filtering/context-adjustments.d.ts.map +0 -1
  800. package/dist/filtering/context-adjustments.js +0 -100
  801. package/dist/filtering/context-adjustments.js.map +0 -1
  802. package/dist/filtering/index.d.ts +0 -3
  803. package/dist/filtering/index.d.ts.map +0 -1
  804. package/dist/filtering/index.js +0 -8
  805. package/dist/filtering/index.js.map +0 -1
  806. package/dist/filtering/pipeline.d.ts +0 -48
  807. package/dist/filtering/pipeline.d.ts.map +0 -1
  808. package/dist/filtering/pipeline.js +0 -76
  809. package/dist/filtering/pipeline.js.map +0 -1
  810. package/dist/formatters/ai-context.d.ts +0 -23
  811. package/dist/formatters/ai-context.d.ts.map +0 -1
  812. package/dist/formatters/ai-context.js +0 -238
  813. package/dist/formatters/ai-context.js.map +0 -1
  814. package/dist/formatters/cli-terminal.d.ts +0 -65
  815. package/dist/formatters/cli-terminal.d.ts.map +0 -1
  816. package/dist/formatters/cli-terminal.js +0 -735
  817. package/dist/formatters/cli-terminal.js.map +0 -1
  818. package/dist/formatters/github-comment.d.ts +0 -41
  819. package/dist/formatters/github-comment.d.ts.map +0 -1
  820. package/dist/formatters/github-comment.js +0 -370
  821. package/dist/formatters/github-comment.js.map +0 -1
  822. package/dist/formatters/grouping.d.ts +0 -52
  823. package/dist/formatters/grouping.d.ts.map +0 -1
  824. package/dist/formatters/grouping.js +0 -152
  825. package/dist/formatters/grouping.js.map +0 -1
  826. package/dist/formatters/ide/claude-code.d.ts +0 -17
  827. package/dist/formatters/ide/claude-code.d.ts.map +0 -1
  828. package/dist/formatters/ide/claude-code.js +0 -94
  829. package/dist/formatters/ide/claude-code.js.map +0 -1
  830. package/dist/formatters/ide/cursor.d.ts +0 -13
  831. package/dist/formatters/ide/cursor.d.ts.map +0 -1
  832. package/dist/formatters/ide/cursor.js +0 -125
  833. package/dist/formatters/ide/cursor.js.map +0 -1
  834. package/dist/formatters/ide/index.d.ts +0 -62
  835. package/dist/formatters/ide/index.d.ts.map +0 -1
  836. package/dist/formatters/ide/index.js +0 -184
  837. package/dist/formatters/ide/index.js.map +0 -1
  838. package/dist/formatters/ide/windsurf.d.ts +0 -13
  839. package/dist/formatters/ide/windsurf.d.ts.map +0 -1
  840. package/dist/formatters/ide/windsurf.js +0 -117
  841. package/dist/formatters/ide/windsurf.js.map +0 -1
  842. package/dist/formatters/index.d.ts +0 -11
  843. package/dist/formatters/index.d.ts.map +0 -1
  844. package/dist/formatters/index.js +0 -54
  845. package/dist/formatters/index.js.map +0 -1
  846. package/dist/formatters/vscode-diagnostic.d.ts +0 -103
  847. package/dist/formatters/vscode-diagnostic.d.ts.map +0 -1
  848. package/dist/formatters/vscode-diagnostic.js +0 -151
  849. package/dist/formatters/vscode-diagnostic.js.map +0 -1
  850. package/dist/layer1/comments.d.ts +0 -11
  851. package/dist/layer1/comments.d.ts.map +0 -1
  852. package/dist/layer1/comments.js +0 -203
  853. package/dist/layer1/comments.js.map +0 -1
  854. package/dist/layer1/config-audit.d.ts +0 -11
  855. package/dist/layer1/config-audit.d.ts.map +0 -1
  856. package/dist/layer1/config-audit.js +0 -311
  857. package/dist/layer1/config-audit.js.map +0 -1
  858. package/dist/layer1/config-mcp-audit.d.ts +0 -23
  859. package/dist/layer1/config-mcp-audit.d.ts.map +0 -1
  860. package/dist/layer1/config-mcp-audit.js +0 -239
  861. package/dist/layer1/config-mcp-audit.js.map +0 -1
  862. package/dist/layer1/entropy.d.ts +0 -11
  863. package/dist/layer1/entropy.d.ts.map +0 -1
  864. package/dist/layer1/entropy.js +0 -741
  865. package/dist/layer1/entropy.js.map +0 -1
  866. package/dist/layer1/file-flags.d.ts +0 -10
  867. package/dist/layer1/file-flags.d.ts.map +0 -1
  868. package/dist/layer1/file-flags.js +0 -119
  869. package/dist/layer1/file-flags.js.map +0 -1
  870. package/dist/layer1/index.d.ts +0 -38
  871. package/dist/layer1/index.d.ts.map +0 -1
  872. package/dist/layer1/index.js +0 -170
  873. package/dist/layer1/index.js.map +0 -1
  874. package/dist/layer1/patterns.d.ts +0 -11
  875. package/dist/layer1/patterns.d.ts.map +0 -1
  876. package/dist/layer1/patterns.js +0 -512
  877. package/dist/layer1/patterns.js.map +0 -1
  878. package/dist/layer1/urls.d.ts +0 -11
  879. package/dist/layer1/urls.d.ts.map +0 -1
  880. package/dist/layer1/urls.js +0 -444
  881. package/dist/layer1/urls.js.map +0 -1
  882. package/dist/layer1/weak-crypto.d.ts +0 -10
  883. package/dist/layer1/weak-crypto.d.ts.map +0 -1
  884. package/dist/layer1/weak-crypto.js +0 -428
  885. package/dist/layer1/weak-crypto.js.map +0 -1
  886. package/dist/layer2/ai-agent-tools.d.ts +0 -22
  887. package/dist/layer2/ai-agent-tools.d.ts.map +0 -1
  888. package/dist/layer2/ai-agent-tools.js +0 -1490
  889. package/dist/layer2/ai-agent-tools.js.map +0 -1
  890. package/dist/layer2/ai-endpoint-protection.d.ts +0 -38
  891. package/dist/layer2/ai-endpoint-protection.d.ts.map +0 -1
  892. package/dist/layer2/ai-endpoint-protection.js +0 -346
  893. package/dist/layer2/ai-endpoint-protection.js.map +0 -1
  894. package/dist/layer2/ai-execution-sinks.d.ts +0 -21
  895. package/dist/layer2/ai-execution-sinks.d.ts.map +0 -1
  896. package/dist/layer2/ai-execution-sinks.js +0 -1155
  897. package/dist/layer2/ai-execution-sinks.js.map +0 -1
  898. package/dist/layer2/ai-fingerprinting.d.ts +0 -10
  899. package/dist/layer2/ai-fingerprinting.d.ts.map +0 -1
  900. package/dist/layer2/ai-fingerprinting.js +0 -650
  901. package/dist/layer2/ai-fingerprinting.js.map +0 -1
  902. package/dist/layer2/ai-mcp-security.d.ts +0 -20
  903. package/dist/layer2/ai-mcp-security.d.ts.map +0 -1
  904. package/dist/layer2/ai-mcp-security.js +0 -877
  905. package/dist/layer2/ai-mcp-security.js.map +0 -1
  906. package/dist/layer2/ai-package-hallucination.d.ts +0 -22
  907. package/dist/layer2/ai-package-hallucination.d.ts.map +0 -1
  908. package/dist/layer2/ai-package-hallucination.js +0 -828
  909. package/dist/layer2/ai-package-hallucination.js.map +0 -1
  910. package/dist/layer2/ai-prompt-hygiene.d.ts +0 -22
  911. package/dist/layer2/ai-prompt-hygiene.d.ts.map +0 -1
  912. package/dist/layer2/ai-prompt-hygiene.js +0 -1156
  913. package/dist/layer2/ai-prompt-hygiene.js.map +0 -1
  914. package/dist/layer2/ai-rag-safety.d.ts +0 -24
  915. package/dist/layer2/ai-rag-safety.d.ts.map +0 -1
  916. package/dist/layer2/ai-rag-safety.js +0 -910
  917. package/dist/layer2/ai-rag-safety.js.map +0 -1
  918. package/dist/layer2/ai-schema-validation.d.ts +0 -28
  919. package/dist/layer2/ai-schema-validation.d.ts.map +0 -1
  920. package/dist/layer2/ai-schema-validation.js +0 -375
  921. package/dist/layer2/ai-schema-validation.js.map +0 -1
  922. package/dist/layer2/auth-antipatterns.d.ts +0 -22
  923. package/dist/layer2/auth-antipatterns.d.ts.map +0 -1
  924. package/dist/layer2/auth-antipatterns.js +0 -522
  925. package/dist/layer2/auth-antipatterns.js.map +0 -1
  926. package/dist/layer2/byok-patterns.d.ts +0 -15
  927. package/dist/layer2/byok-patterns.d.ts.map +0 -1
  928. package/dist/layer2/byok-patterns.js +0 -302
  929. package/dist/layer2/byok-patterns.js.map +0 -1
  930. package/dist/layer2/dangerous-functions/child-process.d.ts +0 -16
  931. package/dist/layer2/dangerous-functions/child-process.d.ts.map +0 -1
  932. package/dist/layer2/dangerous-functions/child-process.js +0 -74
  933. package/dist/layer2/dangerous-functions/child-process.js.map +0 -1
  934. package/dist/layer2/dangerous-functions/dom-xss.d.ts +0 -34
  935. package/dist/layer2/dangerous-functions/dom-xss.d.ts.map +0 -1
  936. package/dist/layer2/dangerous-functions/dom-xss.js +0 -230
  937. package/dist/layer2/dangerous-functions/dom-xss.js.map +0 -1
  938. package/dist/layer2/dangerous-functions/index.d.ts +0 -16
  939. package/dist/layer2/dangerous-functions/index.d.ts.map +0 -1
  940. package/dist/layer2/dangerous-functions/index.js +0 -1152
  941. package/dist/layer2/dangerous-functions/index.js.map +0 -1
  942. package/dist/layer2/dangerous-functions/json-parse.d.ts +0 -31
  943. package/dist/layer2/dangerous-functions/json-parse.d.ts.map +0 -1
  944. package/dist/layer2/dangerous-functions/json-parse.js +0 -319
  945. package/dist/layer2/dangerous-functions/json-parse.js.map +0 -1
  946. package/dist/layer2/dangerous-functions/math-random.d.ts +0 -111
  947. package/dist/layer2/dangerous-functions/math-random.d.ts.map +0 -1
  948. package/dist/layer2/dangerous-functions/math-random.js +0 -684
  949. package/dist/layer2/dangerous-functions/math-random.js.map +0 -1
  950. package/dist/layer2/dangerous-functions/patterns.d.ts +0 -21
  951. package/dist/layer2/dangerous-functions/patterns.d.ts.map +0 -1
  952. package/dist/layer2/dangerous-functions/patterns.js +0 -163
  953. package/dist/layer2/dangerous-functions/patterns.js.map +0 -1
  954. package/dist/layer2/dangerous-functions/request-validation.d.ts +0 -13
  955. package/dist/layer2/dangerous-functions/request-validation.d.ts.map +0 -1
  956. package/dist/layer2/dangerous-functions/request-validation.js +0 -119
  957. package/dist/layer2/dangerous-functions/request-validation.js.map +0 -1
  958. package/dist/layer2/dangerous-functions/utils/control-flow.d.ts +0 -24
  959. package/dist/layer2/dangerous-functions/utils/control-flow.d.ts.map +0 -1
  960. package/dist/layer2/dangerous-functions/utils/control-flow.js +0 -70
  961. package/dist/layer2/dangerous-functions/utils/control-flow.js.map +0 -1
  962. package/dist/layer2/dangerous-functions/utils/helpers.d.ts +0 -31
  963. package/dist/layer2/dangerous-functions/utils/helpers.d.ts.map +0 -1
  964. package/dist/layer2/dangerous-functions/utils/helpers.js +0 -147
  965. package/dist/layer2/dangerous-functions/utils/helpers.js.map +0 -1
  966. package/dist/layer2/dangerous-functions/utils/index.d.ts +0 -9
  967. package/dist/layer2/dangerous-functions/utils/index.d.ts.map +0 -1
  968. package/dist/layer2/dangerous-functions/utils/index.js +0 -23
  969. package/dist/layer2/dangerous-functions/utils/index.js.map +0 -1
  970. package/dist/layer2/dangerous-functions/utils/schema-validation.d.ts +0 -22
  971. package/dist/layer2/dangerous-functions/utils/schema-validation.d.ts.map +0 -1
  972. package/dist/layer2/dangerous-functions/utils/schema-validation.js +0 -102
  973. package/dist/layer2/dangerous-functions/utils/schema-validation.js.map +0 -1
  974. package/dist/layer2/data-exposure.d.ts +0 -19
  975. package/dist/layer2/data-exposure.d.ts.map +0 -1
  976. package/dist/layer2/data-exposure.js +0 -255
  977. package/dist/layer2/data-exposure.js.map +0 -1
  978. package/dist/layer2/framework-checks.d.ts +0 -10
  979. package/dist/layer2/framework-checks.d.ts.map +0 -1
  980. package/dist/layer2/framework-checks.js +0 -384
  981. package/dist/layer2/framework-checks.js.map +0 -1
  982. package/dist/layer2/index.d.ts +0 -74
  983. package/dist/layer2/index.d.ts.map +0 -1
  984. package/dist/layer2/index.js +0 -544
  985. package/dist/layer2/index.js.map +0 -1
  986. package/dist/layer2/log-injection.d.ts +0 -18
  987. package/dist/layer2/log-injection.d.ts.map +0 -1
  988. package/dist/layer2/log-injection.js +0 -214
  989. package/dist/layer2/log-injection.js.map +0 -1
  990. package/dist/layer2/logic-gates.d.ts +0 -10
  991. package/dist/layer2/logic-gates.d.ts.map +0 -1
  992. package/dist/layer2/logic-gates.js +0 -220
  993. package/dist/layer2/logic-gates.js.map +0 -1
  994. package/dist/layer2/model-supply-chain.d.ts +0 -23
  995. package/dist/layer2/model-supply-chain.d.ts.map +0 -1
  996. package/dist/layer2/model-supply-chain.js +0 -444
  997. package/dist/layer2/model-supply-chain.js.map +0 -1
  998. package/dist/layer2/risky-imports.d.ts +0 -10
  999. package/dist/layer2/risky-imports.d.ts.map +0 -1
  1000. package/dist/layer2/risky-imports.js +0 -165
  1001. package/dist/layer2/risky-imports.js.map +0 -1
  1002. package/dist/layer2/security-headers.d.ts +0 -18
  1003. package/dist/layer2/security-headers.d.ts.map +0 -1
  1004. package/dist/layer2/security-headers.js +0 -187
  1005. package/dist/layer2/security-headers.js.map +0 -1
  1006. package/dist/layer2/ssrf-detection.d.ts +0 -18
  1007. package/dist/layer2/ssrf-detection.d.ts.map +0 -1
  1008. package/dist/layer2/ssrf-detection.js +0 -252
  1009. package/dist/layer2/ssrf-detection.js.map +0 -1
  1010. package/dist/layer2/variables.d.ts +0 -11
  1011. package/dist/layer2/variables.d.ts.map +0 -1
  1012. package/dist/layer2/variables.js +0 -156
  1013. package/dist/layer2/variables.js.map +0 -1
  1014. package/dist/layer2/xxe-detection.d.ts +0 -18
  1015. package/dist/layer2/xxe-detection.d.ts.map +0 -1
  1016. package/dist/layer2/xxe-detection.js +0 -242
  1017. package/dist/layer2/xxe-detection.js.map +0 -1
  1018. package/dist/layer3/anthropic/auto-dismiss.d.ts +0 -24
  1019. package/dist/layer3/anthropic/auto-dismiss.d.ts.map +0 -1
  1020. package/dist/layer3/anthropic/auto-dismiss.js +0 -199
  1021. package/dist/layer3/anthropic/auto-dismiss.js.map +0 -1
  1022. package/dist/layer3/anthropic/clients.d.ts +0 -44
  1023. package/dist/layer3/anthropic/clients.d.ts.map +0 -1
  1024. package/dist/layer3/anthropic/clients.js +0 -81
  1025. package/dist/layer3/anthropic/clients.js.map +0 -1
  1026. package/dist/layer3/anthropic/index.d.ts +0 -41
  1027. package/dist/layer3/anthropic/index.d.ts.map +0 -1
  1028. package/dist/layer3/anthropic/index.js +0 -141
  1029. package/dist/layer3/anthropic/index.js.map +0 -1
  1030. package/dist/layer3/anthropic/prompts/index.d.ts +0 -8
  1031. package/dist/layer3/anthropic/prompts/index.d.ts.map +0 -1
  1032. package/dist/layer3/anthropic/prompts/index.js +0 -16
  1033. package/dist/layer3/anthropic/prompts/index.js.map +0 -1
  1034. package/dist/layer3/anthropic/prompts/modules/ai-patterns.d.ts +0 -19
  1035. package/dist/layer3/anthropic/prompts/modules/ai-patterns.d.ts.map +0 -1
  1036. package/dist/layer3/anthropic/prompts/modules/ai-patterns.js +0 -156
  1037. package/dist/layer3/anthropic/prompts/modules/ai-patterns.js.map +0 -1
  1038. package/dist/layer3/anthropic/prompts/modules/auth-access.d.ts +0 -9
  1039. package/dist/layer3/anthropic/prompts/modules/auth-access.d.ts.map +0 -1
  1040. package/dist/layer3/anthropic/prompts/modules/auth-access.js +0 -25
  1041. package/dist/layer3/anthropic/prompts/modules/auth-access.js.map +0 -1
  1042. package/dist/layer3/anthropic/prompts/modules/common.d.ts +0 -11
  1043. package/dist/layer3/anthropic/prompts/modules/common.d.ts.map +0 -1
  1044. package/dist/layer3/anthropic/prompts/modules/common.js +0 -152
  1045. package/dist/layer3/anthropic/prompts/modules/common.js.map +0 -1
  1046. package/dist/layer3/anthropic/prompts/modules/index.d.ts +0 -54
  1047. package/dist/layer3/anthropic/prompts/modules/index.d.ts.map +0 -1
  1048. package/dist/layer3/anthropic/prompts/modules/index.js +0 -185
  1049. package/dist/layer3/anthropic/prompts/modules/index.js.map +0 -1
  1050. package/dist/layer3/anthropic/prompts/modules/owasp-classic.d.ts +0 -8
  1051. package/dist/layer3/anthropic/prompts/modules/owasp-classic.d.ts.map +0 -1
  1052. package/dist/layer3/anthropic/prompts/modules/owasp-classic.js +0 -84
  1053. package/dist/layer3/anthropic/prompts/modules/owasp-classic.js.map +0 -1
  1054. package/dist/layer3/anthropic/prompts/modules/secrets-crypto.d.ts +0 -8
  1055. package/dist/layer3/anthropic/prompts/modules/secrets-crypto.d.ts.map +0 -1
  1056. package/dist/layer3/anthropic/prompts/modules/secrets-crypto.js +0 -68
  1057. package/dist/layer3/anthropic/prompts/modules/secrets-crypto.js.map +0 -1
  1058. package/dist/layer3/anthropic/prompts/modules/xss-prompt.d.ts +0 -8
  1059. package/dist/layer3/anthropic/prompts/modules/xss-prompt.d.ts.map +0 -1
  1060. package/dist/layer3/anthropic/prompts/modules/xss-prompt.js +0 -22
  1061. package/dist/layer3/anthropic/prompts/modules/xss-prompt.js.map +0 -1
  1062. package/dist/layer3/anthropic/prompts/semantic-analysis.d.ts +0 -15
  1063. package/dist/layer3/anthropic/prompts/semantic-analysis.d.ts.map +0 -1
  1064. package/dist/layer3/anthropic/prompts/semantic-analysis.js +0 -169
  1065. package/dist/layer3/anthropic/prompts/semantic-analysis.js.map +0 -1
  1066. package/dist/layer3/anthropic/prompts/validation.d.ts +0 -18
  1067. package/dist/layer3/anthropic/prompts/validation.d.ts.map +0 -1
  1068. package/dist/layer3/anthropic/prompts/validation.js +0 -25
  1069. package/dist/layer3/anthropic/prompts/validation.js.map +0 -1
  1070. package/dist/layer3/anthropic/providers/anthropic.d.ts +0 -21
  1071. package/dist/layer3/anthropic/providers/anthropic.d.ts.map +0 -1
  1072. package/dist/layer3/anthropic/providers/anthropic.js +0 -269
  1073. package/dist/layer3/anthropic/providers/anthropic.js.map +0 -1
  1074. package/dist/layer3/anthropic/providers/index.d.ts +0 -8
  1075. package/dist/layer3/anthropic/providers/index.d.ts.map +0 -1
  1076. package/dist/layer3/anthropic/providers/index.js +0 -15
  1077. package/dist/layer3/anthropic/providers/index.js.map +0 -1
  1078. package/dist/layer3/anthropic/providers/openai.d.ts +0 -18
  1079. package/dist/layer3/anthropic/providers/openai.d.ts.map +0 -1
  1080. package/dist/layer3/anthropic/providers/openai.js +0 -343
  1081. package/dist/layer3/anthropic/providers/openai.js.map +0 -1
  1082. package/dist/layer3/anthropic/request-builder.d.ts +0 -27
  1083. package/dist/layer3/anthropic/request-builder.d.ts.map +0 -1
  1084. package/dist/layer3/anthropic/request-builder.js +0 -150
  1085. package/dist/layer3/anthropic/request-builder.js.map +0 -1
  1086. package/dist/layer3/anthropic/types.d.ts +0 -88
  1087. package/dist/layer3/anthropic/types.d.ts.map +0 -1
  1088. package/dist/layer3/anthropic/types.js +0 -38
  1089. package/dist/layer3/anthropic/types.js.map +0 -1
  1090. package/dist/layer3/anthropic/utils/context-extractor.d.ts +0 -55
  1091. package/dist/layer3/anthropic/utils/context-extractor.d.ts.map +0 -1
  1092. package/dist/layer3/anthropic/utils/context-extractor.js +0 -161
  1093. package/dist/layer3/anthropic/utils/context-extractor.js.map +0 -1
  1094. package/dist/layer3/anthropic/utils/index.d.ts +0 -11
  1095. package/dist/layer3/anthropic/utils/index.d.ts.map +0 -1
  1096. package/dist/layer3/anthropic/utils/index.js +0 -27
  1097. package/dist/layer3/anthropic/utils/index.js.map +0 -1
  1098. package/dist/layer3/anthropic/utils/path-helpers.d.ts +0 -21
  1099. package/dist/layer3/anthropic/utils/path-helpers.d.ts.map +0 -1
  1100. package/dist/layer3/anthropic/utils/path-helpers.js +0 -69
  1101. package/dist/layer3/anthropic/utils/path-helpers.js.map +0 -1
  1102. package/dist/layer3/anthropic/utils/response-parser.d.ts +0 -40
  1103. package/dist/layer3/anthropic/utils/response-parser.d.ts.map +0 -1
  1104. package/dist/layer3/anthropic/utils/response-parser.js +0 -285
  1105. package/dist/layer3/anthropic/utils/response-parser.js.map +0 -1
  1106. package/dist/layer3/anthropic/utils/retry.d.ts +0 -15
  1107. package/dist/layer3/anthropic/utils/retry.d.ts.map +0 -1
  1108. package/dist/layer3/anthropic/utils/retry.js +0 -62
  1109. package/dist/layer3/anthropic/utils/retry.js.map +0 -1
  1110. package/dist/layer3/index.d.ts +0 -27
  1111. package/dist/layer3/index.d.ts.map +0 -1
  1112. package/dist/layer3/index.js +0 -150
  1113. package/dist/layer3/index.js.map +0 -1
  1114. package/dist/layer3/osv-check.d.ts +0 -75
  1115. package/dist/layer3/osv-check.d.ts.map +0 -1
  1116. package/dist/layer3/osv-check.js +0 -308
  1117. package/dist/layer3/osv-check.js.map +0 -1
  1118. package/dist/layer3/package-check.d.ts +0 -63
  1119. package/dist/layer3/package-check.d.ts.map +0 -1
  1120. package/dist/layer3/package-check.js +0 -508
  1121. package/dist/layer3/package-check.js.map +0 -1
  1122. package/dist/model/cross-file-taint.d.ts +0 -40
  1123. package/dist/model/cross-file-taint.d.ts.map +0 -1
  1124. package/dist/model/cross-file-taint.js +0 -290
  1125. package/dist/model/cross-file-taint.js.map +0 -1
  1126. package/dist/model/function-classifier.d.ts +0 -32
  1127. package/dist/model/function-classifier.d.ts.map +0 -1
  1128. package/dist/model/function-classifier.js +0 -143
  1129. package/dist/model/function-classifier.js.map +0 -1
  1130. package/dist/model/sanitiser-detection.d.ts +0 -27
  1131. package/dist/model/sanitiser-detection.d.ts.map +0 -1
  1132. package/dist/model/sanitiser-detection.js +0 -224
  1133. package/dist/model/sanitiser-detection.js.map +0 -1
  1134. package/dist/model/sink-matcher.d.ts +0 -17
  1135. package/dist/model/sink-matcher.d.ts.map +0 -1
  1136. package/dist/model/sink-matcher.js +0 -141
  1137. package/dist/model/sink-matcher.js.map +0 -1
  1138. package/dist/model/sink-patterns.d.ts +0 -19
  1139. package/dist/model/sink-patterns.d.ts.map +0 -1
  1140. package/dist/model/sink-patterns.js +0 -88
  1141. package/dist/model/sink-patterns.js.map +0 -1
  1142. package/dist/model/source-discovery.d.ts +0 -15
  1143. package/dist/model/source-discovery.d.ts.map +0 -1
  1144. package/dist/model/source-discovery.js +0 -170
  1145. package/dist/model/source-discovery.js.map +0 -1
  1146. package/dist/model/taint-tracker.d.ts +0 -21
  1147. package/dist/model/taint-tracker.d.ts.map +0 -1
  1148. package/dist/model/taint-tracker.js +0 -281
  1149. package/dist/model/taint-tracker.js.map +0 -1
  1150. package/dist/modes/incremental.d.ts +0 -66
  1151. package/dist/modes/incremental.d.ts.map +0 -1
  1152. package/dist/modes/incremental.js +0 -200
  1153. package/dist/modes/incremental.js.map +0 -1
  1154. package/dist/rules/framework-fixes.d.ts +0 -48
  1155. package/dist/rules/framework-fixes.d.ts.map +0 -1
  1156. package/dist/rules/framework-fixes.js +0 -439
  1157. package/dist/rules/framework-fixes.js.map +0 -1
  1158. package/dist/rules/index.d.ts +0 -8
  1159. package/dist/rules/index.d.ts.map +0 -1
  1160. package/dist/rules/index.js +0 -18
  1161. package/dist/rules/index.js.map +0 -1
  1162. package/dist/rules/metadata.d.ts +0 -43
  1163. package/dist/rules/metadata.d.ts.map +0 -1
  1164. package/dist/rules/metadata.js +0 -800
  1165. package/dist/rules/metadata.js.map +0 -1
  1166. package/dist/score/auto-dismiss.d.ts +0 -28
  1167. package/dist/score/auto-dismiss.d.ts.map +0 -1
  1168. package/dist/score/auto-dismiss.js +0 -200
  1169. package/dist/score/auto-dismiss.js.map +0 -1
  1170. package/dist/suppression/config-loader.d.ts +0 -74
  1171. package/dist/suppression/config-loader.d.ts.map +0 -1
  1172. package/dist/suppression/config-loader.js +0 -424
  1173. package/dist/suppression/config-loader.js.map +0 -1
  1174. package/dist/suppression/hash.d.ts +0 -48
  1175. package/dist/suppression/hash.d.ts.map +0 -1
  1176. package/dist/suppression/hash.js +0 -88
  1177. package/dist/suppression/hash.js.map +0 -1
  1178. package/dist/suppression/index.d.ts +0 -11
  1179. package/dist/suppression/index.d.ts.map +0 -1
  1180. package/dist/suppression/index.js +0 -39
  1181. package/dist/suppression/index.js.map +0 -1
  1182. package/dist/suppression/inline-parser.d.ts +0 -39
  1183. package/dist/suppression/inline-parser.d.ts.map +0 -1
  1184. package/dist/suppression/inline-parser.js +0 -218
  1185. package/dist/suppression/inline-parser.js.map +0 -1
  1186. package/dist/suppression/manager.d.ts +0 -94
  1187. package/dist/suppression/manager.d.ts.map +0 -1
  1188. package/dist/suppression/manager.js +0 -292
  1189. package/dist/suppression/manager.js.map +0 -1
  1190. package/dist/suppression/types.d.ts +0 -151
  1191. package/dist/suppression/types.d.ts.map +0 -1
  1192. package/dist/suppression/types.js +0 -28
  1193. package/dist/suppression/types.js.map +0 -1
  1194. package/dist/types.d.ts +0 -331
  1195. package/dist/types.d.ts.map +0 -1
  1196. package/dist/types.js +0 -124
  1197. package/dist/types.js.map +0 -1
  1198. package/dist/utils/auth-helper-detector.d.ts +0 -56
  1199. package/dist/utils/auth-helper-detector.d.ts.map +0 -1
  1200. package/dist/utils/auth-helper-detector.js +0 -360
  1201. package/dist/utils/auth-helper-detector.js.map +0 -1
  1202. package/dist/utils/code-analysis.d.ts +0 -39
  1203. package/dist/utils/code-analysis.d.ts.map +0 -1
  1204. package/dist/utils/code-analysis.js +0 -159
  1205. package/dist/utils/code-analysis.js.map +0 -1
  1206. package/dist/utils/comment-analyzer.d.ts +0 -38
  1207. package/dist/utils/comment-analyzer.d.ts.map +0 -1
  1208. package/dist/utils/comment-analyzer.js +0 -218
  1209. package/dist/utils/comment-analyzer.js.map +0 -1
  1210. package/dist/utils/context-helpers.d.ts +0 -219
  1211. package/dist/utils/context-helpers.d.ts.map +0 -1
  1212. package/dist/utils/context-helpers.js +0 -886
  1213. package/dist/utils/context-helpers.js.map +0 -1
  1214. package/dist/utils/diff-detector.d.ts +0 -53
  1215. package/dist/utils/diff-detector.d.ts.map +0 -1
  1216. package/dist/utils/diff-detector.js +0 -104
  1217. package/dist/utils/diff-detector.js.map +0 -1
  1218. package/dist/utils/diff-parser.d.ts +0 -80
  1219. package/dist/utils/diff-parser.d.ts.map +0 -1
  1220. package/dist/utils/diff-parser.js +0 -202
  1221. package/dist/utils/diff-parser.js.map +0 -1
  1222. package/dist/utils/environment-context.d.ts +0 -76
  1223. package/dist/utils/environment-context.d.ts.map +0 -1
  1224. package/dist/utils/environment-context.js +0 -271
  1225. package/dist/utils/environment-context.js.map +0 -1
  1226. package/dist/utils/imported-auth-detector.d.ts +0 -37
  1227. package/dist/utils/imported-auth-detector.d.ts.map +0 -1
  1228. package/dist/utils/imported-auth-detector.js +0 -251
  1229. package/dist/utils/imported-auth-detector.js.map +0 -1
  1230. package/dist/utils/intent-detector.d.ts +0 -66
  1231. package/dist/utils/intent-detector.d.ts.map +0 -1
  1232. package/dist/utils/intent-detector.js +0 -282
  1233. package/dist/utils/intent-detector.js.map +0 -1
  1234. package/dist/utils/middleware-detector.d.ts +0 -55
  1235. package/dist/utils/middleware-detector.d.ts.map +0 -1
  1236. package/dist/utils/middleware-detector.js +0 -260
  1237. package/dist/utils/middleware-detector.js.map +0 -1
  1238. package/dist/utils/oauth-flow-detector.d.ts +0 -41
  1239. package/dist/utils/oauth-flow-detector.d.ts.map +0 -1
  1240. package/dist/utils/oauth-flow-detector.js +0 -202
  1241. package/dist/utils/oauth-flow-detector.js.map +0 -1
  1242. package/dist/utils/parsed-file.d.ts +0 -51
  1243. package/dist/utils/parsed-file.d.ts.map +0 -1
  1244. package/dist/utils/parsed-file.js +0 -95
  1245. package/dist/utils/parsed-file.js.map +0 -1
  1246. package/dist/utils/path-exclusions.d.ts +0 -55
  1247. package/dist/utils/path-exclusions.d.ts.map +0 -1
  1248. package/dist/utils/path-exclusions.js +0 -224
  1249. package/dist/utils/path-exclusions.js.map +0 -1
  1250. package/dist/utils/project-context-builder.d.ts +0 -119
  1251. package/dist/utils/project-context-builder.d.ts.map +0 -1
  1252. package/dist/utils/project-context-builder.js +0 -534
  1253. package/dist/utils/project-context-builder.js.map +0 -1
  1254. package/dist/utils/registry-clients.d.ts +0 -93
  1255. package/dist/utils/registry-clients.d.ts.map +0 -1
  1256. package/dist/utils/registry-clients.js +0 -273
  1257. package/dist/utils/registry-clients.js.map +0 -1
  1258. package/dist/utils/route-hierarchy.d.ts +0 -50
  1259. package/dist/utils/route-hierarchy.d.ts.map +0 -1
  1260. package/dist/utils/route-hierarchy.js +0 -226
  1261. package/dist/utils/route-hierarchy.js.map +0 -1
  1262. package/dist/utils/schema-semantics.d.ts +0 -45
  1263. package/dist/utils/schema-semantics.d.ts.map +0 -1
  1264. package/dist/utils/schema-semantics.js +0 -193
  1265. package/dist/utils/schema-semantics.js.map +0 -1
  1266. package/dist/utils/trpc-analyzer.d.ts +0 -78
  1267. package/dist/utils/trpc-analyzer.d.ts.map +0 -1
  1268. package/dist/utils/trpc-analyzer.js +0 -297
  1269. package/dist/utils/trpc-analyzer.js.map +0 -1
  1270. package/src/__tests__/context-engine/cross-file-taint.test.ts +0 -284
  1271. package/src/__tests__/context-engine/function-classifier.test.ts +0 -146
  1272. package/src/__tests__/context-engine/integration.test.ts +0 -320
  1273. package/src/__tests__/context-engine/sanitiser-detection.test.ts +0 -187
  1274. package/src/__tests__/context-engine/sink-matcher.test.ts +0 -251
  1275. package/src/__tests__/context-engine/source-discovery.test.ts +0 -186
  1276. package/src/__tests__/context-engine/taint-tracker.test.ts +0 -182
  1277. package/src/__tests__/snapshots/__snapshots__/anthropic-validation-refactor.test.ts.snap +0 -750
  1278. package/src/__tests__/snapshots/__snapshots__/dangerous-functions-refactor.test.ts.snap +0 -555
  1279. package/src/__tests__/snapshots/anthropic-validation-refactor.test.ts +0 -321
  1280. package/src/__tests__/snapshots/dangerous-functions-refactor.test.ts +0 -439
  1281. package/src/detect/ai-code/agent-tools.ts +0 -1662
  1282. package/src/detect/ai-code/byok-patterns.ts +0 -354
  1283. package/src/detect/ai-code/endpoint-protection.ts +0 -406
  1284. package/src/detect/ai-code/execution-sinks.ts +0 -1310
  1285. package/src/detect/ai-code/fingerprinting.ts +0 -774
  1286. package/src/detect/ai-code/mcp-security.ts +0 -937
  1287. package/src/detect/ai-code/model-supply-chain.ts +0 -535
  1288. package/src/detect/ai-code/package-hallucination.ts +0 -955
  1289. package/src/detect/ai-code/prompt-hygiene.ts +0 -1314
  1290. package/src/detect/ai-code/rag-safety.ts +0 -977
  1291. package/src/detect/ai-code/schema-validation.ts +0 -427
  1292. package/src/detect/secrets/patterns.ts +0 -561
  1293. package/src/detect/secrets/weak-crypto.ts +0 -485
  1294. package/src/detect/structural/__tests__/math-random-enhanced.test.ts +0 -405
  1295. package/src/detect/structural/auth-patterns.ts +0 -621
  1296. package/src/detect/structural/dangerous-functions/child-process.ts +0 -98
  1297. package/src/detect/structural/dangerous-functions/dom-xss.ts +0 -292
  1298. package/src/detect/structural/dangerous-functions/index.ts +0 -1556
  1299. package/src/detect/structural/dangerous-functions/json-parse.ts +0 -393
  1300. package/src/detect/structural/dangerous-functions/math-random.ts +0 -789
  1301. package/src/detect/structural/dangerous-functions/patterns.ts +0 -176
  1302. package/src/detect/structural/dangerous-functions/request-validation.ts +0 -153
  1303. package/src/detect/structural/dangerous-functions/utils/control-flow.ts +0 -35
  1304. package/src/detect/structural/dangerous-functions/utils/helpers.ts +0 -170
  1305. package/src/detect/structural/dangerous-functions/utils/index.ts +0 -25
  1306. package/src/detect/structural/dangerous-functions/utils/schema-validation.ts +0 -106
  1307. package/src/detect/structural/data-exposure.ts +0 -302
  1308. package/src/detect/structural/framework-checks.ts +0 -439
  1309. package/src/detect/structural/log-injection.ts +0 -254
  1310. package/src/detect/structural/logic-gates.ts +0 -256
  1311. package/src/detect/structural/risky-imports.ts +0 -197
  1312. package/src/detect/structural/security-headers.ts +0 -231
  1313. package/src/detect/structural/ssrf-detection.ts +0 -300
  1314. package/src/detect/structural/variables.ts +0 -177
  1315. package/src/detect/structural/xxe-detection.ts +0 -295
  1316. package/src/model/cross-file-taint.ts +0 -374
  1317. package/src/model/function-classifier.ts +0 -184
  1318. package/src/model/sanitiser-detection.ts +0 -268
  1319. package/src/model/sink-matcher.ts +0 -178
  1320. package/src/model/sink-patterns.ts +0 -109
  1321. package/src/model/source-discovery.ts +0 -209
  1322. package/src/model/taint-tracker.ts +0 -333
  1323. 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