circle-ir-ai 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/LICENSE +15 -0
  3. package/README.md +336 -0
  4. package/dist/action-queue/aggregator.d.ts +40 -0
  5. package/dist/action-queue/aggregator.d.ts.map +1 -0
  6. package/dist/action-queue/aggregator.js +375 -0
  7. package/dist/action-queue/aggregator.js.map +1 -0
  8. package/dist/action-queue/index.d.ts +14 -0
  9. package/dist/action-queue/index.d.ts.map +1 -0
  10. package/dist/action-queue/index.js +17 -0
  11. package/dist/action-queue/index.js.map +1 -0
  12. package/dist/action-queue/queue.d.ts +74 -0
  13. package/dist/action-queue/queue.d.ts.map +1 -0
  14. package/dist/action-queue/queue.js +433 -0
  15. package/dist/action-queue/queue.js.map +1 -0
  16. package/dist/action-queue/types.d.ts +162 -0
  17. package/dist/action-queue/types.d.ts.map +1 -0
  18. package/dist/action-queue/types.js +44 -0
  19. package/dist/action-queue/types.js.map +1 -0
  20. package/dist/agents/enrichment-agent.d.ts +16 -0
  21. package/dist/agents/enrichment-agent.d.ts.map +1 -0
  22. package/dist/agents/enrichment-agent.js +102 -0
  23. package/dist/agents/enrichment-agent.js.map +1 -0
  24. package/dist/agents/index.d.ts +12 -0
  25. package/dist/agents/index.d.ts.map +1 -0
  26. package/dist/agents/index.js +15 -0
  27. package/dist/agents/index.js.map +1 -0
  28. package/dist/agents/mastra/agents.d.ts +373 -0
  29. package/dist/agents/mastra/agents.d.ts.map +1 -0
  30. package/dist/agents/mastra/agents.js +347 -0
  31. package/dist/agents/mastra/agents.js.map +1 -0
  32. package/dist/agents/mastra/index.d.ts +12 -0
  33. package/dist/agents/mastra/index.d.ts.map +1 -0
  34. package/dist/agents/mastra/index.js +17 -0
  35. package/dist/agents/mastra/index.js.map +1 -0
  36. package/dist/agents/mastra/instance.d.ts +383 -0
  37. package/dist/agents/mastra/instance.d.ts.map +1 -0
  38. package/dist/agents/mastra/instance.js +37 -0
  39. package/dist/agents/mastra/instance.js.map +1 -0
  40. package/dist/agents/mastra/steps.d.ts +300 -0
  41. package/dist/agents/mastra/steps.d.ts.map +1 -0
  42. package/dist/agents/mastra/steps.js +468 -0
  43. package/dist/agents/mastra/steps.js.map +1 -0
  44. package/dist/agents/mastra/swarm.d.ts +106 -0
  45. package/dist/agents/mastra/swarm.d.ts.map +1 -0
  46. package/dist/agents/mastra/swarm.js +501 -0
  47. package/dist/agents/mastra/swarm.js.map +1 -0
  48. package/dist/agents/mastra/workflow.d.ts +81 -0
  49. package/dist/agents/mastra/workflow.d.ts.map +1 -0
  50. package/dist/agents/mastra/workflow.js +460 -0
  51. package/dist/agents/mastra/workflow.js.map +1 -0
  52. package/dist/agents/multi/agents/security.d.ts +29 -0
  53. package/dist/agents/multi/agents/security.d.ts.map +1 -0
  54. package/dist/agents/multi/agents/security.js +830 -0
  55. package/dist/agents/multi/agents/security.js.map +1 -0
  56. package/dist/agents/multi/extractor.d.ts +21 -0
  57. package/dist/agents/multi/extractor.d.ts.map +1 -0
  58. package/dist/agents/multi/extractor.js +483 -0
  59. package/dist/agents/multi/extractor.js.map +1 -0
  60. package/dist/agents/multi/index.d.ts +32 -0
  61. package/dist/agents/multi/index.d.ts.map +1 -0
  62. package/dist/agents/multi/index.js +34 -0
  63. package/dist/agents/multi/index.js.map +1 -0
  64. package/dist/agents/multi/runner.d.ts +79 -0
  65. package/dist/agents/multi/runner.d.ts.map +1 -0
  66. package/dist/agents/multi/runner.js +323 -0
  67. package/dist/agents/multi/runner.js.map +1 -0
  68. package/dist/agents/security-agent.d.ts +16 -0
  69. package/dist/agents/security-agent.d.ts.map +1 -0
  70. package/dist/agents/security-agent.js +299 -0
  71. package/dist/agents/security-agent.js.map +1 -0
  72. package/dist/agents/types.d.ts +373 -0
  73. package/dist/agents/types.d.ts.map +1 -0
  74. package/dist/agents/types.js +14 -0
  75. package/dist/agents/types.js.map +1 -0
  76. package/dist/agents/verification-agent.d.ts +23 -0
  77. package/dist/agents/verification-agent.d.ts.map +1 -0
  78. package/dist/agents/verification-agent.js +217 -0
  79. package/dist/agents/verification-agent.js.map +1 -0
  80. package/dist/agents/workflow.d.ts +30 -0
  81. package/dist/agents/workflow.d.ts.map +1 -0
  82. package/dist/agents/workflow.js +79 -0
  83. package/dist/agents/workflow.js.map +1 -0
  84. package/dist/analysis/enriched.d.ts +16 -0
  85. package/dist/analysis/enriched.d.ts.map +1 -0
  86. package/dist/analysis/enriched.js +297 -0
  87. package/dist/analysis/enriched.js.map +1 -0
  88. package/dist/analysis/llm-correlated-predicates.d.ts +80 -0
  89. package/dist/analysis/llm-correlated-predicates.d.ts.map +1 -0
  90. package/dist/analysis/llm-correlated-predicates.js +255 -0
  91. package/dist/analysis/llm-correlated-predicates.js.map +1 -0
  92. package/dist/analysis/llm-cross-file-taint.d.ts +86 -0
  93. package/dist/analysis/llm-cross-file-taint.d.ts.map +1 -0
  94. package/dist/analysis/llm-cross-file-taint.js +264 -0
  95. package/dist/analysis/llm-cross-file-taint.js.map +1 -0
  96. package/dist/analysis/pattern-discovery.d.ts +79 -0
  97. package/dist/analysis/pattern-discovery.d.ts.map +1 -0
  98. package/dist/analysis/pattern-discovery.js +447 -0
  99. package/dist/analysis/pattern-discovery.js.map +1 -0
  100. package/dist/cache/file-cache.d.ts +89 -0
  101. package/dist/cache/file-cache.d.ts.map +1 -0
  102. package/dist/cache/file-cache.js +208 -0
  103. package/dist/cache/file-cache.js.map +1 -0
  104. package/dist/cache/index.d.ts +6 -0
  105. package/dist/cache/index.d.ts.map +1 -0
  106. package/dist/cache/index.js +5 -0
  107. package/dist/cache/index.js.map +1 -0
  108. package/dist/cli/args.d.ts +52 -0
  109. package/dist/cli/args.d.ts.map +1 -0
  110. package/dist/cli/args.js +422 -0
  111. package/dist/cli/args.js.map +1 -0
  112. package/dist/cli/colors.d.ts +31 -0
  113. package/dist/cli/colors.d.ts.map +1 -0
  114. package/dist/cli/colors.js +80 -0
  115. package/dist/cli/colors.js.map +1 -0
  116. package/dist/cli/commands/analyze-skill.d.ts +33 -0
  117. package/dist/cli/commands/analyze-skill.d.ts.map +1 -0
  118. package/dist/cli/commands/analyze-skill.js +217 -0
  119. package/dist/cli/commands/analyze-skill.js.map +1 -0
  120. package/dist/cli/commands/analyze.d.ts +18 -0
  121. package/dist/cli/commands/analyze.d.ts.map +1 -0
  122. package/dist/cli/commands/analyze.js +30 -0
  123. package/dist/cli/commands/analyze.js.map +1 -0
  124. package/dist/cli/commands/benchmark-runner.d.ts +42 -0
  125. package/dist/cli/commands/benchmark-runner.d.ts.map +1 -0
  126. package/dist/cli/commands/benchmark-runner.js +18 -0
  127. package/dist/cli/commands/benchmark-runner.js.map +1 -0
  128. package/dist/cli/commands/benchmark.d.ts +11 -0
  129. package/dist/cli/commands/benchmark.d.ts.map +1 -0
  130. package/dist/cli/commands/benchmark.js +90 -0
  131. package/dist/cli/commands/benchmark.js.map +1 -0
  132. package/dist/cli/commands/dead-code.d.ts +11 -0
  133. package/dist/cli/commands/dead-code.d.ts.map +1 -0
  134. package/dist/cli/commands/dead-code.js +65 -0
  135. package/dist/cli/commands/dead-code.js.map +1 -0
  136. package/dist/cli/commands/generate-spec.d.ts +11 -0
  137. package/dist/cli/commands/generate-spec.d.ts.map +1 -0
  138. package/dist/cli/commands/generate-spec.js +67 -0
  139. package/dist/cli/commands/generate-spec.js.map +1 -0
  140. package/dist/cli/commands/health.d.ts +11 -0
  141. package/dist/cli/commands/health.d.ts.map +1 -0
  142. package/dist/cli/commands/health.js +67 -0
  143. package/dist/cli/commands/health.js.map +1 -0
  144. package/dist/cli/commands/project.d.ts +21 -0
  145. package/dist/cli/commands/project.d.ts.map +1 -0
  146. package/dist/cli/commands/project.js +92 -0
  147. package/dist/cli/commands/project.js.map +1 -0
  148. package/dist/cli/commands/scan.d.ts +11 -0
  149. package/dist/cli/commands/scan.d.ts.map +1 -0
  150. package/dist/cli/commands/scan.js +68 -0
  151. package/dist/cli/commands/scan.js.map +1 -0
  152. package/dist/cli/commands/secrets.d.ts +11 -0
  153. package/dist/cli/commands/secrets.d.ts.map +1 -0
  154. package/dist/cli/commands/secrets.js +71 -0
  155. package/dist/cli/commands/secrets.js.map +1 -0
  156. package/dist/cli/commands/swarm.d.ts +20 -0
  157. package/dist/cli/commands/swarm.d.ts.map +1 -0
  158. package/dist/cli/commands/swarm.js +174 -0
  159. package/dist/cli/commands/swarm.js.map +1 -0
  160. package/dist/cli/config.d.ts +103 -0
  161. package/dist/cli/config.d.ts.map +1 -0
  162. package/dist/cli/config.js +307 -0
  163. package/dist/cli/config.js.map +1 -0
  164. package/dist/cli/discovery.d.ts +31 -0
  165. package/dist/cli/discovery.d.ts.map +1 -0
  166. package/dist/cli/discovery.js +212 -0
  167. package/dist/cli/discovery.js.map +1 -0
  168. package/dist/cli/formatters/index.d.ts +15 -0
  169. package/dist/cli/formatters/index.d.ts.map +1 -0
  170. package/dist/cli/formatters/index.js +51 -0
  171. package/dist/cli/formatters/index.js.map +1 -0
  172. package/dist/cli/formatters/json.d.ts +11 -0
  173. package/dist/cli/formatters/json.d.ts.map +1 -0
  174. package/dist/cli/formatters/json.js +12 -0
  175. package/dist/cli/formatters/json.js.map +1 -0
  176. package/dist/cli/formatters/project-json.d.ts +11 -0
  177. package/dist/cli/formatters/project-json.d.ts.map +1 -0
  178. package/dist/cli/formatters/project-json.js +12 -0
  179. package/dist/cli/formatters/project-json.js.map +1 -0
  180. package/dist/cli/formatters/project-sarif.d.ts +11 -0
  181. package/dist/cli/formatters/project-sarif.d.ts.map +1 -0
  182. package/dist/cli/formatters/project-sarif.js +127 -0
  183. package/dist/cli/formatters/project-sarif.js.map +1 -0
  184. package/dist/cli/formatters/project-summary.d.ts +11 -0
  185. package/dist/cli/formatters/project-summary.d.ts.map +1 -0
  186. package/dist/cli/formatters/project-summary.js +202 -0
  187. package/dist/cli/formatters/project-summary.js.map +1 -0
  188. package/dist/cli/formatters/sarif-shared.d.ts +101 -0
  189. package/dist/cli/formatters/sarif-shared.d.ts.map +1 -0
  190. package/dist/cli/formatters/sarif-shared.js +57 -0
  191. package/dist/cli/formatters/sarif-shared.js.map +1 -0
  192. package/dist/cli/formatters/sarif.d.ts +12 -0
  193. package/dist/cli/formatters/sarif.d.ts.map +1 -0
  194. package/dist/cli/formatters/sarif.js +92 -0
  195. package/dist/cli/formatters/sarif.js.map +1 -0
  196. package/dist/cli/formatters/summary.d.ts +11 -0
  197. package/dist/cli/formatters/summary.d.ts.map +1 -0
  198. package/dist/cli/formatters/summary.js +240 -0
  199. package/dist/cli/formatters/summary.js.map +1 -0
  200. package/dist/cli/formatters/two-phase-summary.d.ts +11 -0
  201. package/dist/cli/formatters/two-phase-summary.d.ts.map +1 -0
  202. package/dist/cli/formatters/two-phase-summary.js +188 -0
  203. package/dist/cli/formatters/two-phase-summary.js.map +1 -0
  204. package/dist/cli/index.d.ts +15 -0
  205. package/dist/cli/index.d.ts.map +1 -0
  206. package/dist/cli/index.js +555 -0
  207. package/dist/cli/index.js.map +1 -0
  208. package/dist/components/clustering.d.ts +60 -0
  209. package/dist/components/clustering.d.ts.map +1 -0
  210. package/dist/components/clustering.js +129 -0
  211. package/dist/components/clustering.js.map +1 -0
  212. package/dist/components/enrichment.d.ts +45 -0
  213. package/dist/components/enrichment.d.ts.map +1 -0
  214. package/dist/components/enrichment.js +193 -0
  215. package/dist/components/enrichment.js.map +1 -0
  216. package/dist/components/index.d.ts +29 -0
  217. package/dist/components/index.d.ts.map +1 -0
  218. package/dist/components/index.js +56 -0
  219. package/dist/components/index.js.map +1 -0
  220. package/dist/dead-code/detector.d.ts +200 -0
  221. package/dist/dead-code/detector.d.ts.map +1 -0
  222. package/dist/dead-code/detector.js +1003 -0
  223. package/dist/dead-code/detector.js.map +1 -0
  224. package/dist/dead-code/index.d.ts +7 -0
  225. package/dist/dead-code/index.d.ts.map +1 -0
  226. package/dist/dead-code/index.js +7 -0
  227. package/dist/dead-code/index.js.map +1 -0
  228. package/dist/extractors/index.d.ts +15 -0
  229. package/dist/extractors/index.d.ts.map +1 -0
  230. package/dist/extractors/index.js +14 -0
  231. package/dist/extractors/index.js.map +1 -0
  232. package/dist/extractors/natural-language.d.ts +46 -0
  233. package/dist/extractors/natural-language.d.ts.map +1 -0
  234. package/dist/extractors/natural-language.js +228 -0
  235. package/dist/extractors/natural-language.js.map +1 -0
  236. package/dist/extractors/tree-sitter.d.ts +33 -0
  237. package/dist/extractors/tree-sitter.d.ts.map +1 -0
  238. package/dist/extractors/tree-sitter.js +69 -0
  239. package/dist/extractors/tree-sitter.js.map +1 -0
  240. package/dist/extractors/types.d.ts +62 -0
  241. package/dist/extractors/types.d.ts.map +1 -0
  242. package/dist/extractors/types.js +54 -0
  243. package/dist/extractors/types.js.map +1 -0
  244. package/dist/health-score/calculator.d.ts +123 -0
  245. package/dist/health-score/calculator.d.ts.map +1 -0
  246. package/dist/health-score/calculator.js +444 -0
  247. package/dist/health-score/calculator.js.map +1 -0
  248. package/dist/health-score/index.d.ts +12 -0
  249. package/dist/health-score/index.d.ts.map +1 -0
  250. package/dist/health-score/index.js +14 -0
  251. package/dist/health-score/index.js.map +1 -0
  252. package/dist/health-score/metrics.d.ts +142 -0
  253. package/dist/health-score/metrics.d.ts.map +1 -0
  254. package/dist/health-score/metrics.js +332 -0
  255. package/dist/health-score/metrics.js.map +1 -0
  256. package/dist/index.d.ts +26 -0
  257. package/dist/index.d.ts.map +1 -0
  258. package/dist/index.js +43 -0
  259. package/dist/index.js.map +1 -0
  260. package/dist/llm/ax-client.d.ts +477 -0
  261. package/dist/llm/ax-client.d.ts.map +1 -0
  262. package/dist/llm/ax-client.js +1641 -0
  263. package/dist/llm/ax-client.js.map +1 -0
  264. package/dist/llm/config.d.ts +58 -0
  265. package/dist/llm/config.d.ts.map +1 -0
  266. package/dist/llm/config.js +97 -0
  267. package/dist/llm/config.js.map +1 -0
  268. package/dist/llm/discovery.d.ts +123 -0
  269. package/dist/llm/discovery.d.ts.map +1 -0
  270. package/dist/llm/discovery.js +505 -0
  271. package/dist/llm/discovery.js.map +1 -0
  272. package/dist/llm/enrichment.d.ts +108 -0
  273. package/dist/llm/enrichment.d.ts.map +1 -0
  274. package/dist/llm/enrichment.js +312 -0
  275. package/dist/llm/enrichment.js.map +1 -0
  276. package/dist/llm/index.d.ts +13 -0
  277. package/dist/llm/index.d.ts.map +1 -0
  278. package/dist/llm/index.js +22 -0
  279. package/dist/llm/index.js.map +1 -0
  280. package/dist/llm/language-context.d.ts +64 -0
  281. package/dist/llm/language-context.d.ts.map +1 -0
  282. package/dist/llm/language-context.js +492 -0
  283. package/dist/llm/language-context.js.map +1 -0
  284. package/dist/llm/pattern-verification.d.ts +39 -0
  285. package/dist/llm/pattern-verification.d.ts.map +1 -0
  286. package/dist/llm/pattern-verification.js +127 -0
  287. package/dist/llm/pattern-verification.js.map +1 -0
  288. package/dist/llm/prompt-security.d.ts +120 -0
  289. package/dist/llm/prompt-security.d.ts.map +1 -0
  290. package/dist/llm/prompt-security.js +301 -0
  291. package/dist/llm/prompt-security.js.map +1 -0
  292. package/dist/llm/prompts/index.d.ts +31 -0
  293. package/dist/llm/prompts/index.d.ts.map +1 -0
  294. package/dist/llm/prompts/index.js +92 -0
  295. package/dist/llm/prompts/index.js.map +1 -0
  296. package/dist/llm/prompts/rust.d.ts +30 -0
  297. package/dist/llm/prompts/rust.d.ts.map +1 -0
  298. package/dist/llm/prompts/rust.js +121 -0
  299. package/dist/llm/prompts/rust.js.map +1 -0
  300. package/dist/llm/schemas.d.ts +892 -0
  301. package/dist/llm/schemas.d.ts.map +1 -0
  302. package/dist/llm/schemas.js +258 -0
  303. package/dist/llm/schemas.js.map +1 -0
  304. package/dist/llm/verification.d.ts +127 -0
  305. package/dist/llm/verification.d.ts.map +1 -0
  306. package/dist/llm/verification.js +394 -0
  307. package/dist/llm/verification.js.map +1 -0
  308. package/dist/project/analyzer.d.ts +30 -0
  309. package/dist/project/analyzer.d.ts.map +1 -0
  310. package/dist/project/analyzer.js +358 -0
  311. package/dist/project/analyzer.js.map +1 -0
  312. package/dist/project/call-graph.d.ts +22 -0
  313. package/dist/project/call-graph.d.ts.map +1 -0
  314. package/dist/project/call-graph.js +246 -0
  315. package/dist/project/call-graph.js.map +1 -0
  316. package/dist/project/index.d.ts +18 -0
  317. package/dist/project/index.d.ts.map +1 -0
  318. package/dist/project/index.js +20 -0
  319. package/dist/project/index.js.map +1 -0
  320. package/dist/project/taint-paths.d.ts +22 -0
  321. package/dist/project/taint-paths.d.ts.map +1 -0
  322. package/dist/project/taint-paths.js +265 -0
  323. package/dist/project/taint-paths.js.map +1 -0
  324. package/dist/project/two-phase-analyzer.d.ts +143 -0
  325. package/dist/project/two-phase-analyzer.d.ts.map +1 -0
  326. package/dist/project/two-phase-analyzer.js +646 -0
  327. package/dist/project/two-phase-analyzer.js.map +1 -0
  328. package/dist/project/type-hierarchy.d.ts +28 -0
  329. package/dist/project/type-hierarchy.d.ts.map +1 -0
  330. package/dist/project/type-hierarchy.js +218 -0
  331. package/dist/project/type-hierarchy.js.map +1 -0
  332. package/dist/secret-scan/index.d.ts +12 -0
  333. package/dist/secret-scan/index.d.ts.map +1 -0
  334. package/dist/secret-scan/index.js +14 -0
  335. package/dist/secret-scan/index.js.map +1 -0
  336. package/dist/secret-scan/patterns.d.ts +38 -0
  337. package/dist/secret-scan/patterns.d.ts.map +1 -0
  338. package/dist/secret-scan/patterns.js +473 -0
  339. package/dist/secret-scan/patterns.js.map +1 -0
  340. package/dist/secret-scan/scanner.d.ts +162 -0
  341. package/dist/secret-scan/scanner.d.ts.map +1 -0
  342. package/dist/secret-scan/scanner.js +511 -0
  343. package/dist/secret-scan/scanner.js.map +1 -0
  344. package/dist/security-scan/index.d.ts +12 -0
  345. package/dist/security-scan/index.d.ts.map +1 -0
  346. package/dist/security-scan/index.js +15 -0
  347. package/dist/security-scan/index.js.map +1 -0
  348. package/dist/security-scan/owasp-mapping.d.ts +29 -0
  349. package/dist/security-scan/owasp-mapping.d.ts.map +1 -0
  350. package/dist/security-scan/owasp-mapping.js +246 -0
  351. package/dist/security-scan/owasp-mapping.js.map +1 -0
  352. package/dist/security-scan/scanner.d.ts +204 -0
  353. package/dist/security-scan/scanner.d.ts.map +1 -0
  354. package/dist/security-scan/scanner.js +693 -0
  355. package/dist/security-scan/scanner.js.map +1 -0
  356. package/dist/security-scan/trend-tracker.d.ts +150 -0
  357. package/dist/security-scan/trend-tracker.d.ts.map +1 -0
  358. package/dist/security-scan/trend-tracker.js +299 -0
  359. package/dist/security-scan/trend-tracker.js.map +1 -0
  360. package/dist/skills/bundle-loader.d.ts +26 -0
  361. package/dist/skills/bundle-loader.d.ts.map +1 -0
  362. package/dist/skills/bundle-loader.js +284 -0
  363. package/dist/skills/bundle-loader.js.map +1 -0
  364. package/dist/skills/capability-mismatch.d.ts +21 -0
  365. package/dist/skills/capability-mismatch.d.ts.map +1 -0
  366. package/dist/skills/capability-mismatch.js +188 -0
  367. package/dist/skills/capability-mismatch.js.map +1 -0
  368. package/dist/skills/index.d.ts +10 -0
  369. package/dist/skills/index.d.ts.map +1 -0
  370. package/dist/skills/index.js +9 -0
  371. package/dist/skills/index.js.map +1 -0
  372. package/dist/skills/skill-analyzer.d.ts +16 -0
  373. package/dist/skills/skill-analyzer.d.ts.map +1 -0
  374. package/dist/skills/skill-analyzer.js +361 -0
  375. package/dist/skills/skill-analyzer.js.map +1 -0
  376. package/dist/skills/types.d.ts +195 -0
  377. package/dist/skills/types.d.ts.map +1 -0
  378. package/dist/skills/types.js +7 -0
  379. package/dist/skills/types.js.map +1 -0
  380. package/dist/specifica/conflict-resolver.d.ts +23 -0
  381. package/dist/specifica/conflict-resolver.d.ts.map +1 -0
  382. package/dist/specifica/conflict-resolver.js +129 -0
  383. package/dist/specifica/conflict-resolver.js.map +1 -0
  384. package/dist/specifica/evidence-aggregator.d.ts +33 -0
  385. package/dist/specifica/evidence-aggregator.d.ts.map +1 -0
  386. package/dist/specifica/evidence-aggregator.js +236 -0
  387. package/dist/specifica/evidence-aggregator.js.map +1 -0
  388. package/dist/specifica/evidence-extractor.d.ts +13 -0
  389. package/dist/specifica/evidence-extractor.d.ts.map +1 -0
  390. package/dist/specifica/evidence-extractor.js +431 -0
  391. package/dist/specifica/evidence-extractor.js.map +1 -0
  392. package/dist/specifica/feature-clustering.d.ts +19 -0
  393. package/dist/specifica/feature-clustering.d.ts.map +1 -0
  394. package/dist/specifica/feature-clustering.js +231 -0
  395. package/dist/specifica/feature-clustering.js.map +1 -0
  396. package/dist/specifica/generator.d.ts +16 -0
  397. package/dist/specifica/generator.d.ts.map +1 -0
  398. package/dist/specifica/generator.js +277 -0
  399. package/dist/specifica/generator.js.map +1 -0
  400. package/dist/specifica/index.d.ts +15 -0
  401. package/dist/specifica/index.d.ts.map +1 -0
  402. package/dist/specifica/index.js +18 -0
  403. package/dist/specifica/index.js.map +1 -0
  404. package/dist/specifica/prompts.d.ts +21 -0
  405. package/dist/specifica/prompts.d.ts.map +1 -0
  406. package/dist/specifica/prompts.js +196 -0
  407. package/dist/specifica/prompts.js.map +1 -0
  408. package/dist/specifica/spec-generator.d.ts +22 -0
  409. package/dist/specifica/spec-generator.d.ts.map +1 -0
  410. package/dist/specifica/spec-generator.js +229 -0
  411. package/dist/specifica/spec-generator.js.map +1 -0
  412. package/dist/specifica/types.d.ts +213 -0
  413. package/dist/specifica/types.d.ts.map +1 -0
  414. package/dist/specifica/types.js +7 -0
  415. package/dist/specifica/types.js.map +1 -0
  416. package/dist/utils/logger.d.ts +17 -0
  417. package/dist/utils/logger.d.ts.map +1 -0
  418. package/dist/utils/logger.js +51 -0
  419. package/dist/utils/logger.js.map +1 -0
  420. package/package.json +99 -0
