@opencodereview/core 1.9.1

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 (453) hide show
  1. package/dist/ai/anthropic-provider.d.ts +41 -0
  2. package/dist/ai/anthropic-provider.d.ts.map +1 -0
  3. package/dist/ai/anthropic-provider.js +139 -0
  4. package/dist/ai/anthropic-provider.js.map +1 -0
  5. package/dist/ai/index.d.ts +39 -0
  6. package/dist/ai/index.d.ts.map +1 -0
  7. package/dist/ai/index.js +41 -0
  8. package/dist/ai/index.js.map +1 -0
  9. package/dist/ai/ollama-provider.d.ts +46 -0
  10. package/dist/ai/ollama-provider.d.ts.map +1 -0
  11. package/dist/ai/ollama-provider.js +149 -0
  12. package/dist/ai/ollama-provider.js.map +1 -0
  13. package/dist/ai/openai-provider.d.ts +44 -0
  14. package/dist/ai/openai-provider.d.ts.map +1 -0
  15. package/dist/ai/openai-provider.js +137 -0
  16. package/dist/ai/openai-provider.js.map +1 -0
  17. package/dist/ai/orchestrator.d.ts +60 -0
  18. package/dist/ai/orchestrator.d.ts.map +1 -0
  19. package/dist/ai/orchestrator.js +188 -0
  20. package/dist/ai/orchestrator.js.map +1 -0
  21. package/dist/ai/prompts.d.ts +27 -0
  22. package/dist/ai/prompts.d.ts.map +1 -0
  23. package/dist/ai/prompts.js +112 -0
  24. package/dist/ai/prompts.js.map +1 -0
  25. package/dist/ai/types.d.ts +75 -0
  26. package/dist/ai/types.d.ts.map +1 -0
  27. package/dist/ai/types.js +10 -0
  28. package/dist/ai/types.js.map +1 -0
  29. package/dist/ai/v4/embedding/index.d.ts +10 -0
  30. package/dist/ai/v4/embedding/index.d.ts.map +1 -0
  31. package/dist/ai/v4/embedding/index.js +10 -0
  32. package/dist/ai/v4/embedding/index.js.map +1 -0
  33. package/dist/ai/v4/embedding/local.d.ts +68 -0
  34. package/dist/ai/v4/embedding/local.d.ts.map +1 -0
  35. package/dist/ai/v4/embedding/local.js +167 -0
  36. package/dist/ai/v4/embedding/local.js.map +1 -0
  37. package/dist/ai/v4/embedding/ollama.d.ts +58 -0
  38. package/dist/ai/v4/embedding/ollama.d.ts.map +1 -0
  39. package/dist/ai/v4/embedding/ollama.js +101 -0
  40. package/dist/ai/v4/embedding/ollama.js.map +1 -0
  41. package/dist/ai/v4/embedding/openai.d.ts +36 -0
  42. package/dist/ai/v4/embedding/openai.d.ts.map +1 -0
  43. package/dist/ai/v4/embedding/openai.js +76 -0
  44. package/dist/ai/v4/embedding/openai.js.map +1 -0
  45. package/dist/ai/v4/embedding/similarity.d.ts +36 -0
  46. package/dist/ai/v4/embedding/similarity.d.ts.map +1 -0
  47. package/dist/ai/v4/embedding/similarity.js +60 -0
  48. package/dist/ai/v4/embedding/similarity.js.map +1 -0
  49. package/dist/ai/v4/index.d.ts +51 -0
  50. package/dist/ai/v4/index.d.ts.map +1 -0
  51. package/dist/ai/v4/index.js +54 -0
  52. package/dist/ai/v4/index.js.map +1 -0
  53. package/dist/ai/v4/llm/anthropic.d.ts +38 -0
  54. package/dist/ai/v4/llm/anthropic.d.ts.map +1 -0
  55. package/dist/ai/v4/llm/anthropic.js +86 -0
  56. package/dist/ai/v4/llm/anthropic.js.map +1 -0
  57. package/dist/ai/v4/llm/index.d.ts +9 -0
  58. package/dist/ai/v4/llm/index.d.ts.map +1 -0
  59. package/dist/ai/v4/llm/index.js +9 -0
  60. package/dist/ai/v4/llm/index.js.map +1 -0
  61. package/dist/ai/v4/llm/ollama.d.ts +39 -0
  62. package/dist/ai/v4/llm/ollama.d.ts.map +1 -0
  63. package/dist/ai/v4/llm/ollama.js +95 -0
  64. package/dist/ai/v4/llm/ollama.js.map +1 -0
  65. package/dist/ai/v4/llm/openai.d.ts +38 -0
  66. package/dist/ai/v4/llm/openai.d.ts.map +1 -0
  67. package/dist/ai/v4/llm/openai.js +88 -0
  68. package/dist/ai/v4/llm/openai.js.map +1 -0
  69. package/dist/ai/v4/patterns/defect-patterns.d.ts +57 -0
  70. package/dist/ai/v4/patterns/defect-patterns.d.ts.map +1 -0
  71. package/dist/ai/v4/patterns/defect-patterns.js +331 -0
  72. package/dist/ai/v4/patterns/defect-patterns.js.map +1 -0
  73. package/dist/ai/v4/patterns/index.d.ts +8 -0
  74. package/dist/ai/v4/patterns/index.d.ts.map +1 -0
  75. package/dist/ai/v4/patterns/index.js +7 -0
  76. package/dist/ai/v4/patterns/index.js.map +1 -0
  77. package/dist/ai/v4/pipeline.d.ts +74 -0
  78. package/dist/ai/v4/pipeline.d.ts.map +1 -0
  79. package/dist/ai/v4/pipeline.js +381 -0
  80. package/dist/ai/v4/pipeline.js.map +1 -0
  81. package/dist/ai/v4/sla.d.ts +62 -0
  82. package/dist/ai/v4/sla.d.ts.map +1 -0
  83. package/dist/ai/v4/sla.js +136 -0
  84. package/dist/ai/v4/sla.js.map +1 -0
  85. package/dist/ai/v4/types.d.ts +117 -0
  86. package/dist/ai/v4/types.d.ts.map +1 -0
  87. package/dist/ai/v4/types.js +16 -0
  88. package/dist/ai/v4/types.js.map +1 -0
  89. package/dist/ai-healer/prompt-builder.d.ts +33 -0
  90. package/dist/ai-healer/prompt-builder.d.ts.map +1 -0
  91. package/dist/ai-healer/prompt-builder.js +89 -0
  92. package/dist/ai-healer/prompt-builder.js.map +1 -0
  93. package/dist/config/defaults.d.ts +14 -0
  94. package/dist/config/defaults.d.ts.map +1 -0
  95. package/dist/config/defaults.js +57 -0
  96. package/dist/config/defaults.js.map +1 -0
  97. package/dist/config/index.d.ts +8 -0
  98. package/dist/config/index.d.ts.map +1 -0
  99. package/dist/config/index.js +6 -0
  100. package/dist/config/index.js.map +1 -0
  101. package/dist/config/loader.d.ts +33 -0
  102. package/dist/config/loader.d.ts.map +1 -0
  103. package/dist/config/loader.js +245 -0
  104. package/dist/config/loader.js.map +1 -0
  105. package/dist/config/types.d.ts +58 -0
  106. package/dist/config/types.d.ts.map +1 -0
  107. package/dist/config/types.js +7 -0
  108. package/dist/config/types.js.map +1 -0
  109. package/dist/config/v4-config.d.ts +77 -0
  110. package/dist/config/v4-config.d.ts.map +1 -0
  111. package/dist/config/v4-config.js +336 -0
  112. package/dist/config/v4-config.js.map +1 -0
  113. package/dist/detectors/ai-detector.d.ts +38 -0
  114. package/dist/detectors/ai-detector.d.ts.map +1 -0
  115. package/dist/detectors/ai-detector.js +62 -0
  116. package/dist/detectors/ai-detector.js.map +1 -0
  117. package/dist/detectors/context-break.d.ts +57 -0
  118. package/dist/detectors/context-break.d.ts.map +1 -0
  119. package/dist/detectors/context-break.js +199 -0
  120. package/dist/detectors/context-break.js.map +1 -0
  121. package/dist/detectors/deep-hallucination.d.ts +42 -0
  122. package/dist/detectors/deep-hallucination.d.ts.map +1 -0
  123. package/dist/detectors/deep-hallucination.js +297 -0
  124. package/dist/detectors/deep-hallucination.js.map +1 -0
  125. package/dist/detectors/duplication.d.ts +61 -0
  126. package/dist/detectors/duplication.d.ts.map +1 -0
  127. package/dist/detectors/duplication.js +204 -0
  128. package/dist/detectors/duplication.js.map +1 -0
  129. package/dist/detectors/hallucination.d.ts +80 -0
  130. package/dist/detectors/hallucination.d.ts.map +1 -0
  131. package/dist/detectors/hallucination.js +350 -0
  132. package/dist/detectors/hallucination.js.map +1 -0
  133. package/dist/detectors/index.d.ts +35 -0
  134. package/dist/detectors/index.d.ts.map +1 -0
  135. package/dist/detectors/index.js +33 -0
  136. package/dist/detectors/index.js.map +1 -0
  137. package/dist/detectors/logic-gap.d.ts +58 -0
  138. package/dist/detectors/logic-gap.d.ts.map +1 -0
  139. package/dist/detectors/logic-gap.js +284 -0
  140. package/dist/detectors/logic-gap.js.map +1 -0
  141. package/dist/detectors/over-engineering.d.ts +44 -0
  142. package/dist/detectors/over-engineering.d.ts.map +1 -0
  143. package/dist/detectors/over-engineering.js +257 -0
  144. package/dist/detectors/over-engineering.js.map +1 -0
  145. package/dist/detectors/security-pattern.d.ts +43 -0
  146. package/dist/detectors/security-pattern.d.ts.map +1 -0
  147. package/dist/detectors/security-pattern.js +235 -0
  148. package/dist/detectors/security-pattern.js.map +1 -0
  149. package/dist/detectors/stale-api.d.ts +44 -0
  150. package/dist/detectors/stale-api.d.ts.map +1 -0
  151. package/dist/detectors/stale-api.js +160 -0
  152. package/dist/detectors/stale-api.js.map +1 -0
  153. package/dist/detectors/type-safety.d.ts +41 -0
  154. package/dist/detectors/type-safety.d.ts.map +1 -0
  155. package/dist/detectors/type-safety.js +306 -0
  156. package/dist/detectors/type-safety.js.map +1 -0
  157. package/dist/detectors/v4/context-coherence.d.ts +67 -0
  158. package/dist/detectors/v4/context-coherence.d.ts.map +1 -0
  159. package/dist/detectors/v4/context-coherence.js +319 -0
  160. package/dist/detectors/v4/context-coherence.js.map +1 -0
  161. package/dist/detectors/v4/hallucinated-import.d.ts +52 -0
  162. package/dist/detectors/v4/hallucinated-import.d.ts.map +1 -0
  163. package/dist/detectors/v4/hallucinated-import.js +206 -0
  164. package/dist/detectors/v4/hallucinated-import.js.map +1 -0
  165. package/dist/detectors/v4/index.d.ts +28 -0
  166. package/dist/detectors/v4/index.d.ts.map +1 -0
  167. package/dist/detectors/v4/index.js +40 -0
  168. package/dist/detectors/v4/index.js.map +1 -0
  169. package/dist/detectors/v4/over-engineering.d.ts +69 -0
  170. package/dist/detectors/v4/over-engineering.d.ts.map +1 -0
  171. package/dist/detectors/v4/over-engineering.js +234 -0
  172. package/dist/detectors/v4/over-engineering.js.map +1 -0
  173. package/dist/detectors/v4/security-pattern.d.ts +46 -0
  174. package/dist/detectors/v4/security-pattern.d.ts.map +1 -0
  175. package/dist/detectors/v4/security-pattern.js +233 -0
  176. package/dist/detectors/v4/security-pattern.js.map +1 -0
  177. package/dist/detectors/v4/stale-api.d.ts +59 -0
  178. package/dist/detectors/v4/stale-api.d.ts.map +1 -0
  179. package/dist/detectors/v4/stale-api.js +470 -0
  180. package/dist/detectors/v4/stale-api.js.map +1 -0
  181. package/dist/detectors/v4/types.d.ts +74 -0
  182. package/dist/detectors/v4/types.d.ts.map +1 -0
  183. package/dist/detectors/v4/types.js +10 -0
  184. package/dist/detectors/v4/types.js.map +1 -0
  185. package/dist/diff/filter.d.ts +35 -0
  186. package/dist/diff/filter.d.ts.map +1 -0
  187. package/dist/diff/filter.js +65 -0
  188. package/dist/diff/filter.js.map +1 -0
  189. package/dist/diff/index.d.ts +9 -0
  190. package/dist/diff/index.d.ts.map +1 -0
  191. package/dist/diff/index.js +8 -0
  192. package/dist/diff/index.js.map +1 -0
  193. package/dist/diff/parser.d.ts +61 -0
  194. package/dist/diff/parser.d.ts.map +1 -0
  195. package/dist/diff/parser.js +203 -0
  196. package/dist/diff/parser.js.map +1 -0
  197. package/dist/i18n/en.d.ts +18 -0
  198. package/dist/i18n/en.d.ts.map +1 -0
  199. package/dist/i18n/en.js +83 -0
  200. package/dist/i18n/en.js.map +1 -0
  201. package/dist/i18n/index.d.ts +13 -0
  202. package/dist/i18n/index.d.ts.map +1 -0
  203. package/dist/i18n/index.js +14 -0
  204. package/dist/i18n/index.js.map +1 -0
  205. package/dist/i18n/provider.d.ts +54 -0
  206. package/dist/i18n/provider.d.ts.map +1 -0
  207. package/dist/i18n/provider.js +88 -0
  208. package/dist/i18n/provider.js.map +1 -0
  209. package/dist/i18n/types.d.ts +37 -0
  210. package/dist/i18n/types.d.ts.map +1 -0
  211. package/dist/i18n/types.js +10 -0
  212. package/dist/i18n/types.js.map +1 -0
  213. package/dist/i18n/zh.d.ts +14 -0
  214. package/dist/i18n/zh.d.ts.map +1 -0
  215. package/dist/i18n/zh.js +83 -0
  216. package/dist/i18n/zh.js.map +1 -0
  217. package/dist/index.d.ts +113 -0
  218. package/dist/index.d.ts.map +1 -0
  219. package/dist/index.js +106 -0
  220. package/dist/index.js.map +1 -0
  221. package/dist/ir/index.d.ts +10 -0
  222. package/dist/ir/index.d.ts.map +1 -0
  223. package/dist/ir/index.js +9 -0
  224. package/dist/ir/index.js.map +1 -0
  225. package/dist/ir/types.d.ts +126 -0
  226. package/dist/ir/types.d.ts.map +1 -0
  227. package/dist/ir/types.js +33 -0
  228. package/dist/ir/types.js.map +1 -0
  229. package/dist/languages/go/index.d.ts +7 -0
  230. package/dist/languages/go/index.d.ts.map +1 -0
  231. package/dist/languages/go/index.js +7 -0
  232. package/dist/languages/go/index.js.map +1 -0
  233. package/dist/languages/go/parser.d.ts +89 -0
  234. package/dist/languages/go/parser.d.ts.map +1 -0
  235. package/dist/languages/go/parser.js +509 -0
  236. package/dist/languages/go/parser.js.map +1 -0
  237. package/dist/languages/index.d.ts +13 -0
  238. package/dist/languages/index.d.ts.map +1 -0
  239. package/dist/languages/index.js +14 -0
  240. package/dist/languages/index.js.map +1 -0
  241. package/dist/languages/java/index.d.ts +7 -0
  242. package/dist/languages/java/index.d.ts.map +1 -0
  243. package/dist/languages/java/index.js +7 -0
  244. package/dist/languages/java/index.js.map +1 -0
  245. package/dist/languages/java/parser.d.ts +82 -0
  246. package/dist/languages/java/parser.d.ts.map +1 -0
  247. package/dist/languages/java/parser.js +492 -0
  248. package/dist/languages/java/parser.js.map +1 -0
  249. package/dist/languages/kotlin/index.d.ts +7 -0
  250. package/dist/languages/kotlin/index.d.ts.map +1 -0
  251. package/dist/languages/kotlin/index.js +7 -0
  252. package/dist/languages/kotlin/index.js.map +1 -0
  253. package/dist/languages/kotlin/parser.d.ts +84 -0
  254. package/dist/languages/kotlin/parser.d.ts.map +1 -0
  255. package/dist/languages/kotlin/parser.js +507 -0
  256. package/dist/languages/kotlin/parser.js.map +1 -0
  257. package/dist/languages/python/index.d.ts +7 -0
  258. package/dist/languages/python/index.d.ts.map +1 -0
  259. package/dist/languages/python/index.js +7 -0
  260. package/dist/languages/python/index.js.map +1 -0
  261. package/dist/languages/python/parser.d.ts +91 -0
  262. package/dist/languages/python/parser.d.ts.map +1 -0
  263. package/dist/languages/python/parser.js +375 -0
  264. package/dist/languages/python/parser.js.map +1 -0
  265. package/dist/languages/registry.d.ts +81 -0
  266. package/dist/languages/registry.d.ts.map +1 -0
  267. package/dist/languages/registry.js +150 -0
  268. package/dist/languages/registry.js.map +1 -0
  269. package/dist/languages/types.d.ts +137 -0
  270. package/dist/languages/types.d.ts.map +1 -0
  271. package/dist/languages/types.js +10 -0
  272. package/dist/languages/types.js.map +1 -0
  273. package/dist/languages/typescript/index.d.ts +7 -0
  274. package/dist/languages/typescript/index.d.ts.map +1 -0
  275. package/dist/languages/typescript/index.js +7 -0
  276. package/dist/languages/typescript/index.js.map +1 -0
  277. package/dist/languages/typescript/parser.d.ts +51 -0
  278. package/dist/languages/typescript/parser.d.ts.map +1 -0
  279. package/dist/languages/typescript/parser.js +286 -0
  280. package/dist/languages/typescript/parser.js.map +1 -0
  281. package/dist/license/generator.d.ts +43 -0
  282. package/dist/license/generator.d.ts.map +1 -0
  283. package/dist/license/generator.js +72 -0
  284. package/dist/license/generator.js.map +1 -0
  285. package/dist/license/index.d.ts +11 -0
  286. package/dist/license/index.d.ts.map +1 -0
  287. package/dist/license/index.js +12 -0
  288. package/dist/license/index.js.map +1 -0
  289. package/dist/license/types.d.ts +85 -0
  290. package/dist/license/types.d.ts.map +1 -0
  291. package/dist/license/types.js +10 -0
  292. package/dist/license/types.js.map +1 -0
  293. package/dist/license/validator.d.ts +77 -0
  294. package/dist/license/validator.d.ts.map +1 -0
  295. package/dist/license/validator.js +275 -0
  296. package/dist/license/validator.js.map +1 -0
  297. package/dist/parser/extractor.d.ts +31 -0
  298. package/dist/parser/extractor.d.ts.map +1 -0
  299. package/dist/parser/extractor.js +10 -0
  300. package/dist/parser/extractor.js.map +1 -0
  301. package/dist/parser/extractors/go.d.ts +21 -0
  302. package/dist/parser/extractors/go.d.ts.map +1 -0
  303. package/dist/parser/extractors/go.js +569 -0
  304. package/dist/parser/extractors/go.js.map +1 -0
  305. package/dist/parser/extractors/index.d.ts +13 -0
  306. package/dist/parser/extractors/index.d.ts.map +1 -0
  307. package/dist/parser/extractors/index.js +13 -0
  308. package/dist/parser/extractors/index.js.map +1 -0
  309. package/dist/parser/extractors/java.d.ts +24 -0
  310. package/dist/parser/extractors/java.d.ts.map +1 -0
  311. package/dist/parser/extractors/java.js +611 -0
  312. package/dist/parser/extractors/java.js.map +1 -0
  313. package/dist/parser/extractors/kotlin.d.ts +25 -0
  314. package/dist/parser/extractors/kotlin.d.ts.map +1 -0
  315. package/dist/parser/extractors/kotlin.js +665 -0
  316. package/dist/parser/extractors/kotlin.js.map +1 -0
  317. package/dist/parser/extractors/python.d.ts +21 -0
  318. package/dist/parser/extractors/python.d.ts.map +1 -0
  319. package/dist/parser/extractors/python.js +514 -0
  320. package/dist/parser/extractors/python.js.map +1 -0
  321. package/dist/parser/extractors/typescript.d.ts +23 -0
  322. package/dist/parser/extractors/typescript.d.ts.map +1 -0
  323. package/dist/parser/extractors/typescript.js +664 -0
  324. package/dist/parser/extractors/typescript.js.map +1 -0
  325. package/dist/parser/index.d.ts +15 -0
  326. package/dist/parser/index.d.ts.map +1 -0
  327. package/dist/parser/index.js +14 -0
  328. package/dist/parser/index.js.map +1 -0
  329. package/dist/parser/manager.d.ts +50 -0
  330. package/dist/parser/manager.d.ts.map +1 -0
  331. package/dist/parser/manager.js +159 -0
  332. package/dist/parser/manager.js.map +1 -0
  333. package/dist/registry/builtins/go-builtins.d.ts +13 -0
  334. package/dist/registry/builtins/go-builtins.d.ts.map +1 -0
  335. package/dist/registry/builtins/go-builtins.js +63 -0
  336. package/dist/registry/builtins/go-builtins.js.map +1 -0
  337. package/dist/registry/builtins/java-builtins.d.ts +10 -0
  338. package/dist/registry/builtins/java-builtins.d.ts.map +1 -0
  339. package/dist/registry/builtins/java-builtins.js +59 -0
  340. package/dist/registry/builtins/java-builtins.js.map +1 -0
  341. package/dist/registry/builtins/kotlin-builtins.d.ts +10 -0
  342. package/dist/registry/builtins/kotlin-builtins.d.ts.map +1 -0
  343. package/dist/registry/builtins/kotlin-builtins.js +38 -0
  344. package/dist/registry/builtins/kotlin-builtins.js.map +1 -0
  345. package/dist/registry/builtins/node-builtins.d.ts +10 -0
  346. package/dist/registry/builtins/node-builtins.d.ts.map +1 -0
  347. package/dist/registry/builtins/node-builtins.js +36 -0
  348. package/dist/registry/builtins/node-builtins.js.map +1 -0
  349. package/dist/registry/builtins/python-builtins.d.ts +10 -0
  350. package/dist/registry/builtins/python-builtins.d.ts.map +1 -0
  351. package/dist/registry/builtins/python-builtins.js +43 -0
  352. package/dist/registry/builtins/python-builtins.js.map +1 -0
  353. package/dist/registry/cache.d.ts +53 -0
  354. package/dist/registry/cache.d.ts.map +1 -0
  355. package/dist/registry/cache.js +147 -0
  356. package/dist/registry/cache.js.map +1 -0
  357. package/dist/registry/go-registry.d.ts +52 -0
  358. package/dist/registry/go-registry.d.ts.map +1 -0
  359. package/dist/registry/go-registry.js +148 -0
  360. package/dist/registry/go-registry.js.map +1 -0
  361. package/dist/registry/index.d.ts +18 -0
  362. package/dist/registry/index.d.ts.map +1 -0
  363. package/dist/registry/index.js +21 -0
  364. package/dist/registry/index.js.map +1 -0
  365. package/dist/registry/maven-registry.d.ts +57 -0
  366. package/dist/registry/maven-registry.d.ts.map +1 -0
  367. package/dist/registry/maven-registry.js +155 -0
  368. package/dist/registry/maven-registry.js.map +1 -0
  369. package/dist/registry/npm-registry.d.ts +40 -0
  370. package/dist/registry/npm-registry.d.ts.map +1 -0
  371. package/dist/registry/npm-registry.js +155 -0
  372. package/dist/registry/npm-registry.js.map +1 -0
  373. package/dist/registry/pypi-registry.d.ts +49 -0
  374. package/dist/registry/pypi-registry.d.ts.map +1 -0
  375. package/dist/registry/pypi-registry.js +175 -0
  376. package/dist/registry/pypi-registry.js.map +1 -0
  377. package/dist/registry/registry-manager.d.ts +45 -0
  378. package/dist/registry/registry-manager.d.ts.map +1 -0
  379. package/dist/registry/registry-manager.js +107 -0
  380. package/dist/registry/registry-manager.js.map +1 -0
  381. package/dist/registry/types.d.ts +83 -0
  382. package/dist/registry/types.d.ts.map +1 -0
  383. package/dist/registry/types.js +12 -0
  384. package/dist/registry/types.js.map +1 -0
  385. package/dist/reporter/html-reporter.d.ts +20 -0
  386. package/dist/reporter/html-reporter.d.ts.map +1 -0
  387. package/dist/reporter/html-reporter.js +612 -0
  388. package/dist/reporter/html-reporter.js.map +1 -0
  389. package/dist/reporter/index.d.ts +28 -0
  390. package/dist/reporter/index.d.ts.map +1 -0
  391. package/dist/reporter/index.js +48 -0
  392. package/dist/reporter/index.js.map +1 -0
  393. package/dist/reporter/markdown-reporter.d.ts +16 -0
  394. package/dist/reporter/markdown-reporter.d.ts.map +1 -0
  395. package/dist/reporter/markdown-reporter.js +182 -0
  396. package/dist/reporter/markdown-reporter.js.map +1 -0
  397. package/dist/reporter/sarif-reporter.d.ts +67 -0
  398. package/dist/reporter/sarif-reporter.d.ts.map +1 -0
  399. package/dist/reporter/sarif-reporter.js +73 -0
  400. package/dist/reporter/sarif-reporter.js.map +1 -0
  401. package/dist/reporter/terminal-reporter.d.ts +14 -0
  402. package/dist/reporter/terminal-reporter.d.ts.map +1 -0
  403. package/dist/reporter/terminal-reporter.js +126 -0
  404. package/dist/reporter/terminal-reporter.js.map +1 -0
  405. package/dist/reporter/types.d.ts +43 -0
  406. package/dist/reporter/types.d.ts.map +1 -0
  407. package/dist/reporter/types.js +10 -0
  408. package/dist/reporter/types.js.map +1 -0
  409. package/dist/reporter/v4-html.d.ts +24 -0
  410. package/dist/reporter/v4-html.d.ts.map +1 -0
  411. package/dist/reporter/v4-html.js +359 -0
  412. package/dist/reporter/v4-html.js.map +1 -0
  413. package/dist/reporter/v4-terminal.d.ts +55 -0
  414. package/dist/reporter/v4-terminal.d.ts.map +1 -0
  415. package/dist/reporter/v4-terminal.js +199 -0
  416. package/dist/reporter/v4-terminal.js.map +1 -0
  417. package/dist/scanner/index.d.ts +9 -0
  418. package/dist/scanner/index.d.ts.map +1 -0
  419. package/dist/scanner/index.js +9 -0
  420. package/dist/scanner/index.js.map +1 -0
  421. package/dist/scanner/v4-scanner.d.ts +162 -0
  422. package/dist/scanner/v4-scanner.d.ts.map +1 -0
  423. package/dist/scanner/v4-scanner.js +327 -0
  424. package/dist/scanner/v4-scanner.js.map +1 -0
  425. package/dist/scorer/report.d.ts +52 -0
  426. package/dist/scorer/report.d.ts.map +1 -0
  427. package/dist/scorer/report.js +347 -0
  428. package/dist/scorer/report.js.map +1 -0
  429. package/dist/scorer/scoring-engine.d.ts +170 -0
  430. package/dist/scorer/scoring-engine.d.ts.map +1 -0
  431. package/dist/scorer/scoring-engine.js +308 -0
  432. package/dist/scorer/scoring-engine.js.map +1 -0
  433. package/dist/scorer/v4-adapter.d.ts +87 -0
  434. package/dist/scorer/v4-adapter.d.ts.map +1 -0
  435. package/dist/scorer/v4-adapter.js +145 -0
  436. package/dist/scorer/v4-adapter.js.map +1 -0
  437. package/dist/sla/index.d.ts +7 -0
  438. package/dist/sla/index.d.ts.map +1 -0
  439. package/dist/sla/index.js +6 -0
  440. package/dist/sla/index.js.map +1 -0
  441. package/dist/sla/tracker.d.ts +70 -0
  442. package/dist/sla/tracker.d.ts.map +1 -0
  443. package/dist/sla/tracker.js +151 -0
  444. package/dist/sla/tracker.js.map +1 -0
  445. package/dist/sla/types.d.ts +67 -0
  446. package/dist/sla/types.d.ts.map +1 -0
  447. package/dist/sla/types.js +42 -0
  448. package/dist/sla/types.js.map +1 -0
  449. package/dist/types.d.ts +172 -0
  450. package/dist/types.d.ts.map +1 -0
  451. package/dist/types.js +69 -0
  452. package/dist/types.js.map +1 -0
  453. package/package.json +97 -0
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Open Code Review V4 — AI Pipeline Module
3
+ *
4
+ * Two-stage AI scan pipeline for detecting AI-generated code defects:
5
+ * - Stage 1 (Embedding): Fast similarity-based defect detection
6
+ * - Stage 2 (LLM): Deep analysis of suspicious code blocks
7
+ *
8
+ * SLA levels control which stages run:
9
+ * - L1 Fast: Structural detectors only (no AI)
10
+ * - L2 Standard: + Embedding recall + Local LLM (Ollama)
11
+ * - L3 Deep: + Remote LLM (OpenAI/Claude)
12
+ *
13
+ * @since 0.4.0
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import {
18
+ * AIScanPipeline,
19
+ * createPipelineForSLA,
20
+ * LocalEmbeddingProvider,
21
+ * OllamaLLMProvider,
22
+ * DEFECT_PATTERNS,
23
+ * } from 'open-code-review-core';
24
+ *
25
+ * // Create pipeline for L2 (standard) with local LLM
26
+ * const pipeline = createPipelineForSLA('L2', {
27
+ * local: { provider: 'ollama', model: 'codellama:13b' },
28
+ * });
29
+ *
30
+ * // Run the scan
31
+ * const result = await pipeline.scan(codeUnits, structuralResults);
32
+ *
33
+ * console.log(`Found ${result.totalIssues} issues in ${result.totalDurationMs}ms`);
34
+ * console.log(`SLA level: ${result.slaLevel}`);
35
+ *
36
+ * for (const stage of result.stages) {
37
+ * console.log(`Stage ${stage.stage}: ${stage.issues.length} issues`);
38
+ * }
39
+ * ```
40
+ */
41
+ export type { SLALevel, EmbeddingProvider, LLMProvider, LLMOptions, LLMResponse, AIConfig, ScanStageResult, AIPipelineResult, } from './types.js';
42
+ export { LocalEmbeddingProvider, OpenAIEmbeddingProvider, OllamaEmbeddingProvider, tokenize, cosineSimilarity, findTopMatches, } from './embedding/index.js';
43
+ export { OllamaLLMProvider, OpenAILLMProvider, AnthropicLLMProvider } from './llm/index.js';
44
+ export { OllamaLLMProvider as OllamaProvider } from './llm/index.js';
45
+ export { OpenAILLMProvider as OpenAIProvider } from './llm/index.js';
46
+ export { AnthropicLLMProvider as AnthropicProvider } from './llm/index.js';
47
+ export type { DefectPattern } from './patterns/index.js';
48
+ export { DEFECT_PATTERNS, getPatternsByCategory, getPatternsForLanguage, getPatternText, } from './patterns/index.js';
49
+ export { AIScanPipeline } from './pipeline.js';
50
+ export { SLA_DESCRIPTIONS, DEFAULT_SLA_CONFIGS, createPipelineForSLA, getRecommendedSLA, validateSLAConfig, } from './sla.js';
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/v4/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAIH,YAAY,EACV,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,WAAW,EACX,QAAQ,EACR,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,QAAQ,EACR,gBAAgB,EAChB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG5F,OAAO,EAAE,iBAAiB,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,iBAAiB,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,oBAAoB,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAI3E,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAI/C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Open Code Review V4 — AI Pipeline Module
3
+ *
4
+ * Two-stage AI scan pipeline for detecting AI-generated code defects:
5
+ * - Stage 1 (Embedding): Fast similarity-based defect detection
6
+ * - Stage 2 (LLM): Deep analysis of suspicious code blocks
7
+ *
8
+ * SLA levels control which stages run:
9
+ * - L1 Fast: Structural detectors only (no AI)
10
+ * - L2 Standard: + Embedding recall + Local LLM (Ollama)
11
+ * - L3 Deep: + Remote LLM (OpenAI/Claude)
12
+ *
13
+ * @since 0.4.0
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import {
18
+ * AIScanPipeline,
19
+ * createPipelineForSLA,
20
+ * LocalEmbeddingProvider,
21
+ * OllamaLLMProvider,
22
+ * DEFECT_PATTERNS,
23
+ * } from 'open-code-review-core';
24
+ *
25
+ * // Create pipeline for L2 (standard) with local LLM
26
+ * const pipeline = createPipelineForSLA('L2', {
27
+ * local: { provider: 'ollama', model: 'codellama:13b' },
28
+ * });
29
+ *
30
+ * // Run the scan
31
+ * const result = await pipeline.scan(codeUnits, structuralResults);
32
+ *
33
+ * console.log(`Found ${result.totalIssues} issues in ${result.totalDurationMs}ms`);
34
+ * console.log(`SLA level: ${result.slaLevel}`);
35
+ *
36
+ * for (const stage of result.stages) {
37
+ * console.log(`Stage ${stage.stage}: ${stage.issues.length} issues`);
38
+ * }
39
+ * ```
40
+ */
41
+ // ─── Embedding Providers ───
42
+ export { LocalEmbeddingProvider, OpenAIEmbeddingProvider, OllamaEmbeddingProvider, tokenize, cosineSimilarity, findTopMatches, } from './embedding/index.js';
43
+ // ─── LLM Providers ───
44
+ export { OllamaLLMProvider, OpenAILLMProvider, AnthropicLLMProvider } from './llm/index.js';
45
+ // Backward compatibility aliases
46
+ export { OllamaLLMProvider as OllamaProvider } from './llm/index.js';
47
+ export { OpenAILLMProvider as OpenAIProvider } from './llm/index.js';
48
+ export { AnthropicLLMProvider as AnthropicProvider } from './llm/index.js';
49
+ export { DEFECT_PATTERNS, getPatternsByCategory, getPatternsForLanguage, getPatternText, } from './patterns/index.js';
50
+ // ─── Pipeline ───
51
+ export { AIScanPipeline } from './pipeline.js';
52
+ // ─── SLA Router ───
53
+ export { SLA_DESCRIPTIONS, DEFAULT_SLA_CONFIGS, createPipelineForSLA, getRecommendedSLA, validateSLAConfig, } from './sla.js';
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/v4/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAeH,8BAA8B;AAE9B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,QAAQ,EACR,gBAAgB,EAChB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,wBAAwB;AAExB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE5F,iCAAiC;AACjC,OAAO,EAAE,iBAAiB,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,iBAAiB,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,oBAAoB,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAK3E,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,mBAAmB;AAEnB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,qBAAqB;AAErB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Anthropic LLM Provider
3
+ *
4
+ * Provides LLM inference via Anthropic Messages API.
5
+ * Used for L3 SLA level as an alternative to OpenAI.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ import type { LLMProvider, LLMOptions, LLMResponse } from '../types.js';
10
+ /**
11
+ * Anthropic provider for remote LLM inference using Claude models.
12
+ *
13
+ * Requires an API key. Supports Claude 3.5 and newer models.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const provider = new AnthropicProvider(process.env.ANTHROPIC_API_KEY, 'claude-3-5-haiku-20241022');
18
+ * if (await provider.isAvailable()) {
19
+ * const response = await provider.complete('Review this code:', { maxTokens: 1000 });
20
+ * }
21
+ * ```
22
+ */
23
+ export declare class AnthropicLLMProvider implements LLMProvider {
24
+ private apiKey;
25
+ private model;
26
+ private baseUrl;
27
+ readonly name = "anthropic";
28
+ constructor(apiKey: string, model?: string, baseUrl?: string);
29
+ /**
30
+ * Send a completion request to Anthropic Messages API.
31
+ */
32
+ complete(prompt: string, options?: LLMOptions): Promise<LLMResponse>;
33
+ /**
34
+ * Check if the provider is available (has API key configured).
35
+ */
36
+ isAvailable(): Promise<boolean>;
37
+ }
38
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../src/ai/v4/llm/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IAIpD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IALjB,QAAQ,CAAC,IAAI,eAAe;gBAGlB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAoC,EAC3C,OAAO,GAAE,MAAuC;IAG1D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA2D1E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAGtC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Anthropic LLM Provider
3
+ *
4
+ * Provides LLM inference via Anthropic Messages API.
5
+ * Used for L3 SLA level as an alternative to OpenAI.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ /**
10
+ * Anthropic provider for remote LLM inference using Claude models.
11
+ *
12
+ * Requires an API key. Supports Claude 3.5 and newer models.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const provider = new AnthropicProvider(process.env.ANTHROPIC_API_KEY, 'claude-3-5-haiku-20241022');
17
+ * if (await provider.isAvailable()) {
18
+ * const response = await provider.complete('Review this code:', { maxTokens: 1000 });
19
+ * }
20
+ * ```
21
+ */
22
+ export class AnthropicLLMProvider {
23
+ apiKey;
24
+ model;
25
+ baseUrl;
26
+ name = 'anthropic';
27
+ constructor(apiKey, model = 'claude-3-5-haiku-20241022', baseUrl = 'https://api.anthropic.com/v1') {
28
+ this.apiKey = apiKey;
29
+ this.model = model;
30
+ this.baseUrl = baseUrl;
31
+ }
32
+ /**
33
+ * Send a completion request to Anthropic Messages API.
34
+ */
35
+ async complete(prompt, options) {
36
+ const url = `${this.baseUrl}/messages`;
37
+ const startTime = Date.now();
38
+ const body = {
39
+ model: this.model,
40
+ max_tokens: options?.maxTokens ?? 4096,
41
+ messages: [{ role: 'user', content: prompt }],
42
+ };
43
+ if (options?.system) {
44
+ body.system = options.system;
45
+ }
46
+ const response = await fetch(url, {
47
+ method: 'POST',
48
+ headers: {
49
+ 'Content-Type': 'application/json',
50
+ 'x-api-key': this.apiKey,
51
+ 'anthropic-version': '2023-06-01',
52
+ },
53
+ body: JSON.stringify(body),
54
+ signal: AbortSignal.timeout(60_000),
55
+ });
56
+ if (!response.ok) {
57
+ const errorBody = await response.text().catch(() => 'unknown error');
58
+ throw new Error(`Anthropic API error (${response.status}): ${errorBody}`);
59
+ }
60
+ const data = (await response.json());
61
+ const latencyMs = Date.now() - startTime;
62
+ // Extract text from content blocks
63
+ const content = data.content
64
+ .filter(block => block.type === 'text')
65
+ .map(block => block.text ?? '')
66
+ .join('');
67
+ return {
68
+ content,
69
+ usage: data.usage
70
+ ? {
71
+ prompt: data.usage.input_tokens,
72
+ completion: data.usage.output_tokens,
73
+ total: data.usage.input_tokens + data.usage.output_tokens,
74
+ }
75
+ : undefined,
76
+ latencyMs,
77
+ };
78
+ }
79
+ /**
80
+ * Check if the provider is available (has API key configured).
81
+ */
82
+ async isAvailable() {
83
+ return !!this.apiKey && this.apiKey.length > 0;
84
+ }
85
+ }
86
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../src/ai/v4/llm/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,oBAAoB;IAIrB;IACA;IACA;IALD,IAAI,GAAG,WAAW,CAAC;IAE5B,YACU,MAAc,EACd,QAAgB,2BAA2B,EAC3C,UAAkB,8BAA8B;QAFhD,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAsC;QAC3C,YAAO,GAAP,OAAO,CAAyC;IACvD,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,OAAoB;QACjD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,WAAW,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI;YACtC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;SAC9C,CAAC;QAEF,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC/B,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,IAAI,CAAC,MAAM;gBACxB,mBAAmB,EAAE,YAAY;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAMlC,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEzC,mCAAmC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;aACzB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;aACtC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;aAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,OAAO;YACL,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;gBACf,CAAC,CAAC;oBACE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;oBAC/B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;oBACpC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;iBAC1D;gBACH,CAAC,CAAC,SAAS;YACb,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACjD,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * LLM Providers for V4 AI Pipeline Stage 2.
3
+ *
4
+ * @since 0.4.0
5
+ */
6
+ export { OllamaLLMProvider } from './ollama.js';
7
+ export { OpenAILLMProvider } from './openai.js';
8
+ export { AnthropicLLMProvider } from './anthropic.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai/v4/llm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * LLM Providers for V4 AI Pipeline Stage 2.
3
+ *
4
+ * @since 0.4.0
5
+ */
6
+ export { OllamaLLMProvider } from './ollama.js';
7
+ export { OpenAILLMProvider } from './openai.js';
8
+ export { AnthropicLLMProvider } from './anthropic.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai/v4/llm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Ollama LLM Provider
3
+ *
4
+ * Provides local LLM inference via Ollama API.
5
+ * Used for L2 SLA level where local models are preferred.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ import type { LLMProvider, LLMOptions, LLMResponse } from '../types.js';
10
+ /**
11
+ * Ollama provider for local LLM inference.
12
+ *
13
+ * Requires Ollama to be running locally with the specified model pulled.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const provider = new OllamaProvider('codellama:13b');
18
+ * if (await provider.isAvailable()) {
19
+ * const response = await provider.complete('Explain this code:', { maxTokens: 500 });
20
+ * }
21
+ * ```
22
+ */
23
+ export declare class OllamaLLMProvider implements LLMProvider {
24
+ private model;
25
+ private baseUrl;
26
+ readonly name = "ollama";
27
+ constructor(model?: string, baseUrl?: string);
28
+ /**
29
+ * Send a completion request to Ollama.
30
+ *
31
+ * Uses the /api/generate endpoint with streaming disabled.
32
+ */
33
+ complete(prompt: string, options?: LLMOptions): Promise<LLMResponse>;
34
+ /**
35
+ * Check if Ollama is running and the model is available.
36
+ */
37
+ isAvailable(): Promise<boolean>;
38
+ }
39
+ //# sourceMappingURL=ollama.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../../src/ai/v4/llm/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IAIjD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IAJjB,QAAQ,CAAC,IAAI,YAAY;gBAGf,KAAK,GAAE,MAAwB,EAC/B,OAAO,GAAE,MAAiC;IAGpD;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAqD1E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAsBtC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Ollama LLM Provider
3
+ *
4
+ * Provides local LLM inference via Ollama API.
5
+ * Used for L2 SLA level where local models are preferred.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ /**
10
+ * Ollama provider for local LLM inference.
11
+ *
12
+ * Requires Ollama to be running locally with the specified model pulled.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const provider = new OllamaProvider('codellama:13b');
17
+ * if (await provider.isAvailable()) {
18
+ * const response = await provider.complete('Explain this code:', { maxTokens: 500 });
19
+ * }
20
+ * ```
21
+ */
22
+ export class OllamaLLMProvider {
23
+ model;
24
+ baseUrl;
25
+ name = 'ollama';
26
+ constructor(model = 'codellama:13b', baseUrl = 'http://localhost:11434') {
27
+ this.model = model;
28
+ this.baseUrl = baseUrl;
29
+ }
30
+ /**
31
+ * Send a completion request to Ollama.
32
+ *
33
+ * Uses the /api/generate endpoint with streaming disabled.
34
+ */
35
+ async complete(prompt, options) {
36
+ const url = `${this.baseUrl}/api/generate`;
37
+ const startTime = Date.now();
38
+ const body = {
39
+ model: this.model,
40
+ prompt,
41
+ stream: false,
42
+ };
43
+ if (options?.system) {
44
+ body.system = options.system;
45
+ }
46
+ if (options?.maxTokens) {
47
+ body.options = { ...body.options, num_predict: options.maxTokens };
48
+ }
49
+ if (options?.temperature !== undefined) {
50
+ body.options = { ...body.options, temperature: options.temperature };
51
+ }
52
+ const response = await fetch(url, {
53
+ method: 'POST',
54
+ headers: { 'Content-Type': 'application/json' },
55
+ body: JSON.stringify(body),
56
+ signal: AbortSignal.timeout(120_000), // 2 minute timeout for local LLM
57
+ });
58
+ if (!response.ok) {
59
+ const errorBody = await response.text().catch(() => 'unknown error');
60
+ throw new Error(`Ollama API error (${response.status}): ${errorBody}`);
61
+ }
62
+ const data = (await response.json());
63
+ const latencyMs = Date.now() - startTime;
64
+ return {
65
+ content: data.response,
66
+ usage: {
67
+ prompt: data.prompt_eval_count ?? 0,
68
+ completion: data.eval_count ?? 0,
69
+ total: (data.prompt_eval_count ?? 0) + (data.eval_count ?? 0),
70
+ },
71
+ latencyMs,
72
+ };
73
+ }
74
+ /**
75
+ * Check if Ollama is running and the model is available.
76
+ */
77
+ async isAvailable() {
78
+ try {
79
+ const response = await fetch(`${this.baseUrl}/api/tags`, {
80
+ method: 'GET',
81
+ signal: AbortSignal.timeout(5_000),
82
+ });
83
+ if (!response.ok)
84
+ return false;
85
+ const data = (await response.json());
86
+ // Check if our model exists (exact match or without tag)
87
+ const modelName = this.model.split(':')[0];
88
+ return (data.models ?? []).some(m => m.name === this.model || m.name.startsWith(`${modelName}:`));
89
+ }
90
+ catch {
91
+ return false;
92
+ }
93
+ }
94
+ }
95
+ //# sourceMappingURL=ollama.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../../src/ai/v4/llm/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,iBAAiB;IAIlB;IACA;IAJD,IAAI,GAAG,QAAQ,CAAC;IAEzB,YACU,QAAgB,eAAe,EAC/B,UAAkB,wBAAwB;QAD1C,UAAK,GAAL,KAAK,CAA0B;QAC/B,YAAO,GAAP,OAAO,CAAmC;IACjD,CAAC;IAEJ;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,OAAoB;QACjD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,eAAe,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM;YACN,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC/B,CAAC;QAED,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,GAAG,EAAE,GAAI,IAAI,CAAC,OAAkB,EAAE,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;QACjF,CAAC;QAED,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAI,IAAI,CAAC,OAAkB,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QACnF,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,iCAAiC;SACxE,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAIlC,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEzC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC;gBACnC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;gBAChC,KAAK,EAAE,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;aAC9D;YACD,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,EAAE;gBACvD,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC;YAE/B,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAElC,CAAC;YAEF,yDAAyD;YACzD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,CAAC,CACjE,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * OpenAI LLM Provider
3
+ *
4
+ * Provides LLM inference via OpenAI Chat Completions API.
5
+ * Used for L3 SLA level where remote high-quality models are needed.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ import type { LLMProvider, LLMOptions, LLMResponse } from '../types.js';
10
+ /**
11
+ * OpenAI provider for remote LLM inference.
12
+ *
13
+ * Requires an API key. Supports all OpenAI chat models.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const provider = new OpenAIProvider(process.env.OPENAI_API_KEY, 'gpt-4o-mini');
18
+ * if (await provider.isAvailable()) {
19
+ * const response = await provider.complete('Review this code:', { maxTokens: 1000 });
20
+ * }
21
+ * ```
22
+ */
23
+ export declare class OpenAILLMProvider implements LLMProvider {
24
+ private apiKey;
25
+ private model;
26
+ private baseUrl;
27
+ readonly name = "openai";
28
+ constructor(apiKey: string, model?: string, baseUrl?: string);
29
+ /**
30
+ * Send a completion request to OpenAI Chat Completions API.
31
+ */
32
+ complete(prompt: string, options?: LLMOptions): Promise<LLMResponse>;
33
+ /**
34
+ * Check if the provider is available (has API key configured).
35
+ */
36
+ isAvailable(): Promise<boolean>;
37
+ }
38
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../../src/ai/v4/llm/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IAIjD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IALjB,QAAQ,CAAC,IAAI,YAAY;gBAGf,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAsB,EAC7B,OAAO,GAAE,MAAoC;IAGvD;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAiE1E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAGtC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * OpenAI LLM Provider
3
+ *
4
+ * Provides LLM inference via OpenAI Chat Completions API.
5
+ * Used for L3 SLA level where remote high-quality models are needed.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ /**
10
+ * OpenAI provider for remote LLM inference.
11
+ *
12
+ * Requires an API key. Supports all OpenAI chat models.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const provider = new OpenAIProvider(process.env.OPENAI_API_KEY, 'gpt-4o-mini');
17
+ * if (await provider.isAvailable()) {
18
+ * const response = await provider.complete('Review this code:', { maxTokens: 1000 });
19
+ * }
20
+ * ```
21
+ */
22
+ export class OpenAILLMProvider {
23
+ apiKey;
24
+ model;
25
+ baseUrl;
26
+ name = 'openai';
27
+ constructor(apiKey, model = 'gpt-4o-mini', baseUrl = 'https://api.openai.com/v1') {
28
+ this.apiKey = apiKey;
29
+ this.model = model;
30
+ this.baseUrl = baseUrl;
31
+ }
32
+ /**
33
+ * Send a completion request to OpenAI Chat Completions API.
34
+ */
35
+ async complete(prompt, options) {
36
+ const url = `${this.baseUrl}/chat/completions`;
37
+ const startTime = Date.now();
38
+ const messages = [];
39
+ if (options?.system) {
40
+ messages.push({ role: 'system', content: options.system });
41
+ }
42
+ messages.push({ role: 'user', content: prompt });
43
+ const body = {
44
+ model: this.model,
45
+ messages,
46
+ };
47
+ if (options?.maxTokens) {
48
+ body.max_tokens = options.maxTokens;
49
+ }
50
+ if (options?.temperature !== undefined) {
51
+ body.temperature = options.temperature;
52
+ }
53
+ const response = await fetch(url, {
54
+ method: 'POST',
55
+ headers: {
56
+ 'Content-Type': 'application/json',
57
+ Authorization: `Bearer ${this.apiKey}`,
58
+ },
59
+ body: JSON.stringify(body),
60
+ signal: AbortSignal.timeout(60_000),
61
+ });
62
+ if (!response.ok) {
63
+ const errorBody = await response.text().catch(() => 'unknown error');
64
+ throw new Error(`OpenAI API error (${response.status}): ${errorBody}`);
65
+ }
66
+ const data = (await response.json());
67
+ const latencyMs = Date.now() - startTime;
68
+ const content = data.choices[0]?.message?.content ?? '';
69
+ return {
70
+ content,
71
+ usage: data.usage
72
+ ? {
73
+ prompt: data.usage.prompt_tokens,
74
+ completion: data.usage.completion_tokens,
75
+ total: data.usage.total_tokens,
76
+ }
77
+ : undefined,
78
+ latencyMs,
79
+ };
80
+ }
81
+ /**
82
+ * Check if the provider is available (has API key configured).
83
+ */
84
+ async isAvailable() {
85
+ return !!this.apiKey && this.apiKey.length > 0;
86
+ }
87
+ }
88
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../../src/ai/v4/llm/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,iBAAiB;IAIlB;IACA;IACA;IALD,IAAI,GAAG,QAAQ,CAAC;IAEzB,YACU,MAAc,EACd,QAAgB,aAAa,EAC7B,UAAkB,2BAA2B;QAF7C,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAwB;QAC7B,YAAO,GAAP,OAAO,CAAsC;IACpD,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,OAAoB;QACjD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,mBAAmB,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,QAAQ,GAA6C,EAAE,CAAC;QAE9D,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAEjD,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ;SACT,CAAC;QAEF,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QACtC,CAAC;QAED,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACzC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACvC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAOlC,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;QAExD,OAAO;YACL,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;gBACf,CAAC,CAAC;oBACE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;oBAChC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB;oBACxC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;iBAC/B;gBACH,CAAC,CAAC,SAAS;YACb,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACjD,CAAC;CACF"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Defect Pattern Database
3
+ *
4
+ * Curated set of AI-generated code defect patterns.
5
+ * These are used as embedding comparison targets in Stage 1 (Embedding Recall).
6
+ *
7
+ * Each pattern includes:
8
+ * - Unique ID for tracking
9
+ * - Category aligned with V4 scoring dimensions
10
+ * - Description used for embedding generation
11
+ * - Example code snippets matching the pattern
12
+ * - Severity and applicable languages
13
+ *
14
+ * @since 0.4.0
15
+ */
16
+ import type { DetectorCategory } from '../../../detectors/v4/types.js';
17
+ import type { SupportedLanguage } from '../../../ir/types.js';
18
+ export interface DefectPattern {
19
+ /** Unique pattern identifier */
20
+ id: string;
21
+ /** Scoring category */
22
+ category: DetectorCategory;
23
+ /** Human-readable description (also used for embedding) */
24
+ description: string;
25
+ /** Code examples that match this pattern */
26
+ examples: string[];
27
+ /** Issue severity */
28
+ severity: 'error' | 'warning' | 'info';
29
+ /** Languages this pattern applies to (empty = all languages) */
30
+ languages: SupportedLanguage[];
31
+ }
32
+ /**
33
+ * Curated defect patterns that AI commonly generates.
34
+ * These are used as embedding comparison targets in Stage 1.
35
+ *
36
+ * Organized by category:
37
+ * - ai-faithfulness: Hallucinated imports, phantom APIs, fabricated types
38
+ * - code-freshness: Deprecated APIs, outdated patterns, stale knowledge
39
+ * - context-coherence: Inconsistencies, contradictions, style shifts
40
+ * - implementation: Over-engineering, security, incomplete implementations
41
+ */
42
+ export declare const DEFECT_PATTERNS: DefectPattern[];
43
+ /**
44
+ * Get all defect patterns for a specific category.
45
+ */
46
+ export declare function getPatternsByCategory(category: DetectorCategory): DefectPattern[];
47
+ /**
48
+ * Get all defect patterns applicable to a specific language.
49
+ * Patterns with empty languages array apply to all languages.
50
+ */
51
+ export declare function getPatternsForLanguage(language: SupportedLanguage): DefectPattern[];
52
+ /**
53
+ * Get the combined text representation of a pattern for embedding.
54
+ * Concatenates description and examples for richer embedding.
55
+ */
56
+ export declare function getPatternText(pattern: DefectPattern): string;
57
+ //# sourceMappingURL=defect-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defect-patterns.d.ts","sourceRoot":"","sources":["../../../../src/ai/v4/patterns/defect-patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI9D,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,qBAAqB;IACrB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,gEAAgE;IAChE,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAID;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EAkS1C,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,gBAAgB,GACzB,aAAa,EAAE,CAEjB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,iBAAiB,GAC1B,aAAa,EAAE,CAIjB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAE7D"}