@oculum/scanner 1.0.10 → 1.0.12

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 (520) hide show
  1. package/dist/ai-context/index.d.ts +6 -0
  2. package/dist/ai-context/index.d.ts.map +1 -0
  3. package/dist/ai-context/index.js +13 -0
  4. package/dist/ai-context/index.js.map +1 -0
  5. package/dist/ai-context/manager.d.ts +67 -0
  6. package/dist/ai-context/manager.d.ts.map +1 -0
  7. package/dist/ai-context/manager.js +104 -0
  8. package/dist/ai-context/manager.js.map +1 -0
  9. package/dist/baseline/diff.d.ts +32 -0
  10. package/dist/baseline/diff.d.ts.map +1 -0
  11. package/dist/baseline/diff.js +119 -0
  12. package/dist/baseline/diff.js.map +1 -0
  13. package/dist/baseline/index.d.ts +9 -0
  14. package/dist/baseline/index.d.ts.map +1 -0
  15. package/dist/baseline/index.js +19 -0
  16. package/dist/baseline/index.js.map +1 -0
  17. package/dist/baseline/manager.d.ts +67 -0
  18. package/dist/baseline/manager.d.ts.map +1 -0
  19. package/dist/baseline/manager.js +180 -0
  20. package/dist/baseline/manager.js.map +1 -0
  21. package/dist/baseline/types.d.ts +91 -0
  22. package/dist/baseline/types.d.ts.map +1 -0
  23. package/dist/baseline/types.js +12 -0
  24. package/dist/baseline/types.js.map +1 -0
  25. package/dist/category-filter.d.ts +125 -0
  26. package/dist/category-filter.d.ts.map +1 -0
  27. package/dist/category-filter.js +360 -0
  28. package/dist/category-filter.js.map +1 -0
  29. package/dist/filtering/context-adjustments.d.ts +23 -0
  30. package/dist/filtering/context-adjustments.d.ts.map +1 -0
  31. package/dist/filtering/context-adjustments.js +100 -0
  32. package/dist/filtering/context-adjustments.js.map +1 -0
  33. package/dist/filtering/index.d.ts +3 -0
  34. package/dist/filtering/index.d.ts.map +1 -0
  35. package/dist/filtering/index.js +8 -0
  36. package/dist/filtering/index.js.map +1 -0
  37. package/dist/filtering/pipeline.d.ts +48 -0
  38. package/dist/filtering/pipeline.d.ts.map +1 -0
  39. package/dist/filtering/pipeline.js +76 -0
  40. package/dist/filtering/pipeline.js.map +1 -0
  41. package/dist/formatters/ai-context.d.ts +23 -0
  42. package/dist/formatters/ai-context.d.ts.map +1 -0
  43. package/dist/formatters/ai-context.js +238 -0
  44. package/dist/formatters/ai-context.js.map +1 -0
  45. package/dist/formatters/cli-terminal.d.ts +38 -0
  46. package/dist/formatters/cli-terminal.d.ts.map +1 -1
  47. package/dist/formatters/cli-terminal.js +365 -42
  48. package/dist/formatters/cli-terminal.js.map +1 -1
  49. package/dist/formatters/github-comment.d.ts +2 -2
  50. package/dist/formatters/github-comment.d.ts.map +1 -1
  51. package/dist/formatters/github-comment.js +77 -13
  52. package/dist/formatters/github-comment.js.map +1 -1
  53. package/dist/formatters/ide/claude-code.d.ts +17 -0
  54. package/dist/formatters/ide/claude-code.d.ts.map +1 -0
  55. package/dist/formatters/ide/claude-code.js +94 -0
  56. package/dist/formatters/ide/claude-code.js.map +1 -0
  57. package/dist/formatters/ide/cursor.d.ts +13 -0
  58. package/dist/formatters/ide/cursor.d.ts.map +1 -0
  59. package/dist/formatters/ide/cursor.js +125 -0
  60. package/dist/formatters/ide/cursor.js.map +1 -0
  61. package/dist/formatters/ide/index.d.ts +62 -0
  62. package/dist/formatters/ide/index.d.ts.map +1 -0
  63. package/dist/formatters/ide/index.js +184 -0
  64. package/dist/formatters/ide/index.js.map +1 -0
  65. package/dist/formatters/ide/windsurf.d.ts +13 -0
  66. package/dist/formatters/ide/windsurf.d.ts.map +1 -0
  67. package/dist/formatters/ide/windsurf.js +117 -0
  68. package/dist/formatters/ide/windsurf.js.map +1 -0
  69. package/dist/formatters/index.d.ts +3 -1
  70. package/dist/formatters/index.d.ts.map +1 -1
  71. package/dist/formatters/index.js +20 -1
  72. package/dist/formatters/index.js.map +1 -1
  73. package/dist/index.d.ts +11 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +423 -56
  76. package/dist/index.js.map +1 -1
  77. package/dist/layer1/comments.d.ts +4 -1
  78. package/dist/layer1/comments.d.ts.map +1 -1
  79. package/dist/layer1/comments.js +1 -1
  80. package/dist/layer1/comments.js.map +1 -1
  81. package/dist/layer1/config-audit.d.ts +4 -1
  82. package/dist/layer1/config-audit.d.ts.map +1 -1
  83. package/dist/layer1/config-audit.js +65 -14
  84. package/dist/layer1/config-audit.js.map +1 -1
  85. package/dist/layer1/config-mcp-audit.d.ts +23 -0
  86. package/dist/layer1/config-mcp-audit.d.ts.map +1 -0
  87. package/dist/layer1/config-mcp-audit.js +239 -0
  88. package/dist/layer1/config-mcp-audit.js.map +1 -0
  89. package/dist/layer1/entropy.d.ts +4 -1
  90. package/dist/layer1/entropy.d.ts.map +1 -1
  91. package/dist/layer1/entropy.js +212 -1
  92. package/dist/layer1/entropy.js.map +1 -1
  93. package/dist/layer1/file-flags.d.ts +4 -1
  94. package/dist/layer1/file-flags.d.ts.map +1 -1
  95. package/dist/layer1/file-flags.js +12 -5
  96. package/dist/layer1/file-flags.js.map +1 -1
  97. package/dist/layer1/index.d.ts +1 -0
  98. package/dist/layer1/index.d.ts.map +1 -1
  99. package/dist/layer1/index.js +22 -19
  100. package/dist/layer1/index.js.map +1 -1
  101. package/dist/layer1/patterns.d.ts +4 -1
  102. package/dist/layer1/patterns.d.ts.map +1 -1
  103. package/dist/layer1/patterns.js +34 -4
  104. package/dist/layer1/patterns.js.map +1 -1
  105. package/dist/layer1/urls.d.ts +4 -1
  106. package/dist/layer1/urls.d.ts.map +1 -1
  107. package/dist/layer1/urls.js +162 -14
  108. package/dist/layer1/urls.js.map +1 -1
  109. package/dist/layer1/weak-crypto.d.ts +4 -1
  110. package/dist/layer1/weak-crypto.d.ts.map +1 -1
  111. package/dist/layer1/weak-crypto.js +144 -7
  112. package/dist/layer1/weak-crypto.js.map +1 -1
  113. package/dist/layer2/ai-agent-tools.d.ts +4 -1
  114. package/dist/layer2/ai-agent-tools.d.ts.map +1 -1
  115. package/dist/layer2/ai-agent-tools.js +964 -2
  116. package/dist/layer2/ai-agent-tools.js.map +1 -1
  117. package/dist/layer2/ai-endpoint-protection.d.ts +2 -0
  118. package/dist/layer2/ai-endpoint-protection.d.ts.map +1 -1
  119. package/dist/layer2/ai-endpoint-protection.js +18 -4
  120. package/dist/layer2/ai-endpoint-protection.js.map +1 -1
  121. package/dist/layer2/ai-execution-sinks.d.ts +4 -1
  122. package/dist/layer2/ai-execution-sinks.d.ts.map +1 -1
  123. package/dist/layer2/ai-execution-sinks.js +688 -29
  124. package/dist/layer2/ai-execution-sinks.js.map +1 -1
  125. package/dist/layer2/ai-fingerprinting.d.ts +4 -1
  126. package/dist/layer2/ai-fingerprinting.d.ts.map +1 -1
  127. package/dist/layer2/ai-fingerprinting.js +28 -32
  128. package/dist/layer2/ai-fingerprinting.js.map +1 -1
  129. package/dist/layer2/ai-mcp-security.d.ts +20 -0
  130. package/dist/layer2/ai-mcp-security.d.ts.map +1 -0
  131. package/dist/layer2/ai-mcp-security.js +877 -0
  132. package/dist/layer2/ai-mcp-security.js.map +1 -0
  133. package/dist/layer2/ai-package-hallucination.d.ts +22 -0
  134. package/dist/layer2/ai-package-hallucination.d.ts.map +1 -0
  135. package/dist/layer2/ai-package-hallucination.js +828 -0
  136. package/dist/layer2/ai-package-hallucination.js.map +1 -0
  137. package/dist/layer2/ai-prompt-hygiene.d.ts +4 -1
  138. package/dist/layer2/ai-prompt-hygiene.d.ts.map +1 -1
  139. package/dist/layer2/ai-prompt-hygiene.js +817 -17
  140. package/dist/layer2/ai-prompt-hygiene.js.map +1 -1
  141. package/dist/layer2/ai-rag-safety.d.ts +4 -1
  142. package/dist/layer2/ai-rag-safety.d.ts.map +1 -1
  143. package/dist/layer2/ai-rag-safety.js +454 -3
  144. package/dist/layer2/ai-rag-safety.js.map +1 -1
  145. package/dist/layer2/ai-schema-validation.d.ts +4 -1
  146. package/dist/layer2/ai-schema-validation.d.ts.map +1 -1
  147. package/dist/layer2/ai-schema-validation.js +2 -2
  148. package/dist/layer2/ai-schema-validation.js.map +1 -1
  149. package/dist/layer2/auth-antipatterns.d.ts +2 -0
  150. package/dist/layer2/auth-antipatterns.d.ts.map +1 -1
  151. package/dist/layer2/auth-antipatterns.js +209 -20
  152. package/dist/layer2/auth-antipatterns.js.map +1 -1
  153. package/dist/layer2/byok-patterns.d.ts +4 -1
  154. package/dist/layer2/byok-patterns.d.ts.map +1 -1
  155. package/dist/layer2/byok-patterns.js +5 -2
  156. package/dist/layer2/byok-patterns.js.map +1 -1
  157. package/dist/layer2/dangerous-functions/child-process.d.ts +16 -0
  158. package/dist/layer2/dangerous-functions/child-process.d.ts.map +1 -0
  159. package/dist/layer2/dangerous-functions/child-process.js +74 -0
  160. package/dist/layer2/dangerous-functions/child-process.js.map +1 -0
  161. package/dist/layer2/dangerous-functions/dom-xss.d.ts +34 -0
  162. package/dist/layer2/dangerous-functions/dom-xss.d.ts.map +1 -0
  163. package/dist/layer2/dangerous-functions/dom-xss.js +230 -0
  164. package/dist/layer2/dangerous-functions/dom-xss.js.map +1 -0
  165. package/dist/layer2/dangerous-functions/index.d.ts +16 -0
  166. package/dist/layer2/dangerous-functions/index.d.ts.map +1 -0
  167. package/dist/layer2/dangerous-functions/index.js +1152 -0
  168. package/dist/layer2/dangerous-functions/index.js.map +1 -0
  169. package/dist/layer2/dangerous-functions/json-parse.d.ts +31 -0
  170. package/dist/layer2/dangerous-functions/json-parse.d.ts.map +1 -0
  171. package/dist/layer2/dangerous-functions/json-parse.js +319 -0
  172. package/dist/layer2/dangerous-functions/json-parse.js.map +1 -0
  173. package/dist/layer2/dangerous-functions/math-random.d.ts +111 -0
  174. package/dist/layer2/dangerous-functions/math-random.d.ts.map +1 -0
  175. package/dist/layer2/dangerous-functions/math-random.js +684 -0
  176. package/dist/layer2/dangerous-functions/math-random.js.map +1 -0
  177. package/dist/layer2/dangerous-functions/patterns.d.ts +21 -0
  178. package/dist/layer2/dangerous-functions/patterns.d.ts.map +1 -0
  179. package/dist/layer2/dangerous-functions/patterns.js +163 -0
  180. package/dist/layer2/dangerous-functions/patterns.js.map +1 -0
  181. package/dist/layer2/dangerous-functions/request-validation.d.ts +13 -0
  182. package/dist/layer2/dangerous-functions/request-validation.d.ts.map +1 -0
  183. package/dist/layer2/dangerous-functions/request-validation.js +119 -0
  184. package/dist/layer2/dangerous-functions/request-validation.js.map +1 -0
  185. package/dist/layer2/dangerous-functions/utils/control-flow.d.ts +24 -0
  186. package/dist/layer2/dangerous-functions/utils/control-flow.d.ts.map +1 -0
  187. package/dist/layer2/dangerous-functions/utils/control-flow.js +70 -0
  188. package/dist/layer2/dangerous-functions/utils/control-flow.js.map +1 -0
  189. package/dist/layer2/dangerous-functions/utils/helpers.d.ts +31 -0
  190. package/dist/layer2/dangerous-functions/utils/helpers.d.ts.map +1 -0
  191. package/dist/layer2/dangerous-functions/utils/helpers.js +147 -0
  192. package/dist/layer2/dangerous-functions/utils/helpers.js.map +1 -0
  193. package/dist/layer2/dangerous-functions/utils/index.d.ts +9 -0
  194. package/dist/layer2/dangerous-functions/utils/index.d.ts.map +1 -0
  195. package/dist/layer2/dangerous-functions/utils/index.js +23 -0
  196. package/dist/layer2/dangerous-functions/utils/index.js.map +1 -0
  197. package/dist/layer2/dangerous-functions/utils/schema-validation.d.ts +22 -0
  198. package/dist/layer2/dangerous-functions/utils/schema-validation.d.ts.map +1 -0
  199. package/dist/layer2/dangerous-functions/utils/schema-validation.js +102 -0
  200. package/dist/layer2/dangerous-functions/utils/schema-validation.js.map +1 -0
  201. package/dist/layer2/data-exposure.d.ts +4 -1
  202. package/dist/layer2/data-exposure.d.ts.map +1 -1
  203. package/dist/layer2/data-exposure.js +14 -38
  204. package/dist/layer2/data-exposure.js.map +1 -1
  205. package/dist/layer2/framework-checks.d.ts +4 -1
  206. package/dist/layer2/framework-checks.d.ts.map +1 -1
  207. package/dist/layer2/framework-checks.js +5 -2
  208. package/dist/layer2/framework-checks.js.map +1 -1
  209. package/dist/layer2/index.d.ts +12 -1
  210. package/dist/layer2/index.d.ts.map +1 -1
  211. package/dist/layer2/index.js +110 -45
  212. package/dist/layer2/index.js.map +1 -1
  213. package/dist/layer2/logic-gates.d.ts +4 -1
  214. package/dist/layer2/logic-gates.d.ts.map +1 -1
  215. package/dist/layer2/logic-gates.js +58 -20
  216. package/dist/layer2/logic-gates.js.map +1 -1
  217. package/dist/layer2/model-supply-chain.d.ts +23 -0
  218. package/dist/layer2/model-supply-chain.d.ts.map +1 -0
  219. package/dist/layer2/model-supply-chain.js +444 -0
  220. package/dist/layer2/model-supply-chain.js.map +1 -0
  221. package/dist/layer2/risky-imports.d.ts +4 -1
  222. package/dist/layer2/risky-imports.d.ts.map +1 -1
  223. package/dist/layer2/risky-imports.js +6 -2
  224. package/dist/layer2/risky-imports.js.map +1 -1
  225. package/dist/layer2/variables.d.ts +4 -1
  226. package/dist/layer2/variables.d.ts.map +1 -1
  227. package/dist/layer2/variables.js +6 -2
  228. package/dist/layer2/variables.js.map +1 -1
  229. package/dist/layer3/anthropic/auto-dismiss.d.ts +24 -0
  230. package/dist/layer3/anthropic/auto-dismiss.d.ts.map +1 -0
  231. package/dist/layer3/anthropic/auto-dismiss.js +199 -0
  232. package/dist/layer3/anthropic/auto-dismiss.js.map +1 -0
  233. package/dist/layer3/anthropic/clients.d.ts +44 -0
  234. package/dist/layer3/anthropic/clients.d.ts.map +1 -0
  235. package/dist/layer3/anthropic/clients.js +81 -0
  236. package/dist/layer3/anthropic/clients.js.map +1 -0
  237. package/dist/layer3/anthropic/index.d.ts +41 -0
  238. package/dist/layer3/anthropic/index.d.ts.map +1 -0
  239. package/dist/layer3/anthropic/index.js +141 -0
  240. package/dist/layer3/anthropic/index.js.map +1 -0
  241. package/dist/layer3/anthropic/prompts/index.d.ts +8 -0
  242. package/dist/layer3/anthropic/prompts/index.d.ts.map +1 -0
  243. package/dist/layer3/anthropic/prompts/index.js +14 -0
  244. package/dist/layer3/anthropic/prompts/index.js.map +1 -0
  245. package/dist/layer3/anthropic/prompts/semantic-analysis.d.ts +15 -0
  246. package/dist/layer3/anthropic/prompts/semantic-analysis.d.ts.map +1 -0
  247. package/dist/layer3/anthropic/prompts/semantic-analysis.js +169 -0
  248. package/dist/layer3/anthropic/prompts/semantic-analysis.js.map +1 -0
  249. package/dist/layer3/anthropic/prompts/validation.d.ts +12 -0
  250. package/dist/layer3/anthropic/prompts/validation.d.ts.map +1 -0
  251. package/dist/layer3/anthropic/prompts/validation.js +421 -0
  252. package/dist/layer3/anthropic/prompts/validation.js.map +1 -0
  253. package/dist/layer3/anthropic/providers/anthropic.d.ts +21 -0
  254. package/dist/layer3/anthropic/providers/anthropic.d.ts.map +1 -0
  255. package/dist/layer3/anthropic/providers/anthropic.js +266 -0
  256. package/dist/layer3/anthropic/providers/anthropic.js.map +1 -0
  257. package/dist/layer3/anthropic/providers/index.d.ts +8 -0
  258. package/dist/layer3/anthropic/providers/index.d.ts.map +1 -0
  259. package/dist/layer3/anthropic/providers/index.js +15 -0
  260. package/dist/layer3/anthropic/providers/index.js.map +1 -0
  261. package/dist/layer3/anthropic/providers/openai.d.ts +18 -0
  262. package/dist/layer3/anthropic/providers/openai.d.ts.map +1 -0
  263. package/dist/layer3/anthropic/providers/openai.js +340 -0
  264. package/dist/layer3/anthropic/providers/openai.js.map +1 -0
  265. package/dist/layer3/anthropic/request-builder.d.ts +20 -0
  266. package/dist/layer3/anthropic/request-builder.d.ts.map +1 -0
  267. package/dist/layer3/anthropic/request-builder.js +134 -0
  268. package/dist/layer3/anthropic/request-builder.js.map +1 -0
  269. package/dist/layer3/anthropic/types.d.ts +88 -0
  270. package/dist/layer3/anthropic/types.d.ts.map +1 -0
  271. package/dist/layer3/anthropic/types.js +38 -0
  272. package/dist/layer3/anthropic/types.js.map +1 -0
  273. package/dist/layer3/anthropic/utils/index.d.ts +9 -0
  274. package/dist/layer3/anthropic/utils/index.d.ts.map +1 -0
  275. package/dist/layer3/anthropic/utils/index.js +24 -0
  276. package/dist/layer3/anthropic/utils/index.js.map +1 -0
  277. package/dist/layer3/anthropic/utils/path-helpers.d.ts +21 -0
  278. package/dist/layer3/anthropic/utils/path-helpers.d.ts.map +1 -0
  279. package/dist/layer3/anthropic/utils/path-helpers.js +69 -0
  280. package/dist/layer3/anthropic/utils/path-helpers.js.map +1 -0
  281. package/dist/layer3/anthropic/utils/response-parser.d.ts +40 -0
  282. package/dist/layer3/anthropic/utils/response-parser.d.ts.map +1 -0
  283. package/dist/layer3/anthropic/utils/response-parser.js +285 -0
  284. package/dist/layer3/anthropic/utils/response-parser.js.map +1 -0
  285. package/dist/layer3/anthropic/utils/retry.d.ts +15 -0
  286. package/dist/layer3/anthropic/utils/retry.d.ts.map +1 -0
  287. package/dist/layer3/anthropic/utils/retry.js +62 -0
  288. package/dist/layer3/anthropic/utils/retry.js.map +1 -0
  289. package/dist/layer3/index.d.ts +1 -0
  290. package/dist/layer3/index.d.ts.map +1 -1
  291. package/dist/layer3/index.js +16 -6
  292. package/dist/layer3/index.js.map +1 -1
  293. package/dist/layer3/osv-check.d.ts +75 -0
  294. package/dist/layer3/osv-check.d.ts.map +1 -0
  295. package/dist/layer3/osv-check.js +308 -0
  296. package/dist/layer3/osv-check.js.map +1 -0
  297. package/dist/modes/incremental.js +1 -1
  298. package/dist/rules/framework-fixes.d.ts +48 -0
  299. package/dist/rules/framework-fixes.d.ts.map +1 -0
  300. package/dist/rules/framework-fixes.js +439 -0
  301. package/dist/rules/framework-fixes.js.map +1 -0
  302. package/dist/rules/index.d.ts +8 -0
  303. package/dist/rules/index.d.ts.map +1 -0
  304. package/dist/rules/index.js +18 -0
  305. package/dist/rules/index.js.map +1 -0
  306. package/dist/rules/metadata.d.ts +43 -0
  307. package/dist/rules/metadata.d.ts.map +1 -0
  308. package/dist/rules/metadata.js +734 -0
  309. package/dist/rules/metadata.js.map +1 -0
  310. package/dist/suppression/config-loader.d.ts +74 -0
  311. package/dist/suppression/config-loader.d.ts.map +1 -0
  312. package/dist/suppression/config-loader.js +424 -0
  313. package/dist/suppression/config-loader.js.map +1 -0
  314. package/dist/suppression/hash.d.ts +48 -0
  315. package/dist/suppression/hash.d.ts.map +1 -0
  316. package/dist/suppression/hash.js +88 -0
  317. package/dist/suppression/hash.js.map +1 -0
  318. package/dist/suppression/index.d.ts +11 -0
  319. package/dist/suppression/index.d.ts.map +1 -0
  320. package/dist/suppression/index.js +39 -0
  321. package/dist/suppression/index.js.map +1 -0
  322. package/dist/suppression/inline-parser.d.ts +39 -0
  323. package/dist/suppression/inline-parser.d.ts.map +1 -0
  324. package/dist/suppression/inline-parser.js +218 -0
  325. package/dist/suppression/inline-parser.js.map +1 -0
  326. package/dist/suppression/manager.d.ts +94 -0
  327. package/dist/suppression/manager.d.ts.map +1 -0
  328. package/dist/suppression/manager.js +292 -0
  329. package/dist/suppression/manager.js.map +1 -0
  330. package/dist/suppression/types.d.ts +151 -0
  331. package/dist/suppression/types.d.ts.map +1 -0
  332. package/dist/suppression/types.js +28 -0
  333. package/dist/suppression/types.js.map +1 -0
  334. package/dist/tiers.d.ts +3 -3
  335. package/dist/tiers.d.ts.map +1 -1
  336. package/dist/tiers.js +34 -7
  337. package/dist/tiers.js.map +1 -1
  338. package/dist/types.d.ts +140 -9
  339. package/dist/types.d.ts.map +1 -1
  340. package/dist/types.js +34 -0
  341. package/dist/types.js.map +1 -1
  342. package/dist/utils/code-analysis.d.ts +39 -0
  343. package/dist/utils/code-analysis.d.ts.map +1 -0
  344. package/dist/utils/code-analysis.js +159 -0
  345. package/dist/utils/code-analysis.js.map +1 -0
  346. package/dist/utils/comment-analyzer.d.ts +38 -0
  347. package/dist/utils/comment-analyzer.d.ts.map +1 -0
  348. package/dist/utils/comment-analyzer.js +218 -0
  349. package/dist/utils/comment-analyzer.js.map +1 -0
  350. package/dist/utils/context-helpers.d.ts +112 -1
  351. package/dist/utils/context-helpers.d.ts.map +1 -1
  352. package/dist/utils/context-helpers.js +364 -11
  353. package/dist/utils/context-helpers.js.map +1 -1
  354. package/dist/utils/environment-context.d.ts +76 -0
  355. package/dist/utils/environment-context.d.ts.map +1 -0
  356. package/dist/utils/environment-context.js +271 -0
  357. package/dist/utils/environment-context.js.map +1 -0
  358. package/dist/utils/intent-detector.d.ts +66 -0
  359. package/dist/utils/intent-detector.d.ts.map +1 -0
  360. package/dist/utils/intent-detector.js +282 -0
  361. package/dist/utils/intent-detector.js.map +1 -0
  362. package/dist/utils/parsed-file.d.ts +51 -0
  363. package/dist/utils/parsed-file.d.ts.map +1 -0
  364. package/dist/utils/parsed-file.js +95 -0
  365. package/dist/utils/parsed-file.js.map +1 -0
  366. package/dist/utils/route-hierarchy.d.ts +50 -0
  367. package/dist/utils/route-hierarchy.d.ts.map +1 -0
  368. package/dist/utils/route-hierarchy.js +226 -0
  369. package/dist/utils/route-hierarchy.js.map +1 -0
  370. package/dist/utils/schema-semantics.d.ts +45 -0
  371. package/dist/utils/schema-semantics.d.ts.map +1 -0
  372. package/dist/utils/schema-semantics.js +193 -0
  373. package/dist/utils/schema-semantics.js.map +1 -0
  374. package/package.json +4 -2
  375. package/src/__tests__/benchmark/fixtures/layer1/mcp-config-audit.json +31 -0
  376. package/src/__tests__/benchmark/fixtures/layer2/ai-execution-sinks.ts +1489 -82
  377. package/src/__tests__/benchmark/fixtures/layer2/ai-mcp-security.ts +495 -0
  378. package/src/__tests__/benchmark/fixtures/layer2/ai-package-hallucination.ts +255 -0
  379. package/src/__tests__/benchmark/fixtures/layer2/ai-prompt-hygiene.ts +300 -1
  380. package/src/__tests__/benchmark/fixtures/layer2/ai-rag-safety.ts +139 -0
  381. package/src/__tests__/benchmark/fixtures/layer2/byok-patterns.ts +7 -0
  382. package/src/__tests__/benchmark/fixtures/layer2/data-exposure.ts +63 -0
  383. package/src/__tests__/benchmark/fixtures/layer2/excessive-agency.ts +221 -0
  384. package/src/__tests__/benchmark/fixtures/layer2/index.ts +30 -0
  385. package/src/__tests__/benchmark/fixtures/layer2/model-supply-chain.ts +204 -0
  386. package/src/__tests__/benchmark/fixtures/layer2/phase1-enhancements.ts +157 -0
  387. package/src/__tests__/benchmark/fixtures/layer2/phase5-excessive-agency.ts +580 -0
  388. package/src/__tests__/benchmark/fixtures/layer2/sprint6-ai-enhancements.ts +515 -0
  389. package/src/__tests__/benchmark/run-depth-validation.ts +9 -9
  390. package/src/__tests__/category-filter.test.ts +478 -0
  391. package/src/__tests__/regression/known-false-positives.test.ts +490 -0
  392. package/src/__tests__/snapshots/__snapshots__/anthropic-validation-refactor.test.ts.snap +762 -0
  393. package/src/__tests__/snapshots/__snapshots__/dangerous-functions-refactor.test.ts.snap +503 -0
  394. package/src/__tests__/snapshots/__snapshots__/scan-depth.test.ts.snap +0 -9
  395. package/src/__tests__/snapshots/anthropic-validation-refactor.test.ts +321 -0
  396. package/src/__tests__/snapshots/dangerous-functions-refactor.test.ts +439 -0
  397. package/src/__tests__/validation/run-validation.ts +7 -7
  398. package/src/ai-context/__tests__/manager.test.ts +193 -0
  399. package/src/ai-context/index.ts +15 -0
  400. package/src/ai-context/manager.ts +145 -0
  401. package/src/baseline/__tests__/diff.test.ts +261 -0
  402. package/src/baseline/__tests__/manager.test.ts +225 -0
  403. package/src/baseline/diff.ts +135 -0
  404. package/src/baseline/index.ts +29 -0
  405. package/src/baseline/manager.ts +230 -0
  406. package/src/baseline/types.ts +97 -0
  407. package/src/category-filter.ts +400 -0
  408. package/src/filtering/__tests__/pipeline.test.ts +134 -0
  409. package/src/filtering/context-adjustments.ts +111 -0
  410. package/src/filtering/index.ts +10 -0
  411. package/src/filtering/pipeline.ts +130 -0
  412. package/src/formatters/__tests__/ai-context.test.ts +254 -0
  413. package/src/formatters/ai-context.ts +302 -0
  414. package/src/formatters/cli-terminal.ts +444 -41
  415. package/src/formatters/github-comment.ts +82 -14
  416. package/src/formatters/ide/__tests__/ide.test.ts +319 -0
  417. package/src/formatters/ide/claude-code.ts +110 -0
  418. package/src/formatters/ide/cursor.ts +147 -0
  419. package/src/formatters/ide/index.ts +216 -0
  420. package/src/formatters/ide/windsurf.ts +135 -0
  421. package/src/formatters/index.ts +28 -0
  422. package/src/index.ts +506 -45
  423. package/src/layer1/comments.ts +3 -1
  424. package/src/layer1/config-audit.ts +74 -14
  425. package/src/layer1/config-mcp-audit.ts +278 -0
  426. package/src/layer1/entropy.ts +234 -1
  427. package/src/layer1/file-flags.ts +17 -6
  428. package/src/layer1/index.ts +29 -23
  429. package/src/layer1/patterns.ts +42 -4
  430. package/src/layer1/urls.ts +188 -14
  431. package/src/layer1/weak-crypto.ts +168 -16
  432. package/src/layer2/ai-agent-tools.ts +1043 -2
  433. package/src/layer2/ai-endpoint-protection.ts +19 -4
  434. package/src/layer2/ai-execution-sinks.ts +755 -29
  435. package/src/layer2/ai-fingerprinting.ts +33 -33
  436. package/src/layer2/ai-mcp-security.ts +933 -0
  437. package/src/layer2/ai-package-hallucination.ts +940 -0
  438. package/src/layer2/ai-prompt-hygiene.ts +898 -17
  439. package/src/layer2/ai-rag-safety.ts +467 -5
  440. package/src/layer2/ai-schema-validation.ts +4 -2
  441. package/src/layer2/auth-antipatterns.ts +235 -20
  442. package/src/layer2/byok-patterns.ts +9 -3
  443. package/src/layer2/dangerous-functions/child-process.ts +98 -0
  444. package/src/layer2/dangerous-functions/dom-xss.ts +292 -0
  445. package/src/layer2/dangerous-functions/index.ts +1533 -0
  446. package/src/layer2/dangerous-functions/json-parse.ts +385 -0
  447. package/src/layer2/dangerous-functions/math-random.ts +789 -0
  448. package/src/layer2/dangerous-functions/patterns.ts +176 -0
  449. package/src/layer2/dangerous-functions/request-validation.ts +145 -0
  450. package/src/layer2/dangerous-functions/utils/control-flow.ts +35 -0
  451. package/src/layer2/dangerous-functions/utils/helpers.ts +170 -0
  452. package/src/layer2/dangerous-functions/utils/index.ts +25 -0
  453. package/src/layer2/dangerous-functions/utils/schema-validation.ts +106 -0
  454. package/src/layer2/data-exposure.ts +18 -39
  455. package/src/layer2/framework-checks.ts +9 -2
  456. package/src/layer2/index.ts +124 -43
  457. package/src/layer2/logic-gates.ts +64 -22
  458. package/src/layer2/model-supply-chain.ts +531 -0
  459. package/src/layer2/risky-imports.ts +9 -2
  460. package/src/layer2/variables.ts +9 -2
  461. package/src/layer3/__tests__/osv-check.test.ts +384 -0
  462. package/src/layer3/anthropic/auto-dismiss.ts +223 -0
  463. package/src/layer3/anthropic/clients.ts +84 -0
  464. package/src/layer3/anthropic/index.ts +170 -0
  465. package/src/layer3/anthropic/prompts/index.ts +14 -0
  466. package/src/layer3/anthropic/prompts/semantic-analysis.ts +173 -0
  467. package/src/layer3/anthropic/prompts/validation.ts +419 -0
  468. package/src/layer3/anthropic/providers/anthropic.ts +310 -0
  469. package/src/layer3/anthropic/providers/index.ts +8 -0
  470. package/src/layer3/anthropic/providers/openai.ts +384 -0
  471. package/src/layer3/anthropic/request-builder.ts +150 -0
  472. package/src/layer3/anthropic/types.ts +148 -0
  473. package/src/layer3/anthropic/utils/index.ts +26 -0
  474. package/src/layer3/anthropic/utils/path-helpers.ts +68 -0
  475. package/src/layer3/anthropic/utils/response-parser.ts +322 -0
  476. package/src/layer3/anthropic/utils/retry.ts +75 -0
  477. package/src/layer3/index.ts +18 -5
  478. package/src/layer3/osv-check.ts +420 -0
  479. package/src/modes/incremental.ts +1 -1
  480. package/src/rules/__tests__/framework-fixes.test.ts +689 -0
  481. package/src/rules/__tests__/metadata.test.ts +218 -0
  482. package/src/rules/framework-fixes.ts +470 -0
  483. package/src/rules/index.ts +21 -0
  484. package/src/rules/metadata.ts +831 -0
  485. package/src/suppression/__tests__/config-loader.test.ts +382 -0
  486. package/src/suppression/__tests__/hash.test.ts +166 -0
  487. package/src/suppression/__tests__/inline-parser.test.ts +212 -0
  488. package/src/suppression/__tests__/manager.test.ts +415 -0
  489. package/src/suppression/config-loader.ts +462 -0
  490. package/src/suppression/hash.ts +95 -0
  491. package/src/suppression/index.ts +51 -0
  492. package/src/suppression/inline-parser.ts +273 -0
  493. package/src/suppression/manager.ts +379 -0
  494. package/src/suppression/types.ts +174 -0
  495. package/src/tiers.ts +45 -9
  496. package/src/types.ts +212 -8
  497. package/src/utils/__tests__/code-analysis.test.ts +165 -0
  498. package/src/utils/__tests__/parsed-file.test.ts +124 -0
  499. package/src/utils/code-analysis.ts +179 -0
  500. package/src/utils/comment-analyzer.ts +249 -0
  501. package/src/utils/context-helpers.ts +421 -11
  502. package/src/utils/environment-context.ts +304 -0
  503. package/src/utils/intent-detector.ts +318 -0
  504. package/src/utils/parsed-file.ts +103 -0
  505. package/src/utils/route-hierarchy.ts +250 -0
  506. package/src/utils/schema-semantics.ts +233 -0
  507. package/dist/layer2/dangerous-functions.d.ts +0 -7
  508. package/dist/layer2/dangerous-functions.d.ts.map +0 -1
  509. package/dist/layer2/dangerous-functions.js +0 -1701
  510. package/dist/layer2/dangerous-functions.js.map +0 -1
  511. package/dist/layer3/anthropic.d.ts +0 -87
  512. package/dist/layer3/anthropic.d.ts.map +0 -1
  513. package/dist/layer3/anthropic.js +0 -1948
  514. package/dist/layer3/anthropic.js.map +0 -1
  515. package/dist/layer3/openai.d.ts +0 -25
  516. package/dist/layer3/openai.d.ts.map +0 -1
  517. package/dist/layer3/openai.js +0 -238
  518. package/dist/layer3/openai.js.map +0 -1
  519. package/src/layer2/dangerous-functions.ts +0 -1940
  520. package/src/layer3/anthropic.ts +0 -2257
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ /**
3
+ * Suppression Manager
4
+ * Central class for managing all suppression logic
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SuppressionManager = void 0;
8
+ const minimatch_1 = require("minimatch");
9
+ const config_loader_1 = require("./config-loader");
10
+ const inline_parser_1 = require("./inline-parser");
11
+ const hash_1 = require("./hash");
12
+ /**
13
+ * SuppressionManager handles all suppression logic
14
+ *
15
+ * Priority order for suppressions:
16
+ * 1. Inline comment suppressions (highest priority)
17
+ * 2. Config file finding suppressions (by hash)
18
+ * 3. Config file rule suppressions (by category)
19
+ */
20
+ class SuppressionManager {
21
+ constructor(options) {
22
+ // Cache for inline suppressions by file path
23
+ this.inlineSuppressionCache = new Map();
24
+ this.projectPath = options.projectPath;
25
+ this.includeExpired = options.includeExpired ?? false;
26
+ if (options.config) {
27
+ this.config = options.config;
28
+ this.configPath = undefined;
29
+ this.configErrors = [];
30
+ }
31
+ else {
32
+ const result = (0, config_loader_1.loadSuppressionConfig)(options.projectPath);
33
+ this.config = result.config;
34
+ this.configPath = result.configPath;
35
+ this.configErrors = result.errors;
36
+ }
37
+ }
38
+ /**
39
+ * Get configuration errors (if any)
40
+ */
41
+ getConfigErrors() {
42
+ return this.configErrors;
43
+ }
44
+ /**
45
+ * Get the path to the config file (if found)
46
+ */
47
+ getConfigPath() {
48
+ return this.configPath;
49
+ }
50
+ /**
51
+ * Check if a file path should be ignored entirely
52
+ */
53
+ isPathIgnored(filePath) {
54
+ if (!this.config.ignore || this.config.ignore.length === 0) {
55
+ return false;
56
+ }
57
+ const normalizedPath = (0, hash_1.normalizePathForHash)(filePath);
58
+ return this.config.ignore.some(pattern => (0, minimatch_1.minimatch)(normalizedPath, pattern, { dot: true }));
59
+ }
60
+ /**
61
+ * Parse inline suppressions for a file
62
+ */
63
+ getInlineSuppressions(filePath, content) {
64
+ // Check cache first
65
+ const cached = this.inlineSuppressionCache.get(filePath);
66
+ if (cached) {
67
+ return cached;
68
+ }
69
+ // Parse and cache
70
+ const suppressions = (0, inline_parser_1.parseInlineSuppressions)(content);
71
+ this.inlineSuppressionCache.set(filePath, suppressions);
72
+ return suppressions;
73
+ }
74
+ /**
75
+ * Check if a finding is suppressed
76
+ *
77
+ * Priority:
78
+ * 1. Inline comment (highest)
79
+ * 2. Config finding suppression (by hash)
80
+ * 3. Config rule suppression (by category)
81
+ */
82
+ isFindingSuppressed(finding, fileContent) {
83
+ const hash = (0, hash_1.computeFindingHash)(finding);
84
+ const normalizedPath = (0, hash_1.normalizePathForHash)(finding.filePath);
85
+ // 1. Check inline suppressions (if file content provided)
86
+ if (fileContent) {
87
+ const inlineSuppressions = this.getInlineSuppressions(finding.filePath, fileContent);
88
+ const inlineSuppression = (0, inline_parser_1.isLineSuppressed)(inlineSuppressions, finding.lineNumber, finding.category);
89
+ if (inlineSuppression) {
90
+ return {
91
+ suppressed: true,
92
+ match: {
93
+ type: 'inline',
94
+ reason: inlineSuppression.reason,
95
+ },
96
+ hash,
97
+ };
98
+ }
99
+ }
100
+ // 2. Check config finding suppressions (by hash)
101
+ const findingSuppressions = this.config.suppressions?.findings || [];
102
+ const findingSuppression = findingSuppressions.find(s => s.hash === hash);
103
+ if (findingSuppression) {
104
+ const expired = (0, config_loader_1.isExpired)(findingSuppression.expires);
105
+ if (expired && !this.includeExpired) {
106
+ // Expired - not suppressed
107
+ return {
108
+ suppressed: false,
109
+ match: {
110
+ type: 'config-finding',
111
+ reason: findingSuppression.reason,
112
+ expires: findingSuppression.expires,
113
+ expired: true,
114
+ },
115
+ hash,
116
+ };
117
+ }
118
+ return {
119
+ suppressed: true,
120
+ match: {
121
+ type: 'config-finding',
122
+ reason: findingSuppression.reason,
123
+ expires: findingSuppression.expires,
124
+ expired,
125
+ },
126
+ hash,
127
+ };
128
+ }
129
+ // 3. Check config rule suppressions (by category)
130
+ const ruleSuppressions = this.config.suppressions?.rules || [];
131
+ const ruleSuppression = ruleSuppressions.find(s => {
132
+ // Must match category
133
+ if (s.category !== finding.category) {
134
+ return false;
135
+ }
136
+ // If paths specified, must match one of them
137
+ if (s.paths && s.paths.length > 0) {
138
+ const matchesPath = s.paths.some(pattern => (0, minimatch_1.minimatch)(normalizedPath, pattern, { dot: true }));
139
+ if (!matchesPath) {
140
+ return false;
141
+ }
142
+ }
143
+ return true;
144
+ });
145
+ if (ruleSuppression) {
146
+ const expired = (0, config_loader_1.isExpired)(ruleSuppression.expires);
147
+ if (expired && !this.includeExpired) {
148
+ // Expired - not suppressed
149
+ return {
150
+ suppressed: false,
151
+ match: {
152
+ type: 'config-rule',
153
+ reason: ruleSuppression.reason,
154
+ expires: ruleSuppression.expires,
155
+ expired: true,
156
+ },
157
+ hash,
158
+ };
159
+ }
160
+ return {
161
+ suppressed: true,
162
+ match: {
163
+ type: 'config-rule',
164
+ reason: ruleSuppression.reason,
165
+ expires: ruleSuppression.expires,
166
+ expired,
167
+ },
168
+ hash,
169
+ };
170
+ }
171
+ // Not suppressed
172
+ return {
173
+ suppressed: false,
174
+ hash,
175
+ };
176
+ }
177
+ /**
178
+ * Apply suppressions to a list of findings
179
+ */
180
+ applySuppressions(findings, files) {
181
+ // Build file content lookup
182
+ const fileContentMap = new Map();
183
+ for (const file of files) {
184
+ fileContentMap.set((0, hash_1.normalizePathForHash)(file.path), file.content);
185
+ }
186
+ const passed = [];
187
+ const suppressed = [];
188
+ let expiredCount = 0;
189
+ const stats = {
190
+ total: findings.length,
191
+ inlineSuppressed: 0,
192
+ configFindingSuppressed: 0,
193
+ configRuleSuppressed: 0,
194
+ expired: 0,
195
+ };
196
+ for (const finding of findings) {
197
+ // Get file content for inline suppression checking
198
+ const normalizedPath = (0, hash_1.normalizePathForHash)(finding.filePath);
199
+ const fileContent = fileContentMap.get(normalizedPath);
200
+ const result = this.isFindingSuppressed(finding, fileContent);
201
+ if (result.suppressed) {
202
+ suppressed.push({
203
+ vulnerability: {
204
+ id: finding.id,
205
+ filePath: finding.filePath,
206
+ lineNumber: finding.lineNumber,
207
+ category: finding.category,
208
+ severity: finding.severity,
209
+ title: finding.title,
210
+ },
211
+ suppression: {
212
+ type: result.match.type,
213
+ reason: result.match.reason,
214
+ expires: result.match.expires,
215
+ hash: result.hash,
216
+ },
217
+ });
218
+ // Update stats
219
+ switch (result.match.type) {
220
+ case 'inline':
221
+ stats.inlineSuppressed++;
222
+ break;
223
+ case 'config-finding':
224
+ stats.configFindingSuppressed++;
225
+ break;
226
+ case 'config-rule':
227
+ stats.configRuleSuppressed++;
228
+ break;
229
+ }
230
+ }
231
+ else {
232
+ passed.push(finding);
233
+ // Track expired suppressions
234
+ if (result.match?.expired) {
235
+ expiredCount++;
236
+ stats.expired++;
237
+ }
238
+ }
239
+ }
240
+ return {
241
+ findings: passed,
242
+ suppressed,
243
+ expiredSuppressions: expiredCount,
244
+ stats,
245
+ };
246
+ }
247
+ /**
248
+ * Get all suppressions from config
249
+ */
250
+ getAllSuppressions() {
251
+ return {
252
+ rules: this.config.suppressions?.rules || [],
253
+ findings: this.config.suppressions?.findings || [],
254
+ };
255
+ }
256
+ /**
257
+ * Get ignore patterns from config
258
+ */
259
+ getIgnorePatterns() {
260
+ return this.config.ignore || [];
261
+ }
262
+ /**
263
+ * Check if suppression system is active (has any suppressions)
264
+ */
265
+ hasSuppressions() {
266
+ const rules = this.config.suppressions?.rules || [];
267
+ const findings = this.config.suppressions?.findings || [];
268
+ const ignore = this.config.ignore || [];
269
+ return rules.length > 0 || findings.length > 0 || ignore.length > 0;
270
+ }
271
+ /**
272
+ * Get summary of suppression configuration
273
+ */
274
+ getSummary() {
275
+ return {
276
+ configPath: this.configPath,
277
+ ruleCount: this.config.suppressions?.rules?.length || 0,
278
+ findingCount: this.config.suppressions?.findings?.length || 0,
279
+ ignorePatternCount: this.config.ignore?.length || 0,
280
+ hasErrors: this.configErrors.length > 0,
281
+ };
282
+ }
283
+ /**
284
+ * Clear the inline suppression cache
285
+ * (useful if files have been modified)
286
+ */
287
+ clearCache() {
288
+ this.inlineSuppressionCache.clear();
289
+ }
290
+ }
291
+ exports.SuppressionManager = SuppressionManager;
292
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/suppression/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Suppression System Types
3
+ * Defines types for the finding suppression/ignore system
4
+ */
5
+ import type { VulnerabilityCategory, VulnerabilitySeverity } from '../types';
6
+ /**
7
+ * Suppression configuration file structure
8
+ * Supports .oculum.yaml, .oculum.yml, oculum.config.json, .oculumrc
9
+ */
10
+ export interface SuppressionConfig {
11
+ /** Config schema version */
12
+ version: 1;
13
+ /** Suppression rules */
14
+ suppressions?: {
15
+ /** Rule-based suppressions (by category) */
16
+ rules?: RuleSuppression[];
17
+ /** Finding-based suppressions (by hash) */
18
+ findings?: FindingSuppression[];
19
+ };
20
+ /** Path patterns to ignore entirely (glob format) */
21
+ ignore?: string[];
22
+ }
23
+ /**
24
+ * Suppress all findings of a specific category/rule
25
+ */
26
+ export interface RuleSuppression {
27
+ /** Category to suppress (e.g., 'high_entropy_string') */
28
+ category: VulnerabilityCategory;
29
+ /** Reason for suppression (required for audit trail) */
30
+ reason: string;
31
+ /** Optional: Only suppress in specific files (glob patterns) */
32
+ paths?: string[];
33
+ /** Optional: Expiration date (ISO 8601 format) */
34
+ expires?: string;
35
+ /** Optional: Who added this suppression */
36
+ suppressedBy?: string;
37
+ /** Optional: When this was added (ISO 8601 format) */
38
+ suppressedAt?: string;
39
+ }
40
+ /**
41
+ * Suppress a specific finding by its hash
42
+ */
43
+ export interface FindingSuppression {
44
+ /** Finding hash (computed from file path, content, and category) */
45
+ hash: string;
46
+ /** File path where the finding was detected */
47
+ file: string;
48
+ /** Line number (for reference, not used in matching) */
49
+ line?: number;
50
+ /** Reason for suppression (required for audit trail) */
51
+ reason: string;
52
+ /** Optional: Expiration date (ISO 8601 format) */
53
+ expires?: string;
54
+ /** Optional: Who added this suppression */
55
+ suppressedBy?: string;
56
+ /** Optional: When this was added (ISO 8601 format) */
57
+ suppressedAt?: string;
58
+ }
59
+ /**
60
+ * Inline suppression from code comments
61
+ */
62
+ export interface InlineSuppression {
63
+ /** Line number this suppression applies to */
64
+ lineNumber: number;
65
+ /** Type of inline suppression */
66
+ type: 'next-line' | 'same-line' | 'block-start' | 'block-end';
67
+ /** Reason from the comment */
68
+ reason: string;
69
+ /** Optional: Specific rule/category to suppress */
70
+ ruleId?: VulnerabilityCategory;
71
+ /** Original comment text */
72
+ commentText: string;
73
+ }
74
+ /**
75
+ * Result of checking if a finding is suppressed
76
+ */
77
+ export interface SuppressionMatch {
78
+ /** Whether the finding is suppressed */
79
+ suppressed: boolean;
80
+ /** The matching suppression (if any) */
81
+ match?: {
82
+ /** Type of suppression that matched */
83
+ type: 'inline' | 'config-finding' | 'config-rule';
84
+ /** Reason for suppression */
85
+ reason: string;
86
+ /** Expiration date (if any) */
87
+ expires?: string;
88
+ /** Whether the suppression is expired */
89
+ expired?: boolean;
90
+ };
91
+ /** Hash of the finding (always computed) */
92
+ hash: string;
93
+ }
94
+ /**
95
+ * Suppressed vulnerability with metadata
96
+ */
97
+ export interface SuppressedVulnerability {
98
+ /** The original vulnerability */
99
+ vulnerability: {
100
+ id: string;
101
+ filePath: string;
102
+ lineNumber: number;
103
+ category: VulnerabilityCategory;
104
+ severity: VulnerabilitySeverity;
105
+ title: string;
106
+ };
107
+ /** Suppression details */
108
+ suppression: {
109
+ /** Type of suppression that matched */
110
+ type: 'inline' | 'config-finding' | 'config-rule';
111
+ /** Reason for suppression */
112
+ reason: string;
113
+ /** Expiration date (if any) */
114
+ expires?: string;
115
+ /** Finding hash */
116
+ hash: string;
117
+ };
118
+ }
119
+ /**
120
+ * Result of applying suppressions to findings
121
+ */
122
+ export interface SuppressionResult {
123
+ /** Findings that passed through (not suppressed) */
124
+ findings: import('../types').Vulnerability[];
125
+ /** Findings that were suppressed */
126
+ suppressed: SuppressedVulnerability[];
127
+ /** Count of expired suppressions (findings reappear) */
128
+ expiredSuppressions: number;
129
+ /** Statistics */
130
+ stats: {
131
+ /** Total findings before suppression */
132
+ total: number;
133
+ /** Findings suppressed by inline comments */
134
+ inlineSuppressed: number;
135
+ /** Findings suppressed by config (finding hash) */
136
+ configFindingSuppressed: number;
137
+ /** Findings suppressed by config (rule) */
138
+ configRuleSuppressed: number;
139
+ /** Findings that would have been suppressed but suppression expired */
140
+ expired: number;
141
+ };
142
+ }
143
+ /**
144
+ * Suppression configuration file names (in order of priority)
145
+ */
146
+ export declare const SUPPRESSION_CONFIG_FILES: readonly [".oculum.yaml", ".oculum.yml", "oculum.config.json", ".oculumrc"];
147
+ /**
148
+ * Default suppression config (empty)
149
+ */
150
+ export declare const DEFAULT_SUPPRESSION_CONFIG: SuppressionConfig;
151
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/suppression/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * Suppression System Types
4
+ * Defines types for the finding suppression/ignore system
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.DEFAULT_SUPPRESSION_CONFIG = exports.SUPPRESSION_CONFIG_FILES = void 0;
8
+ /**
9
+ * Suppression configuration file names (in order of priority)
10
+ */
11
+ exports.SUPPRESSION_CONFIG_FILES = [
12
+ '.oculum.yaml',
13
+ '.oculum.yml',
14
+ 'oculum.config.json',
15
+ '.oculumrc',
16
+ ];
17
+ /**
18
+ * Default suppression config (empty)
19
+ */
20
+ exports.DEFAULT_SUPPRESSION_CONFIG = {
21
+ version: 1,
22
+ suppressions: {
23
+ rules: [],
24
+ findings: [],
25
+ },
26
+ ignore: [],
27
+ };
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/suppression/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAsJH;;GAEG;AACU,QAAA,wBAAwB,GAAG;IACtC,cAAc;IACd,aAAa;IACb,oBAAoB;IACpB,WAAW;CACH,CAAA;AAEV;;GAEG;AACU,QAAA,0BAA0B,GAAsB;IAC3D,OAAO,EAAE,CAAC;IACV,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACb;IACD,MAAM,EAAE,EAAE;CACX,CAAA"}
package/dist/tiers.d.ts CHANGED
@@ -56,7 +56,7 @@ export declare const LAYER1_CATEGORY_TO_DETECTOR: Partial<Record<VulnerabilityCa
56
56
  /**
57
57
  * Layer 2 detector names (internal identifiers matching detector function names)
58
58
  */
