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,312 @@
1
+ /**
2
+ * LLM Enrichment Engine (Phase 1)
3
+ *
4
+ * Uses LLM to discover:
5
+ * - Taint sources beyond YAML patterns
6
+ * - Taint sinks beyond YAML patterns
7
+ * - Class/method roles (controller, service, repository)
8
+ * - Virtual call resolution
9
+ *
10
+ * Supports language-aware prompts for Java, Python, JavaScript/TypeScript, and Rust.
11
+ */
12
+ import { getAxLLMClient } from './ax-client.js';
13
+ import { getLanguageContext, generateSourceDiscoveryPrompt, generateSinkDiscoveryPrompt, generateRoleClassificationPrompt, } from './language-context.js';
14
+ // ============================================================================
15
+ // Prompt Templates
16
+ // ============================================================================
17
+ const ROLE_CLASSIFICATION_PROMPT = `You are a security expert analyzing Java code.
18
+ Classify the role of this class based on its name, methods, and annotations.
19
+
20
+ Class: {className}
21
+ Methods: {methodNames}
22
+ Annotations: {annotations}
23
+ Imports: {imports}
24
+
25
+ Respond in JSON format:
26
+ {
27
+ "role": "controller" | "service" | "repository" | "utility" | "entity" | "unknown",
28
+ "confidence": 0.0-1.0,
29
+ "reasoning": "explanation",
30
+ "indicators": ["list", "of", "indicators"]
31
+ }`;
32
+ // Note: This prompt is a fallback. The engine uses generateSourceDiscoveryPrompt() from language-context.ts
33
+ const SOURCE_DISCOVERY_PROMPT = `You are a security expert analyzing code for taint sources.
34
+ Find user-controlled input sources NOT already identified.
35
+
36
+ Method code:
37
+ \`\`\`
38
+ {methodCode}
39
+ \`\`\`
40
+
41
+ Method: {methodName}
42
+ Class role: {classRole}
43
+ Already identified sources: {existingSources}
44
+
45
+ ## SEMANTIC CATEGORIES OF SOURCES (reason about data origin, not method names):
46
+
47
+ **1. Network Input** - Data from HTTP/network requests
48
+ **2. File/Stream Input** - Data read from external sources
49
+ **3. Database Input** - Query results that may contain user data
50
+ **4. Environment Input** - Config that could be attacker-controlled
51
+ **5. Inter-Process Input** - Data from other processes/services
52
+
53
+ KEY QUESTION: Does this data originate from OUTSIDE the application's trust boundary?
54
+
55
+ ## WHAT TO IGNORE:
56
+ - Constants, literals, hardcoded strings
57
+ - Internal configuration values
58
+ - Data constructed entirely within the application
59
+
60
+ Respond in JSON format:
61
+ {
62
+ "additionalSources": [
63
+ {
64
+ "line": number,
65
+ "variable": "variable name",
66
+ "type": "http_param | http_body | http_header | http_cookie | http_path | io_input | env_input | db_input",
67
+ "confidence": 0.0-1.0,
68
+ "reasoning": "explanation"
69
+ }
70
+ ]
71
+ }`;
72
+ // Note: This prompt is a fallback. The engine uses generateSinkDiscoveryPrompt() from language-context.ts
73
+ const SINK_DISCOVERY_PROMPT = `You are a security expert analyzing code for security sinks.
74
+ Find dangerous operations NOT already identified.
75
+
76
+ Method code:
77
+ \`\`\`
78
+ {methodCode}
79
+ \`\`\`
80
+
81
+ Method: {methodName}
82
+ Method calls: {methodCalls}
83
+ Already identified sinks: {existingSinks}
84
+
85
+ ## SEMANTIC CATEGORIES OF SINKS (reason about EFFECT, not method names):
86
+
87
+ **1. Data Query Execution** (CWE-89, CWE-943) - Operations that execute queries
88
+ **2. System Command Execution** (CWE-78) - Operations that run system commands
89
+ **3. Output Rendering** (CWE-79) - Operations that render content to users
90
+ **4. File System Operations** (CWE-22) - Operations that access file paths
91
+ **5. Code Evaluation** (CWE-94) - Operations that interpret data as code
92
+ **6. Deserialization** (CWE-502) - Operations that reconstruct objects from data
93
+ **7. Directory/Query Injection** (CWE-90, CWE-643) - LDAP/XPath queries
94
+ **8. Network Requests** (CWE-918) - Operations with user-controlled URLs
95
+
96
+ KEY REASONING:
97
+ 1. What EFFECT does this operation have?
98
+ 2. Can EXTERNAL DATA influence that effect?
99
+ 3. Is there SANITIZATION that makes it safe?
100
+
101
+ ## WHAT TO IGNORE:
102
+ - Logging operations
103
+ - Parameterized/bound operations (data separate from structure)
104
+ - Internal method calls with no dangerous effects
105
+
106
+ Respond in JSON format:
107
+ {
108
+ "additionalSinks": [
109
+ {
110
+ "line": number,
111
+ "method": "operation description",
112
+ "type": "sql_injection | command_injection | xss | path_traversal | code_injection | deserialization | ldap_injection | xpath_injection | ssrf",
113
+ "cwe": "CWE-XX",
114
+ "argPositions": [0],
115
+ "confidence": 0.0-1.0,
116
+ "reasoning": "explanation"
117
+ }
118
+ ]
119
+ }`;
120
+ // ============================================================================
121
+ // Enrichment Engine
122
+ // ============================================================================
123
+ export class EnrichmentEngine {
124
+ client;
125
+ config;
126
+ language;
127
+ constructor(client, language = 'java') {
128
+ this.client = client || getAxLLMClient();
129
+ this.config = this.client.getEnrichmentConfig();
130
+ this.language = language;
131
+ }
132
+ /**
133
+ * Set the language for enrichment (affects prompts)
134
+ */
135
+ setLanguage(language) {
136
+ this.language = language;
137
+ }
138
+ /**
139
+ * Get the current language context
140
+ */
141
+ getLanguageContext() {
142
+ return getLanguageContext(this.language);
143
+ }
144
+ /**
145
+ * Classify the role of a class
146
+ */
147
+ async classifyRole(className, methods, annotations, imports) {
148
+ if (!this.config.enableRoleClassification) {
149
+ return undefined;
150
+ }
151
+ try {
152
+ // Use language-aware prompt
153
+ const prompt = generateRoleClassificationPrompt(this.language);
154
+ const result = await this.client.classifyRoleWithPrompt(prompt, {
155
+ className,
156
+ methodNames: methods.map(m => m.name).join(', '),
157
+ annotations: annotations.join(', ') || 'none',
158
+ imports: imports.slice(0, 20).join(', '),
159
+ });
160
+ if (result && result.confidence >= this.config.confidenceThreshold) {
161
+ return result;
162
+ }
163
+ }
164
+ catch (error) {
165
+ console.error('Role classification failed:', error);
166
+ }
167
+ return undefined;
168
+ }
169
+ /**
170
+ * Discover additional taint sources in a method
171
+ */
172
+ async discoverSources(methodCode, methodName, classRole, existingSources) {
173
+ try {
174
+ // Use language-aware prompt
175
+ const prompt = generateSourceDiscoveryPrompt(this.language);
176
+ const result = await this.client.discoverSourcesWithPrompt(prompt, {
177
+ methodCode,
178
+ methodName,
179
+ classRole,
180
+ existingSources: existingSources.map(s => `${s.type}:${s.line}`).join(', ') || 'none',
181
+ });
182
+ if (result) {
183
+ return result.filter((s) => s.confidence >= this.config.confidenceThreshold);
184
+ }
185
+ }
186
+ catch (error) {
187
+ console.error('Source discovery failed:', error);
188
+ }
189
+ return [];
190
+ }
191
+ /**
192
+ * Discover additional taint sinks in a method
193
+ */
194
+ async discoverSinks(methodCode, methodName, methodCalls, existingSinks) {
195
+ try {
196
+ // Use language-aware prompt
197
+ const prompt = generateSinkDiscoveryPrompt(this.language);
198
+ const result = await this.client.discoverSinksWithPrompt(prompt, {
199
+ methodCode,
200
+ methodName,
201
+ methodCalls: methodCalls.map(c => `${c.receiver || ''}.${c.method_name}()`).join(', '),
202
+ existingSinks: existingSinks.map(s => `${s.type}:${s.line}`).join(', ') || 'none',
203
+ });
204
+ if (result) {
205
+ return result.filter((s) => s.confidence >= this.config.confidenceThreshold);
206
+ }
207
+ }
208
+ catch (error) {
209
+ console.error('Sink discovery failed:', error);
210
+ }
211
+ return [];
212
+ }
213
+ /**
214
+ * Resolve virtual/interface method calls to implementations
215
+ */
216
+ async resolveVirtualCall(callExpression, interfaceType, availableImplementations, context) {
217
+ if (!this.config.enableVirtualDispatch) {
218
+ return undefined;
219
+ }
220
+ try {
221
+ const result = await this.client.resolveVirtualCall({
222
+ callExpression,
223
+ interfaceType,
224
+ availableImplementations: availableImplementations.join(', '),
225
+ context,
226
+ });
227
+ if (result && result.confidence >= this.config.confidenceThreshold) {
228
+ return {
229
+ callLine: 0,
230
+ interfaceType,
231
+ resolvedImplementation: result.resolvedImplementation,
232
+ confidence: result.confidence,
233
+ reasoning: result.reasoning,
234
+ };
235
+ }
236
+ }
237
+ catch (error) {
238
+ console.error('Virtual call resolution failed:', error);
239
+ }
240
+ return undefined;
241
+ }
242
+ /**
243
+ * Enrich a complete type (class/interface)
244
+ */
245
+ async enrichType(type, sourceCode, imports, existingSources, existingSinks) {
246
+ const result = {
247
+ additionalSources: [],
248
+ additionalSinks: [],
249
+ virtualCallResolutions: [],
250
+ enrichedAt: new Date().toISOString(),
251
+ modelUsed: this.client.getPhaseConfig('enrichment').model,
252
+ };
253
+ // Classify role
254
+ result.role = await this.classifyRole(type.name, type.methods, type.annotations, imports);
255
+ // Process methods in batches
256
+ const methodBatches = this.batchMethods(type.methods);
257
+ for (const batch of methodBatches) {
258
+ for (const method of batch) {
259
+ // Extract method code from source
260
+ const methodCode = this.extractMethodCode(sourceCode, method);
261
+ if (!methodCode)
262
+ continue;
263
+ // Discover sources and sinks in parallel for each method
264
+ const [sources, sinks] = await Promise.all([
265
+ this.discoverSources(methodCode, method.name, result.role?.role || 'unknown', existingSources),
266
+ this.discoverSinks(methodCode, method.name, [], // No call info available at this level
267
+ existingSinks),
268
+ ]);
269
+ result.additionalSources.push(...sources);
270
+ result.additionalSinks.push(...sinks);
271
+ }
272
+ }
273
+ return result;
274
+ }
275
+ /**
276
+ * Batch methods for efficient LLM calls
277
+ */
278
+ batchMethods(methods) {
279
+ const batches = [];
280
+ for (let i = 0; i < methods.length; i += this.config.maxMethodsPerRequest) {
281
+ batches.push(methods.slice(i, i + this.config.maxMethodsPerRequest));
282
+ }
283
+ return batches;
284
+ }
285
+ /**
286
+ * Extract method code from source
287
+ */
288
+ extractMethodCode(sourceCode, method) {
289
+ const lines = sourceCode.split('\n');
290
+ if (method.start_line <= 0 || method.end_line > lines.length) {
291
+ return undefined;
292
+ }
293
+ return lines.slice(method.start_line - 1, method.end_line).join('\n');
294
+ }
295
+ }
296
+ // ============================================================================
297
+ // Convenience Functions
298
+ // ============================================================================
299
+ /**
300
+ * Get a new enrichment engine instance for a specific language
301
+ * Always creates a fresh instance for per-request isolation
302
+ */
303
+ export function getEnrichmentEngine(language = 'java', client) {
304
+ return new EnrichmentEngine(client, language);
305
+ }
306
+ /**
307
+ * Enrich a type with LLM-discovered sources/sinks
308
+ */
309
+ export async function enrichType(type, sourceCode, imports, existingSources, existingSinks, language = 'java') {
310
+ return getEnrichmentEngine(language).enrichType(type, sourceCode, imports, existingSources, existingSinks);
311
+ }
312
+ //# sourceMappingURL=enrichment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrichment.js","sourceRoot":"","sources":["../../src/llm/enrichment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * LLM Integration Module
3
+ *
4
+ * Provides LLM-based enrichment and verification capabilities.
5
+ */
6
+ export { defaultLLMConfig, createLLMConfig, validateLLMConfig, type LLMConfig, type PhaseConfig } from './config.js';
7
+ export { AxLLMClient, getAxLLMClient, enrichmentSignature, verificationSignature, listIndexSignature, correlatedPredicateSignature, crossFileTaintSignature, roleClassificationSignature, sourceDiscoverySignature, sinkDiscoverySignature, virtualCallResolutionSignature, patternVerificationSignature, } from './ax-client.js';
8
+ export { EnrichmentEngine, getEnrichmentEngine, enrichType, type EnrichmentResult, type RoleClassificationResult, type DiscoveredSource, type DiscoveredSink, type VirtualCallResolution, } from './enrichment.js';
9
+ export { VerificationEngine, getVerificationEngine, verifyTaintPath, verifyTaintPathsBatch, verifyVulnerability, type VerificationResult, type VerificationInput, type VerificationVerdict, type Exploitability, type BatchVerificationInput, type BatchVerificationResult, } from './verification.js';
10
+ export { DiscoveryEngine, getDiscoveryEngine, discoverVulnerabilities, discoveryResultsToFindings, type DiscoveryResult, type DiscoveredVulnerability, type DiscoveryOptions, } from './discovery.js';
11
+ export { getLanguageContext, generateSourceDiscoveryPrompt, generateSinkDiscoveryPrompt, generateRoleClassificationPrompt, getCWEGuidance, type LanguageContext, type SourcePattern, type SinkPattern, } from './language-context.js';
12
+ export { sanitizeCodeForPrompt, sanitizeListForPrompt, sanitizeObjectForPrompt, wrapUserCode, formatSystemPrompt, formatCodeBlock, getModelPromptConfig, detectModelFamily, isInputSafe, logInjectionAttempt, type ModelFamily, type ModelPromptConfig, } from './prompt-security.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAGrH,OAAO,EACL,WAAW,EACX,cAAc,EAEd,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,qBAAqB,GAC3B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,2BAA2B,EAC3B,gCAAgC,EAChC,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * LLM Integration Module
3
+ *
4
+ * Provides LLM-based enrichment and verification capabilities.
5
+ */
6
+ // Configuration
7
+ export { defaultLLMConfig, createLLMConfig, validateLLMConfig } from './config.js';
8
+ // New Ax-LLM client (DSPy-style with typed signatures)
9
+ export { AxLLMClient, getAxLLMClient,
10
+ // Signatures
11
+ enrichmentSignature, verificationSignature, listIndexSignature, correlatedPredicateSignature, crossFileTaintSignature, roleClassificationSignature, sourceDiscoverySignature, sinkDiscoverySignature, virtualCallResolutionSignature, patternVerificationSignature, } from './ax-client.js';
12
+ // Enrichment (Phase 1)
13
+ export { EnrichmentEngine, getEnrichmentEngine, enrichType, } from './enrichment.js';
14
+ // Verification (Phase 2)
15
+ export { VerificationEngine, getVerificationEngine, verifyTaintPath, verifyTaintPathsBatch, verifyVulnerability, } from './verification.js';
16
+ // Discovery Mode (for methods with no static findings)
17
+ export { DiscoveryEngine, getDiscoveryEngine, discoverVulnerabilities, discoveryResultsToFindings, } from './discovery.js';
18
+ // Language-Aware Prompts (for multi-language support)
19
+ export { getLanguageContext, generateSourceDiscoveryPrompt, generateSinkDiscoveryPrompt, generateRoleClassificationPrompt, getCWEGuidance, } from './language-context.js';
20
+ // Prompt Security (for robustness against prompt injection)
21
+ export { sanitizeCodeForPrompt, sanitizeListForPrompt, sanitizeObjectForPrompt, wrapUserCode, formatSystemPrompt, formatCodeBlock, getModelPromptConfig, detectModelFamily, isInputSafe, logInjectionAttempt, } from './prompt-security.js';
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAoC,MAAM,aAAa,CAAC;AAErH,uDAAuD;AACvD,OAAO,EACL,WAAW,EACX,cAAc;AACd,aAAa;AACb,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AAExB,uBAAuB;AACvB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,GAMX,MAAM,iBAAiB,CAAC;AAEzB,yBAAyB;AACzB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,GAOpB,MAAM,mBAAmB,CAAC;AAE3B,uDAAuD;AACvD,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,GAI3B,MAAM,gBAAgB,CAAC;AAExB,sDAAsD;AACtD,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,2BAA2B,EAC3B,gCAAgC,EAChC,cAAc,GAIf,MAAM,uBAAuB,CAAC;AAE/B,4DAA4D;AAC5D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,mBAAmB,GAGpB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Language-Specific Context for LLM Prompts
3
+ *
4
+ * Provides language-aware examples, patterns, and guidance for
5
+ * enrichment and verification across Java, Python, JavaScript/TypeScript, and Rust.
6
+ */
7
+ import type { SupportedLanguage } from 'circle-ir';
8
+ export interface LanguageContext {
9
+ /** Display name for prompts */
10
+ name: string;
11
+ /** Code fence language identifier */
12
+ codeFence: string;
13
+ /** Common web frameworks */
14
+ frameworks: string[];
15
+ /** HTTP source patterns */
16
+ httpSources: SourcePattern[];
17
+ /** Common sanitizers by CWE */
18
+ sanitizers: Record<string, string[]>;
19
+ /** Sink patterns by CWE */
20
+ sinkPatterns: Record<string, SinkPattern[]>;
21
+ /** Example source discovery code */
22
+ sourceExamples: string;
23
+ /** Example sink discovery code */
24
+ sinkExamples: string;
25
+ }
26
+ export interface SourcePattern {
27
+ pattern: string;
28
+ type: string;
29
+ description: string;
30
+ }
31
+ export interface SinkPattern {
32
+ pattern: string;
33
+ safe: string;
34
+ description: string;
35
+ }
36
+ /**
37
+ * Get the language context for a supported language
38
+ */
39
+ export declare function getLanguageContext(language: SupportedLanguage): LanguageContext;
40
+ /**
41
+ * Generate source discovery prompt for a specific language
42
+ *
43
+ * Uses semantic-guided prompts that focus on security concepts rather than
44
+ * specific API patterns. This allows the LLM to reason about data flow
45
+ * semantics and discover sources in unfamiliar frameworks or custom code.
46
+ */
47
+ export declare function generateSourceDiscoveryPrompt(language: SupportedLanguage): string;
48
+ /**
49
+ * Generate sink discovery prompt for a specific language
50
+ *
51
+ * Uses semantic-guided prompts that focus on what operations DO
52
+ * rather than specific API names. This allows the LLM to discover
53
+ * dangerous operations in unfamiliar frameworks or custom code.
54
+ */
55
+ export declare function generateSinkDiscoveryPrompt(language: SupportedLanguage): string;
56
+ /**
57
+ * Generate role classification prompt for a specific language
58
+ */
59
+ export declare function generateRoleClassificationPrompt(language: SupportedLanguage): string;
60
+ /**
61
+ * Get CWE-specific verification guidance for a language
62
+ */
63
+ export declare function getCWEGuidance(language: SupportedLanguage, cwe: string): string;
64
+ //# sourceMappingURL=language-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-context.d.ts","sourceRoot":"","sources":["../../src/llm/language-context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAMnD,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,2BAA2B;IAC3B,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5C,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AA8QD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,CAE/E;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAiEjF;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CA4F/E;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CA6BpF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAkB/E"}