@@ -0,0 +1,299 @@
1
+ /**
2
+ * Security Agent
3
+ *
4
+ * Main orchestration agent that coordinates the hybrid analysis pipeline:
5
+ * 1. Pattern matching (Track 1)
6
+ * 2. LLM enrichment (Track 2)
7
+ * 3. Merge and verify
8
+ * 4. Generate report
9
+ */
10
+ import { runEnrichment, applyEnrichmentToContext, } from './enrichment-agent.js';
11
+ import { runVerification, generateVerificationTargets, applyVerificationToContext, } from './verification-agent.js';
12
+ // ============================================================================
13
+ // Default Options
14
+ // ============================================================================
15
+ const defaultOptions = {
16
+ enableEnrichment: true,
17
+ enableVerification: true,
18
+ confidenceThreshold: 0.7,
19
+ maxVerificationTargets: 50,
20
+ parallelEnrichment: false,
21
+ parallelVerification: true,
22
+ };
23
+ // ============================================================================
24
+ // Main Orchestration
25
+ // ============================================================================
26
+ /**
27
+ * Run the complete security analysis pipeline
28
+ */
29
+ export async function runSecurityAnalysis(input, patternSources, patternSinks, types, imports) {
30
+ const startTime = Date.now();
31
+ const options = { ...defaultOptions, ...input.options };
32
+ // Initialize context
33
+ let context = {
34
+ filePath: input.filePath,
35
+ sourceCode: input.sourceCode,
36
+ language: input.language || 'java',
37
+ types,
38
+ imports,
39
+ patternSources,
40
+ patternSinks,
41
+ analysisStartedAt: new Date().toISOString(),
42
+ };
43
+ let enrichmentTimeMs = 0;
44
+ let verificationTimeMs = 0;
45
+ // Phase 1: Enrichment (if enabled)
46
+ if (options.enableEnrichment) {
47
+ const enrichmentStart = Date.now();
48
+ const enrichmentOutput = await runEnrichment({
49
+ context,
50
+ options: {
51
+ discoverSources: true,
52
+ discoverSinks: true,
53
+ classifyRoles: true,
54
+ resolveVirtualCalls: true,
55
+ },
56
+ });
57
+ context = applyEnrichmentToContext(context, enrichmentOutput);
58
+ enrichmentTimeMs = Date.now() - enrichmentStart;
59
+ }
60
+ // Phase 2: Merge sources and sinks
61
+ const { sources, sinks } = mergeSources(context, options.confidenceThreshold);
62
+ // Phase 3: Generate verification targets
63
+ const targets = generateVerificationTargets(context, {
64
+ maxTargets: options.maxVerificationTargets,
65
+ prioritizeHighSeverity: true,
66
+ });
67
+ // Phase 4: Verification (if enabled)
68
+ if (options.enableVerification && targets.length > 0) {
69
+ const verificationStart = Date.now();
70
+ const verificationOutput = await runVerification({
71
+ context,
72
+ targets,
73
+ options: {
74
+ batchSize: 5,
75
+ parallelVerifications: options.parallelVerification ? 3 : 1,
76
+ },
77
+ });
78
+ context = applyVerificationToContext(context, verificationOutput);
79
+ verificationTimeMs = Date.now() - verificationStart;
80
+ }
81
+ // Phase 5: Generate vulnerabilities report
82
+ const vulnerabilities = generateVulnerabilities(context, sources, sinks);
83
+ // Finalize context
84
+ context.analysisCompletedAt = new Date().toISOString();
85
+ // Compute statistics
86
+ const stats = computeStats(context, sources, sinks, vulnerabilities, Date.now() - startTime, enrichmentTimeMs, verificationTimeMs);
87
+ return {
88
+ sources,
89
+ sinks,
90
+ vulnerabilities,
91
+ stats,
92
+ context,
93
+ };
94
+ }
95
+ // ============================================================================
96
+ // Source/Sink Merging
97
+ // ============================================================================
98
+ /**
99
+ * Merge pattern-matched and LLM-discovered sources/sinks
100
+ */
101
+ function mergeSources(context, confidenceThreshold) {
102
+ const sourcesByLine = new Map();
103
+ const sinksByLine = new Map();
104
+ // Add pattern sources (higher confidence when both pattern and LLM agree)
105
+ for (const source of context.patternSources) {
106
+ sourcesByLine.set(source.line, { ...source });
107
+ }
108
+ // Add LLM sources
109
+ if (context.enrichmentResult) {
110
+ for (const llmSource of context.enrichmentResult.additionalSources) {
111
+ const existing = sourcesByLine.get(llmSource.line);
112
+ if (existing) {
113
+ // Pattern + LLM agree → boost confidence
114
+ sourcesByLine.set(llmSource.line, {
115
+ ...existing,
116
+ confidence: Math.min(1.0, existing.confidence + 0.2),
117
+ });
118
+ }
119
+ else if (llmSource.confidence >= confidenceThreshold) {
120
+ // LLM only with sufficient confidence
121
+ sourcesByLine.set(llmSource.line, {
122
+ line: llmSource.line,
123
+ type: llmSource.type,
124
+ location: `LLM-discovered at line ${llmSource.line}`,
125
+ severity: 'medium',
126
+ confidence: llmSource.confidence,
127
+ variable: llmSource.variable,
128
+ method: llmSource.method,
129
+ });
130
+ }
131
+ }
132
+ }
133
+ // Add pattern sinks
134
+ for (const sink of context.patternSinks) {
135
+ sinksByLine.set(sink.line, { ...sink });
136
+ }
137
+ // Add LLM sinks
138
+ if (context.enrichmentResult) {
139
+ for (const llmSink of context.enrichmentResult.additionalSinks) {
140
+ const existing = sinksByLine.get(llmSink.line);
141
+ if (existing) {
142
+ // Pattern + LLM agree → boost confidence
143
+ sinksByLine.set(llmSink.line, {
144
+ ...existing,
145
+ confidence: Math.min(1.0, existing.confidence + 0.2),
146
+ });
147
+ }
148
+ else if (llmSink.confidence >= confidenceThreshold) {
149
+ // LLM only with sufficient confidence
150
+ sinksByLine.set(llmSink.line, {
151
+ line: llmSink.line,
152
+ type: llmSink.type,
153
+ cwe: llmSink.cwe,
154
+ location: `LLM-discovered at line ${llmSink.line}`,
155
+ confidence: llmSink.confidence,
156
+ method: llmSink.method,
157
+ argPositions: llmSink.argPositions,
158
+ });
159
+ }
160
+ }
161
+ }
162
+ return {
163
+ sources: Array.from(sourcesByLine.values()),
164
+ sinks: Array.from(sinksByLine.values()),
165
+ };
166
+ }
167
+ // ============================================================================
168
+ // Vulnerability Generation
169
+ // ============================================================================
170
+ /**
171
+ * Generate verified vulnerabilities from analysis results
172
+ */
173
+ function generateVulnerabilities(context, sources, sinks) {
174
+ const vulnerabilities = [];
175
+ if (!context.verificationResults) {
176
+ return vulnerabilities;
177
+ }
178
+ // Check each verified result
179
+ for (const [key, verification] of context.verificationResults) {
180
+ if (verification.verdict !== 'TRUE_POSITIVE') {
181
+ continue;
182
+ }
183
+ // Parse key to get source and sink info
184
+ const parts = key.split(':');
185
+ // Key format: "src:LINE:TYPE:sink:LINE:TYPE"
186
+ const sourceLine = parseInt(parts[1], 10);
187
+ const sinkLine = parseInt(parts[4], 10);
188
+ const source = sources.find(s => s.line === sourceLine);
189
+ const sink = sinks.find(s => s.line === sinkLine);
190
+ if (!source || !sink) {
191
+ continue;
192
+ }
193
+ vulnerabilities.push({
194
+ id: `vuln:${key}`,
195
+ source,
196
+ sink,
197
+ verification,
198
+ severity: mapExploitabilityToSeverity(verification.exploitability),
199
+ cwe: sink.cwe,
200
+ description: generateDescription(source, sink, verification),
201
+ });
202
+ }
203
+ // Sort by severity
204
+ vulnerabilities.sort((a, b) => severityScore(b.severity) - severityScore(a.severity));
205
+ return vulnerabilities;
206
+ }
207
+ /**
208
+ * Map exploitability to severity
209
+ */
210
+ function mapExploitabilityToSeverity(exploitability) {
211
+ switch (exploitability) {
212
+ case 'high':
213
+ return 'critical';
214
+ case 'medium':
215
+ return 'high';
216
+ case 'low':
217
+ return 'medium';
218
+ default:
219
+ return 'low';
220
+ }
221
+ }
222
+ /**
223
+ * Get numeric severity score
224
+ */
225
+ function severityScore(severity) {
226
+ switch (severity) {
227
+ case 'critical':
228
+ return 4;
229
+ case 'high':
230
+ return 3;
231
+ case 'medium':
232
+ return 2;
233
+ case 'low':
234
+ return 1;
235
+ default:
236
+ return 0;
237
+ }
238
+ }
239
+ /**
240
+ * Generate vulnerability description
241
+ */
242
+ function generateDescription(source, sink, verification) {
243
+ const sourceDesc = source.variable
244
+ ? `User input from ${source.type} (${source.variable})`
245
+ : `User input from ${source.type}`;
246
+ const sinkDesc = sink.method
247
+ ? `dangerous ${sink.type} operation (${sink.method})`
248
+ : `dangerous ${sink.type} operation`;
249
+ let desc = `${sourceDesc} at line ${source.line} flows to ${sinkDesc} at line ${sink.line}.`;
250
+ if (verification.attackVector) {
251
+ desc += ` Attack vector: ${verification.attackVector}.`;
252
+ }
253
+ if (verification.prerequisites && verification.prerequisites.length > 0) {
254
+ desc += ` Prerequisites: ${verification.prerequisites.join(', ')}.`;
255
+ }
256
+ return desc;
257
+ }
258
+ // ============================================================================
259
+ // Statistics
260
+ // ============================================================================
261
+ /**
262
+ * Compute analysis statistics
263
+ */
264
+ function computeStats(context, sources, sinks, vulnerabilities, totalTimeMs, enrichmentTimeMs, verificationTimeMs) {
265
+ const llmSourcesFound = context.enrichmentResult?.additionalSources.length || 0;
266
+ const llmSinksFound = context.enrichmentResult?.additionalSinks.length || 0;
267
+ let truePositives = 0;
268
+ let falsePositives = 0;
269
+ let uncertain = 0;
270
+ if (context.verificationResults) {
271
+ for (const result of context.verificationResults.values()) {
272
+ switch (result.verdict) {
273
+ case 'TRUE_POSITIVE':
274
+ truePositives++;
275
+ break;
276
+ case 'FALSE_POSITIVE':
277
+ falsePositives++;
278
+ break;
279
+ case 'UNCERTAIN':
280
+ uncertain++;
281
+ break;
282
+ }
283
+ }
284
+ }
285
+ return {
286
+ patternSourcesFound: context.patternSources.length,
287
+ patternSinksFound: context.patternSinks.length,
288
+ llmSourcesFound,
289
+ llmSinksFound,
290
+ targetsVerified: context.verificationResults?.size || 0,
291
+ truePositives,
292
+ falsePositives,
293
+ uncertain,
294
+ totalTimeMs,
295
+ enrichmentTimeMs,
296
+ verificationTimeMs,
297
+ };
298
+ }
299
+ //# sourceMappingURL=security-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-agent.js","sourceRoot":"","sources":["../../src/agents/security-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,373 @@
1
+ /**
2
+ * Agent Type Definitions
3
+ *
4
+ * Types for the Mastra-based agent orchestration system.
5
+ */
6
+ import type { EnrichmentResult, VerificationResult } from '../llm/index.js';
7
+ import type { TaintSource, TaintSink, TypeInfo } from 'circle-ir';
8
+ export type AgentStatus = 'idle' | 'running' | 'completed' | 'failed';
9
+ export interface AgentState {
10
+ status: AgentStatus;
11
+ startedAt?: string;
12
+ completedAt?: string;
13
+ error?: string;
14
+ }
15
+ export interface AnalysisContext {
16
+ filePath: string;
17
+ sourceCode: string;
18
+ language: string;
19
+ types: TypeInfo[];
20
+ imports: string[];
21
+ patternSources: TaintSource[];
22
+ patternSinks: TaintSink[];
23
+ enrichmentResult?: EnrichmentResult;
24
+ verificationResults?: Map<string, VerificationResult>;
25
+ analysisStartedAt: string;
26
+ analysisCompletedAt?: string;
27
+ }
28
+ export interface EnrichmentAgentInput {
29
+ context: AnalysisContext;
30
+ options?: {
31
+ discoverSources?: boolean;
32
+ discoverSinks?: boolean;
33
+ classifyRoles?: boolean;
34
+ resolveVirtualCalls?: boolean;
35
+ };
36
+ }
37
+ export interface EnrichmentAgentOutput {
38
+ enrichmentResult: EnrichmentResult;
39
+ additionalSourcesCount: number;
40
+ additionalSinksCount: number;
41
+ processingTimeMs: number;
42
+ }
43
+ export interface VerificationTarget {
44
+ sourceId: string;
45
+ sinkId: string;
46
+ source: {
47
+ line: number;
48
+ type: string;
49
+ variable?: string;
50
+ method?: string;
51
+ };
52
+ sink: {
53
+ line: number;
54
+ type: string;
55
+ method?: string;
56
+ cwe: string;
57
+ argPositions?: number[];
58
+ };
59
+ methodCode: string;
60
+ methodName: string;
61
+ className: string;
62
+ }
63
+ export interface VerificationAgentInput {
64
+ context: AnalysisContext;
65
+ targets: VerificationTarget[];
66
+ options?: {
67
+ batchSize?: number;
68
+ parallelVerifications?: number;
69
+ };
70
+ }
71
+ export interface VerificationAgentOutput {
72
+ results: Map<string, VerificationResult>;
73
+ truePositives: number;
74
+ falsePositives: number;
75
+ uncertain: number;
76
+ processingTimeMs: number;
77
+ }
78
+ export interface SecurityAgentInput {
79
+ filePath: string;
80
+ sourceCode: string;
81
+ language?: string;
82
+ options?: SecurityAgentOptions;
83
+ }
84
+ export interface SecurityAgentOptions {
85
+ enableEnrichment?: boolean;
86
+ enableVerification?: boolean;
87
+ confidenceThreshold?: number;
88
+ maxVerificationTargets?: number;
89
+ parallelEnrichment?: boolean;
90
+ parallelVerification?: boolean;
91
+ }
92
+ export interface SecurityAgentOutput {
93
+ sources: TaintSource[];
94
+ sinks: TaintSink[];
95
+ vulnerabilities: VerifiedVulnerability[];
96
+ stats: AnalysisStats;
97
+ context: AnalysisContext;
98
+ }
99
+ export interface VerifiedVulnerability {
100
+ id: string;
101
+ source: TaintSource;
102
+ sink: TaintSink;
103
+ verification: VerificationResult;
104
+ severity: 'critical' | 'high' | 'medium' | 'low';
105
+ cwe: string;
106
+ description: string;
107
+ }
108
+ export interface AnalysisStats {
109
+ patternSourcesFound: number;
110
+ patternSinksFound: number;
111
+ llmSourcesFound: number;
112
+ llmSinksFound: number;
113
+ targetsVerified: number;
114
+ truePositives: number;
115
+ falsePositives: number;
116
+ uncertain: number;
117
+ totalTimeMs: number;
118
+ enrichmentTimeMs: number;
119
+ verificationTimeMs: number;
120
+ }
121
+ export type WorkflowPhase = 'parse' | 'pattern-match' | 'enrich' | 'merge' | 'verify' | 'report';
122
+ export interface WorkflowStep {
123
+ phase: WorkflowPhase;
124
+ status: AgentStatus;
125
+ startedAt?: string;
126
+ completedAt?: string;
127
+ result?: unknown;
128
+ error?: string;
129
+ }
130
+ export interface WorkflowState {
131
+ currentPhase: WorkflowPhase;
132
+ steps: WorkflowStep[];
133
+ context: AnalysisContext;
134
+ }
135
+ export type ConfidenceLevel = 'high' | 'medium' | 'low';
136
+ export interface DecisionMatrix {
137
+ patternAndLLMAgree: ConfidenceLevel;
138
+ patternOnly: ConfidenceLevel;
139
+ llmOnlyHighConfidence: ConfidenceLevel;
140
+ llmOnlyMediumConfidence: ConfidenceLevel;
141
+ llmOnlyLowConfidence: ConfidenceLevel;
142
+ disagreement: 'verify';
143
+ }
144
+ export declare const defaultDecisionMatrix: DecisionMatrix;
145
+ /**
146
+ * Comment extracted from source code.
147
+ */
148
+ export interface CommentInfo {
149
+ type: 'line' | 'block' | 'javadoc';
150
+ text: string;
151
+ line: number;
152
+ endLine?: number;
153
+ /** Associated element (method, class, field) */
154
+ associatedWith?: string;
155
+ }
156
+ /**
157
+ * String literal extracted from source code.
158
+ */
159
+ export interface StringLiteralInfo {
160
+ value: string;
161
+ raw: string;
162
+ line: number;
163
+ column: number;
164
+ /** Context where string appears */
165
+ context: 'argument' | 'assignment' | 'return' | 'field' | 'annotation' | 'other';
166
+ /** Method containing this literal */
167
+ inMethod?: string;
168
+ /** Detected pattern type */
169
+ pattern?: 'sql' | 'url' | 'path' | 'regex' | 'html' | 'json' | 'error_message' | 'log_message';
170
+ }
171
+ /**
172
+ * API endpoint detected from annotations/patterns.
173
+ */
174
+ export interface EndpointInfo {
175
+ path: string;
176
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'OPTIONS' | 'HEAD' | 'ANY';
177
+ handlerMethod: string;
178
+ handlerClass: string;
179
+ line: number;
180
+ /** Request parameters */
181
+ params: Array<{
182
+ name: string;
183
+ type: string;
184
+ required: boolean;
185
+ }>;
186
+ /** Request body type */
187
+ bodyType?: string;
188
+ /** Response type */
189
+ responseType?: string;
190
+ }
191
+ /**
192
+ * Method call relationship for call graph.
193
+ */
194
+ export interface CallEdge {
195
+ caller: string;
196
+ callee: string;
197
+ line: number;
198
+ callType: 'direct' | 'virtual' | 'static' | 'constructor' | 'external';
199
+ }
200
+ /**
201
+ * Dependency information.
202
+ */
203
+ export interface DependencyInfo {
204
+ name: string;
205
+ version?: string;
206
+ type: 'import' | 'annotation' | 'extends' | 'implements';
207
+ usageCount: number;
208
+ lines: number[];
209
+ }
210
+ /**
211
+ * TODO/FIXME item extracted from comments.
212
+ */
213
+ export interface TodoItem {
214
+ type: 'TODO' | 'FIXME' | 'HACK' | 'XXX' | 'NOTE';
215
+ text: string;
216
+ line: number;
217
+ author?: string;
218
+ }
219
+ /**
220
+ * Enriched IR with additional extractions for multi-agent analysis.
221
+ */
222
+ export interface EnrichedIR {
223
+ /** Original circle-ir output */
224
+ base: import('circle-ir').CircleIR;
225
+ /** Source code */
226
+ sourceCode: string;
227
+ /** File path */
228
+ filePath: string;
229
+ /** All comments in the file */
230
+ comments: CommentInfo[];
231
+ /** All string literals */
232
+ strings: StringLiteralInfo[];
233
+ /** API endpoints (REST, etc.) */
234
+ endpoints: EndpointInfo[];
235
+ /** Method call graph */
236
+ callGraph: CallEdge[];
237
+ /** External dependencies */
238
+ dependencies: DependencyInfo[];
239
+ /** TODO/FIXME items */
240
+ todos: TodoItem[];
241
+ /** Extraction timing */
242
+ extractionTimeMs: number;
243
+ }
244
+ /**
245
+ * Agent categories for grouping.
246
+ */
247
+ export type AgentCategory = 'security' | 'requirements' | 'quality' | 'documentation' | 'architecture' | 'refactoring';
248
+ /**
249
+ * Result from a single agent analysis.
250
+ */
251
+ export interface MultiAgentResult<T = unknown> {
252
+ agentId: string;
253
+ agentName: string;
254
+ category: AgentCategory;
255
+ success: boolean;
256
+ findings: T[];
257
+ errors?: string[];
258
+ processingTimeMs: number;
259
+ }
260
+ /**
261
+ * Base interface for all pluggable agents.
262
+ */
263
+ export interface PluggableAgent<T = unknown> {
264
+ id: string;
265
+ name: string;
266
+ description: string;
267
+ category: AgentCategory;
268
+ /**
269
+ * Analyze the enriched IR and produce findings.
270
+ */
271
+ analyze(ir: EnrichedIR, options?: PluggableAgentOptions): Promise<MultiAgentResult<T>>;
272
+ }
273
+ /**
274
+ * Options passed to pluggable agents.
275
+ */
276
+ export interface PluggableAgentOptions {
277
+ /** Enable LLM-based analysis */
278
+ useLLM?: boolean;
279
+ /** Confidence threshold for findings */
280
+ confidenceThreshold?: number;
281
+ /** Maximum findings to return */
282
+ maxFindings?: number;
283
+ }
284
+ /**
285
+ * Bundle definition - a collection of agents to run together.
286
+ */
287
+ export interface BundleDefinition {
288
+ id: string;
289
+ name: string;
290
+ description: string;
291
+ /** Agent IDs or patterns (e.g., "security.*") */
292
+ agents: string[];
293
+ /** Run agents in parallel or sequential */
294
+ parallel?: boolean;
295
+ }
296
+ /**
297
+ * Predefined role-based bundles.
298
+ */
299
+ export type RoleBundle = 'jr-dev' | 'sr-dev' | 'architect' | 'security-review' | 'full-review';
300
+ /**
301
+ * Result from running a bundle.
302
+ */
303
+ export interface BundleResult {
304
+ bundleId: string;
305
+ bundleName: string;
306
+ filePath: string;
307
+ results: MultiAgentResult[];
308
+ totalTimeMs: number;
309
+ summary: {
310
+ totalFindings: number;
311
+ byCategory: Record<AgentCategory, number>;
312
+ byAgent: Record<string, number>;
313
+ };
314
+ }
315
+ /**
316
+ * Base finding structure - all agents produce findings with this shape.
317
+ */
318
+ export interface BaseFinding {
319
+ id: string;
320
+ type: string;
321
+ message: string;
322
+ severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
323
+ confidence: number;
324
+ location: {
325
+ file: string;
326
+ line: number;
327
+ endLine?: number;
328
+ column?: number;
329
+ };
330
+ /** Additional metadata specific to finding type */
331
+ metadata?: Record<string, unknown>;
332
+ }
333
+ /**
334
+ * Security vulnerability finding.
335
+ */
336
+ export interface SecurityFinding extends BaseFinding {
337
+ cwe?: string;
338
+ owasp?: string;
339
+ source?: {
340
+ line: number;
341
+ type: string;
342
+ };
343
+ sink?: {
344
+ line: number;
345
+ type: string;
346
+ };
347
+ remediation?: string;
348
+ }
349
+ /**
350
+ * Code quality finding (typos, style, etc.).
351
+ */
352
+ export interface QualityFinding extends BaseFinding {
353
+ category: 'typo' | 'style' | 'naming' | 'complexity' | 'duplication';
354
+ suggestion?: string;
355
+ autoFixable?: boolean;
356
+ }
357
+ /**
358
+ * Documentation finding.
359
+ */
360
+ export interface DocsFinding extends BaseFinding {
361
+ category: 'missing' | 'outdated' | 'incomplete' | 'incorrect';
362
+ element: string;
363
+ suggestedDoc?: string;
364
+ }
365
+ /**
366
+ * Requirement/feature finding.
367
+ */
368
+ export interface RequirementFinding extends BaseFinding {
369
+ category: 'feature' | 'business-rule' | 'constraint' | 'integration';
370
+ relatedMethods: string[];
371
+ extractedRequirement: string;
372
+ }
373
+ //# sourceMappingURL=types.d.ts.map