59
- export type Layer2DetectorName = 'dangerous_functions' | 'byok_patterns' | 'ai_execution_sinks' | 'ai_agent_tools' | 'auth_antipatterns' | 'data_exposure' | 'ai_fingerprinting' | 'ai_prompt_hygiene' | 'logic_gates' | 'variables' | 'risky_imports' | 'framework_checks' | 'ai_rag_safety' | 'ai_endpoint_protection' | 'ai_schema_validation';
59
+ export type Layer2DetectorName = 'dangerous_functions' | 'byok_patterns' | 'ai_execution_sinks' | 'ai_agent_tools' | 'auth_antipatterns' | 'data_exposure' | 'ai_fingerprinting' | 'ai_prompt_hygiene' | 'logic_gates' | 'variables' | 'risky_imports' | 'framework_checks' | 'ai_rag_safety' | 'ai_endpoint_protection' | 'ai_schema_validation' | 'ai_package_hallucination' | 'ai_mcp_security' | 'model_supply_chain';
60
60
  /**
61
61
  * Layer 2 tier assignments
62
62
  *
@@ -106,11 +106,11 @@ export declare function getLayer2DetectorTier(detector: Layer2DetectorName): Det
106
106
  /**
107
107
  * Check if a tier should be visible at a given scan depth
108
108
  */
109
- export declare function isTierVisibleAtDepth(tier: DetectorTier, depth: 'cheap' | 'validated' | 'deep'): boolean;
109
+ export declare function isTierVisibleAtDepth(tier: DetectorTier, depth: 'local' | 'verified' | 'deep'): boolean;
110
110
  /**
111
111
  * Check if a tier should go through AI validation at a given scan depth
112
112
  */
113
- export declare function shouldValidateWithAI(tier: DetectorTier, depth: 'cheap' | 'validated' | 'deep'): boolean;
113
+ export declare function shouldValidateWithAI(tier: DetectorTier, depth: 'local' | 'verified' | 'deep'): boolean;
114
114
  /**
115
115
  * Compute tier statistics from an array of vulnerabilities
116
116
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tiers.d.ts","sourceRoot":"","sources":["../src/tiers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,CAAA;AAElE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;CACrB;AAMD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,eAAe,GACf,aAAa,GACb,gBAAgB,GAChB,SAAS,GACT,cAAc,GACd,YAAY,GACZ,aAAa,CAAA;AAEjB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,kBAAkB,EAAE,YAAY,CAQ1E,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CASlG,CAAA;AAMD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,qBAAqB,GACrB,eAAe,GACf,oBAAoB,GACpB,gBAAgB,GAChB,mBAAmB,GACnB,eAAe,GACf,mBAAmB,GACnB,mBAAmB,GACnB,aAAa,GACb,WAAW,GACX,eAAe,GACf,kBAAkB,GAElB,eAAe,GACf,wBAAwB,GACxB,sBAAsB,CAAA;AAE1B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,kBAAkB,EAAE,YAAY,CAuB1E,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAkClG,CAAA;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GACf,YAAY,CAoBd;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,YAAY,CAEhF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,YAAY,CAEhF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,GACpC,OAAO,CAYT;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,GACpC,OAAO,CAUT;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,qBAAqB,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CAAE,CAAC,GAC5E,SAAS,CAaX;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAExD"}
1
+ {"version":3,"file":"tiers.d.ts","sourceRoot":"","sources":["../src/tiers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,CAAA;AAElE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;CACrB;AAMD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,eAAe,GACf,aAAa,GACb,gBAAgB,GAChB,SAAS,GACT,cAAc,GACd,YAAY,GACZ,aAAa,CAAA;AAEjB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,kBAAkB,EAAE,YAAY,CAQ1E,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CASlG,CAAA;AAMD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,qBAAqB,GACrB,eAAe,GACf,oBAAoB,GACpB,gBAAgB,GAChB,mBAAmB,GACnB,eAAe,GACf,mBAAmB,GACnB,mBAAmB,GACnB,aAAa,GACb,WAAW,GACX,eAAe,GACf,kBAAkB,GAElB,eAAe,GACf,wBAAwB,GACxB,sBAAsB,GAEtB,0BAA0B,GAC1B,iBAAiB,GAEjB,oBAAoB,CAAA;AAExB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,kBAAkB,EAAE,YAAY,CA6B1E,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CA2DlG,CAAA;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GACf,YAAY,CAoBd;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,YAAY,CAEhF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,YAAY,CAEhF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,GACnC,OAAO,CAYT;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,GACnC,OAAO,CAUT;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,qBAAqB,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CAAE,CAAC,GAC5E,SAAS,CAaX;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAExD"}
package/dist/tiers.js CHANGED
@@ -100,6 +100,11 @@ exports.LAYER2_DETECTOR_TIERS = {
100
100
  ai_rag_safety: 'core', // Tier A - Cross-tenant data access is critical
101
101
  ai_endpoint_protection: 'core', // Tier A - Cost abuse / API exposure has clear signals
102
102
  ai_schema_validation: 'ai_assisted', // Tier B - Context-dependent, benefits from AI validation
103
+ // AI Detection Roadmap Phase 1
104
+ ai_package_hallucination: 'core', // Tier A - Supply chain attacks are critical
105
+ ai_mcp_security: 'core', // Tier A - MCP tool security is critical for AI agents
106
+ // AI Detection Roadmap Phase 2
107
+ model_supply_chain: 'core', // Tier A - Model supply chain risks are critical (RCE)
103
108
  };
104
109
  /**
105
110
  * Mapping from vulnerability category to Layer 2 detector name
@@ -142,6 +147,28 @@ exports.LAYER2_CATEGORY_TO_DETECTOR = {
142
147
  ai_rag_exfiltration: 'ai_rag_safety',
143
148
  ai_endpoint_unprotected: 'ai_endpoint_protection',
144
149
  ai_schema_mismatch: 'ai_schema_validation',
150
+ // AI Detection Roadmap Phase 1 categories
151
+ ai_package_hallucination: 'ai_package_hallucination',
152
+ ai_rag_corpus_poisoning: 'ai_rag_safety', // Extended RAG detector
153
+ ai_rag_pii_leakage: 'ai_rag_safety', // Extended RAG detector
154
+ ai_mcp_tool_poisoning: 'ai_mcp_security',
155
+ ai_mcp_credential_issue: 'ai_mcp_security',
156
+ ai_mcp_confused_deputy: 'ai_mcp_security',
157
+ // Phase 1 Enhancement Backlog categories
158
+ ai_mcp_description_injection: 'ai_mcp_security',
159
+ ai_mcp_server_shadowing: 'ai_mcp_security',
160
+ ai_mcp_config_secrets: 'ai_mcp_security', // Note: Layer 1 detector, but core tier
161
+ ai_mcp_config_permissions: 'ai_mcp_security', // Note: Layer 1 detector
162
+ ai_rag_query_injection: 'ai_rag_safety',
163
+ ai_rag_embedding_poisoning: 'ai_rag_safety',
164
+ ai_rag_chunk_injection: 'ai_rag_safety',
165
+ ai_package_typosquat: 'ai_package_hallucination',
166
+ ai_package_malicious: 'ai_package_hallucination',
167
+ // AI Detection Roadmap Phase 2 categories
168
+ ai_unsafe_model_load: 'model_supply_chain',
169
+ ai_unverified_model: 'model_supply_chain',
170
+ ai_unsafe_finetuning: 'model_supply_chain',
171
+ ai_excessive_agency: 'ai_agent_tools', // Extended in ai-agent-tools.ts
145
172
  };
146
173
  // ============================================================================
147
174
  // Tier Lookup Helpers
@@ -186,14 +213,14 @@ function getLayer2DetectorTier(detector) {
186
213
  */
187
214
  function isTierVisibleAtDepth(tier, depth) {
188
215
  switch (depth) {
189
- case 'cheap':
190
- // Only Tier A (core) findings are visible in cheap scans
216
+ case 'local':
217
+ // Only Tier A (core) findings are visible in local scans
191
218
  return tier === 'core';
192
- case 'validated':
219
+ case 'verified':
193
220
  // Tier A always visible, Tier B visible after AI validation
194
221
  return tier === 'core' || tier === 'ai_assisted';
195
222
  case 'deep':
196
- // Same as validated for visibility (deep adds Layer 3, not more tiers)
223
+ // Same as verified for visibility (deep adds Layer 3, not more tiers)
197
224
  return tier === 'core' || tier === 'ai_assisted';
198
225
  }
199
226
  }
@@ -201,11 +228,11 @@ function isTierVisibleAtDepth(tier, depth) {
201
228
  * Check if a tier should go through AI validation at a given scan depth
202
229
  */
203
230
  function shouldValidateWithAI(tier, depth) {
204
- // Cheap scans skip AI validation entirely
205
- if (depth === 'cheap') {
231
+ // Local scans skip AI validation entirely
232
+ if (depth === 'local') {
206
233
  return false;
207
234
  }
208
- // In validated/deep, Tier B findings should go through AI validation
235
+ // In verified/deep, Tier B findings should go through AI validation
209
236
  // Tier A is high-precision and doesn't need AI validation
210
237
  // Tier C is hidden anyway
211
238
  return tier === 'ai_assisted';
package/dist/tiers.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tiers.js","sourceRoot":"","sources":["../src/tiers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tiers.js","sourceRoot":"","sources":["../src/tiers.ts"],"names":[],"mappings":"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"}