@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,35 @@
1
+ /**
2
+ * Diff Filter β€” Filter scan results to only include issues in changed lines.
3
+ *
4
+ * Used in diff-only scanning mode to restrict reported issues to the
5
+ * lines actually modified in a PR/MR.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ import type { DetectorResult } from '../detectors/v4/types.js';
10
+ import type { DiffResult } from './parser.js';
11
+ /**
12
+ * Filter V4 DetectorResults to only include issues in changed lines.
13
+ *
14
+ * Logic:
15
+ * - If the issue's file is not in the diff, exclude it
16
+ * - If the file was newly added, include all issues (all lines are new)
17
+ * - If the file was modified/renamed, only include issues on changed lines
18
+ * - Deleted files are excluded (nothing to scan)
19
+ *
20
+ * @param issues - All detected issues
21
+ * @param diff - Parsed diff result
22
+ * @returns Filtered issues that are on changed lines
23
+ */
24
+ export declare function filterByDiff(issues: DetectorResult[], diff: DiffResult): DetectorResult[];
25
+ /**
26
+ * Get the list of scannable file paths from a diff result.
27
+ *
28
+ * Filters out deleted files and files with unsupported extensions.
29
+ *
30
+ * @param diff - Parsed diff result
31
+ * @param supportedExtensions - Extensions to include (e.g. ['.ts', '.js', '.py'])
32
+ * @returns Array of file paths to scan
33
+ */
34
+ export declare function getScannableFiles(diff: DiffResult, supportedExtensions?: string[]): string[];
35
+ //# sourceMappingURL=filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/diff/filter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,cAAc,EAAE,CA6BzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,mBAAmB,GAAE,MAAM,EAAyE,GACnG,MAAM,EAAE,CAQV"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Diff Filter β€” Filter scan results to only include issues in changed lines.
3
+ *
4
+ * Used in diff-only scanning mode to restrict reported issues to the
5
+ * lines actually modified in a PR/MR.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ /**
10
+ * Filter V4 DetectorResults to only include issues in changed lines.
11
+ *
12
+ * Logic:
13
+ * - If the issue's file is not in the diff, exclude it
14
+ * - If the file was newly added, include all issues (all lines are new)
15
+ * - If the file was modified/renamed, only include issues on changed lines
16
+ * - Deleted files are excluded (nothing to scan)
17
+ *
18
+ * @param issues - All detected issues
19
+ * @param diff - Parsed diff result
20
+ * @returns Filtered issues that are on changed lines
21
+ */
22
+ export function filterByDiff(issues, diff) {
23
+ return issues.filter(issue => {
24
+ // Find matching diff file β€” match by exact path or suffix
25
+ const diffFile = diff.files.find(f => f.path === issue.file ||
26
+ issue.file.endsWith(f.path) ||
27
+ f.path.endsWith(issue.file));
28
+ // If the file is not in the diff, exclude the issue
29
+ if (!diffFile)
30
+ return false;
31
+ // Deleted files have no issues to report
32
+ if (diffFile.status === 'deleted')
33
+ return false;
34
+ // New files: all lines are considered changed
35
+ if (diffFile.status === 'added')
36
+ return true;
37
+ // Modified/renamed files: check if the issue line is in changed lines
38
+ // If changedLines is empty (e.g. from name-status parse), include all issues
39
+ if (diffFile.changedLines.length === 0)
40
+ return true;
41
+ // Check if the issue line falls within changed lines
42
+ // Also consider a small window around changed lines for context
43
+ return diffFile.changedLines.includes(issue.line) ||
44
+ (issue.endLine !== undefined && diffFile.changedLines.some(cl => cl >= issue.line && cl <= issue.endLine));
45
+ });
46
+ }
47
+ /**
48
+ * Get the list of scannable file paths from a diff result.
49
+ *
50
+ * Filters out deleted files and files with unsupported extensions.
51
+ *
52
+ * @param diff - Parsed diff result
53
+ * @param supportedExtensions - Extensions to include (e.g. ['.ts', '.js', '.py'])
54
+ * @returns Array of file paths to scan
55
+ */
56
+ export function getScannableFiles(diff, supportedExtensions = ['.ts', '.tsx', '.js', '.jsx', '.py', '.java', '.go', '.kt', '.kts']) {
57
+ return diff.files
58
+ .filter(f => f.status !== 'deleted')
59
+ .filter(f => {
60
+ const ext = '.' + f.path.split('.').pop()?.toLowerCase();
61
+ return supportedExtensions.includes(ext);
62
+ })
63
+ .map(f => f.path);
64
+ }
65
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/diff/filter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,MAAwB,EAAE,IAAgB;IACrE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC3B,0DAA0D;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACnC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YACrB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAC5B,CAAC;QAEF,oDAAoD;QACpD,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAE5B,yCAAyC;QACzC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAEhD,8CAA8C;QAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QAE7C,sEAAsE;QACtE,6EAA6E;QAC7E,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEpD,qDAAqD;QACrD,gEAAgE;QAChE,OAAO,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YAC/C,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CACxD,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,OAAQ,CAC/C,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAgB,EAChB,sBAAgC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;IAEpG,OAAO,IAAI,CAAC,KAAK;SACd,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;SACnC,MAAM,CAAC,CAAC,CAAC,EAAE;QACV,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;QACzD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Diff Module β€” Parse and filter diffs for PR/MR scanning.
3
+ *
4
+ * @since 0.4.0
5
+ */
6
+ export { parseDiff, parseNameStatus } from './parser.js';
7
+ export type { DiffFile, DiffResult } from './parser.js';
8
+ export { filterByDiff, getScannableFiles } from './filter.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Diff Module β€” Parse and filter diffs for PR/MR scanning.
3
+ *
4
+ * @since 0.4.0
5
+ */
6
+ export { parseDiff, parseNameStatus } from './parser.js';
7
+ export { filterByDiff, getScannableFiles } from './filter.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Diff Parser β€” Parse unified diff format and git name-status output.
3
+ *
4
+ * Extracts changed files and line ranges from unified diffs,
5
+ * used for diff-only scanning in PR/MR workflows.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ /**
10
+ * Represents a single file in a diff.
11
+ */
12
+ export interface DiffFile {
13
+ /** File path (relative to project root) */
14
+ path: string;
15
+ /** Change status */
16
+ status: 'added' | 'modified' | 'deleted' | 'renamed';
17
+ /** Number of added lines */
18
+ additions: number;
19
+ /** Number of deleted lines */
20
+ deletions: number;
21
+ /** Changed line numbers (in the new version of the file) */
22
+ changedLines: number[];
23
+ }
24
+ /**
25
+ * Parsed diff result containing all changed files.
26
+ */
27
+ export interface DiffResult {
28
+ /** All changed files */
29
+ files: DiffFile[];
30
+ /** Total additions across all files */
31
+ totalAdditions: number;
32
+ /** Total deletions across all files */
33
+ totalDeletions: number;
34
+ }
35
+ /**
36
+ * Parse unified diff text (output of `git diff`) into structured DiffResult.
37
+ *
38
+ * Handles standard unified diff format with `---`, `+++`, `@@` hunk headers,
39
+ * and `+`/`-` line markers.
40
+ *
41
+ * @param diffText - Raw unified diff text
42
+ * @returns Parsed DiffResult
43
+ */
44
+ export declare function parseDiff(diffText: string): DiffResult;
45
+ /**
46
+ * Parse `git diff --name-status` output into DiffFile array.
47
+ *
48
+ * Each line is in format: `STATUS\tFILENAME` or `STATUS\tOLD\tNEW` (for renames).
49
+ *
50
+ * Status codes:
51
+ * - A: Added
52
+ * - M: Modified
53
+ * - D: Deleted
54
+ * - R: Renamed (with similarity percentage, e.g. R100)
55
+ * - C: Copied
56
+ *
57
+ * @param output - Raw `git diff --name-status` output
58
+ * @returns Array of DiffFile (without line-level info)
59
+ */
60
+ export declare function parseNameStatus(output: string): DiffFile[];
61
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/diff/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACrD,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wBAAwB;IACxB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;CACxB;AAID;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAmItD;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CA0D1D"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Diff Parser β€” Parse unified diff format and git name-status output.
3
+ *
4
+ * Extracts changed files and line ranges from unified diffs,
5
+ * used for diff-only scanning in PR/MR workflows.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ // ─── Unified Diff Parser ──────────────────────────────────────────
10
+ /**
11
+ * Parse unified diff text (output of `git diff`) into structured DiffResult.
12
+ *
13
+ * Handles standard unified diff format with `---`, `+++`, `@@` hunk headers,
14
+ * and `+`/`-` line markers.
15
+ *
16
+ * @param diffText - Raw unified diff text
17
+ * @returns Parsed DiffResult
18
+ */
19
+ export function parseDiff(diffText) {
20
+ const files = [];
21
+ let totalAdditions = 0;
22
+ let totalDeletions = 0;
23
+ if (!diffText || !diffText.trim()) {
24
+ return { files, totalAdditions, totalDeletions };
25
+ }
26
+ const lines = diffText.split('\n');
27
+ let currentFile = null;
28
+ let newLineNum = 0;
29
+ let oldLineNum = 0;
30
+ let inHunk = false;
31
+ for (let i = 0; i < lines.length; i++) {
32
+ const line = lines[i];
33
+ // New file diff header: diff --git a/path b/path
34
+ if (line.startsWith('diff --git ')) {
35
+ // Save previous file
36
+ if (currentFile) {
37
+ files.push(currentFile);
38
+ }
39
+ // Reset hunk tracking
40
+ inHunk = false;
41
+ newLineNum = 0;
42
+ oldLineNum = 0;
43
+ // Extract file path from "diff --git a/path b/path"
44
+ const match = line.match(/^diff --git a\/(.+?) b\/(.+)$/);
45
+ if (match) {
46
+ const oldPath = match[1];
47
+ const newPath = match[2];
48
+ currentFile = {
49
+ path: newPath,
50
+ status: oldPath !== newPath ? 'renamed' : 'modified',
51
+ additions: 0,
52
+ deletions: 0,
53
+ changedLines: [],
54
+ };
55
+ }
56
+ continue;
57
+ }
58
+ // Detect new file: "new file mode"
59
+ if (line.startsWith('new file mode') && currentFile) {
60
+ currentFile.status = 'added';
61
+ continue;
62
+ }
63
+ // Detect deleted file: "deleted file mode"
64
+ if (line.startsWith('deleted file mode') && currentFile) {
65
+ currentFile.status = 'deleted';
66
+ continue;
67
+ }
68
+ // Detect rename: "rename from" / "rename to"
69
+ if (line.startsWith('rename from') && currentFile) {
70
+ currentFile.status = 'renamed';
71
+ continue;
72
+ }
73
+ if (line.startsWith('rename to') && currentFile) {
74
+ const match = line.match(/^rename to (.+)$/);
75
+ if (match) {
76
+ currentFile.path = match[1];
77
+ }
78
+ continue;
79
+ }
80
+ // Hunk header: @@ -oldStart,oldCount +newStart,newCount @@
81
+ if (line.startsWith('@@') && currentFile) {
82
+ const hunkMatch = line.match(/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
83
+ if (hunkMatch) {
84
+ oldLineNum = parseInt(hunkMatch[1], 10);
85
+ newLineNum = parseInt(hunkMatch[2], 10);
86
+ inHunk = true;
87
+ }
88
+ continue;
89
+ }
90
+ // Skip --- and +++ header lines
91
+ if (line.startsWith('---') || line.startsWith('+++')) {
92
+ continue;
93
+ }
94
+ if (!inHunk || !currentFile)
95
+ continue;
96
+ // Added line
97
+ if (line.startsWith('+')) {
98
+ currentFile.additions++;
99
+ if (newLineNum > 0) {
100
+ currentFile.changedLines.push(newLineNum);
101
+ }
102
+ totalAdditions++;
103
+ newLineNum++;
104
+ continue;
105
+ }
106
+ // Deleted line
107
+ if (line.startsWith('-')) {
108
+ currentFile.deletions++;
109
+ totalDeletions++;
110
+ // Track the position in the new file for filtering context
111
+ if (newLineNum > 0) {
112
+ currentFile.changedLines.push(newLineNum);
113
+ }
114
+ oldLineNum++;
115
+ continue;
116
+ }
117
+ // Context line (space prefix)
118
+ if (line.startsWith(' ') || line === '') {
119
+ newLineNum++;
120
+ oldLineNum++;
121
+ continue;
122
+ }
123
+ }
124
+ // Save last file
125
+ if (currentFile) {
126
+ files.push(currentFile);
127
+ }
128
+ // Deduplicate changedLines for each file
129
+ for (const file of files) {
130
+ file.changedLines = [...new Set(file.changedLines)].sort((a, b) => a - b);
131
+ }
132
+ return { files, totalAdditions, totalDeletions };
133
+ }
134
+ // ─── Name-Status Parser ────────────────────────────────────────────
135
+ /**
136
+ * Parse `git diff --name-status` output into DiffFile array.
137
+ *
138
+ * Each line is in format: `STATUS\tFILENAME` or `STATUS\tOLD\tNEW` (for renames).
139
+ *
140
+ * Status codes:
141
+ * - A: Added
142
+ * - M: Modified
143
+ * - D: Deleted
144
+ * - R: Renamed (with similarity percentage, e.g. R100)
145
+ * - C: Copied
146
+ *
147
+ * @param output - Raw `git diff --name-status` output
148
+ * @returns Array of DiffFile (without line-level info)
149
+ */
150
+ export function parseNameStatus(output) {
151
+ const files = [];
152
+ if (!output || !output.trim()) {
153
+ return files;
154
+ }
155
+ const lines = output.trim().split('\n');
156
+ for (const line of lines) {
157
+ const trimmed = line.trim();
158
+ if (!trimmed)
159
+ continue;
160
+ // Split by tab
161
+ const parts = trimmed.split('\t');
162
+ if (parts.length < 2)
163
+ continue;
164
+ const statusCode = parts[0].charAt(0).toUpperCase();
165
+ let path;
166
+ let status;
167
+ switch (statusCode) {
168
+ case 'A':
169
+ status = 'added';
170
+ path = parts[1];
171
+ break;
172
+ case 'M':
173
+ status = 'modified';
174
+ path = parts[1];
175
+ break;
176
+ case 'D':
177
+ status = 'deleted';
178
+ path = parts[1];
179
+ break;
180
+ case 'R':
181
+ status = 'renamed';
182
+ path = parts.length >= 3 ? parts[2] : parts[1]; // new path
183
+ break;
184
+ case 'C':
185
+ status = 'added'; // Treat copies as additions
186
+ path = parts.length >= 3 ? parts[2] : parts[1];
187
+ break;
188
+ default:
189
+ // Unknown status, treat as modified
190
+ status = 'modified';
191
+ path = parts[1];
192
+ }
193
+ files.push({
194
+ path,
195
+ status,
196
+ additions: 0,
197
+ deletions: 0,
198
+ changedLines: [], // Not available from name-status
199
+ });
200
+ }
201
+ return files;
202
+ }
203
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/diff/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * English Message Catalog
3
+ *
4
+ * All user-visible strings in English.
5
+ *
6
+ * @since 0.4.0
7
+ */
8
+ import type { Locale } from './types.js';
9
+ export declare const EN_MESSAGES: Record<string, string>;
10
+ /**
11
+ * Type for the message catalog.
12
+ */
13
+ export type MessageCatalog = typeof EN_MESSAGES;
14
+ /**
15
+ * Get the locale identifier for English.
16
+ */
17
+ export declare const EN_LOCALE: Locale;
18
+ //# sourceMappingURL=en.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmF9C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,WAAW,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,MAAa,CAAC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * English Message Catalog
3
+ *
4
+ * All user-visible strings in English.
5
+ *
6
+ * @since 0.4.0
7
+ */
8
+ export const EN_MESSAGES = {
9
+ // ─── Scan Messages ────────────────────────────────────────────
10
+ 'scan.start': 'Scanning {count} files...',
11
+ 'scan.complete': 'Scan complete in {duration}ms',
12
+ 'scan.noFiles': 'No files to scan',
13
+ // ─── Detector Messages ────────────────────────────────────────
14
+ 'detector.hallucinated-import': 'Hallucinated import: package "{package}" does not exist in {registry}',
15
+ 'detector.hallucinated-import.offline': 'Cannot verify import "{package}" (offline mode)',
16
+ 'detector.hallucinated-import.phantom-function': 'Function "{name}" is called but not declared or imported in this file',
17
+ 'detector.stale-api': 'Deprecated API: "{api}" β€” use "{replacement}" instead',
18
+ 'detector.stale-api.since': 'Deprecated since {since}: "{api}" β€” use "{replacement}" instead',
19
+ 'detector.context-coherence.unused': 'Unused non-exported {kind} "{name}" (possible AI context loss)',
20
+ 'detector.context-coherence.duplicate': 'Duplicate {kind} name "{name}" in same scope',
21
+ 'detector.context-coherence.inconsistent-import': 'Inconsistent imports: "{module1}" and "{module2}" serve similar purpose',
22
+ 'detector.context-coherence.undefined-ref': 'Reference to undefined symbol "{name}"',
23
+ 'detector.over-engineering.params': 'Function "{name}" has {count} parameters (max recommended: {max})',
24
+ 'detector.over-engineering.nesting': 'Nesting depth {depth} exceeds maximum {max}',
25
+ 'detector.over-engineering.loc': 'Function "{name}" has {lines} lines (max recommended: {max})',
26
+ 'detector.over-engineering.complexity': 'Cyclomatic complexity {value} exceeds maximum {max}',
27
+ 'detector.security.hardcoded-secret': 'Possible hardcoded secret: {pattern}',
28
+ 'detector.security.eval': 'Dangerous eval/exec usage',
29
+ 'detector.security.weak-crypto': 'Weak cryptographic algorithm: {algo}',
30
+ 'detector.security.sql-injection': 'Possible SQL injection via string concatenation',
31
+ 'detector.incomplete.empty-catch': 'Empty catch block β€” potential error swallowing',
32
+ 'detector.incomplete.stub': 'Stub implementation found: {indicator}',
33
+ // ─── Scoring ──────────────────────────────────────────────────
34
+ 'score.grade.excellent': 'Excellent',
35
+ 'score.grade.good': 'Good',
36
+ 'score.grade.fair': 'Fair',
37
+ 'score.grade.poor': 'Poor',
38
+ 'score.grade.fail': 'Fail',
39
+ 'score.dimension.faithfulness': 'AI Faithfulness',
40
+ 'score.dimension.freshness': 'Code Freshness',
41
+ 'score.dimension.coherence': 'Context Coherence',
42
+ 'score.dimension.quality': 'Implementation Quality',
43
+ // ─── SLA ──────────────────────────────────────────────────────
44
+ 'sla.L1': 'L1 Fast β€” Structural analysis only',
45
+ 'sla.L2': 'L2 Standard β€” Structural + Embedding + Local AI',
46
+ 'sla.L3': 'L3 Deep β€” Structural + Embedding + Remote AI',
47
+ // ─── Report ───────────────────────────────────────────────────
48
+ 'report.title': 'Open Code Review Report',
49
+ 'report.summary': '{total} issues found in {files} files',
50
+ 'report.noIssues': 'No issues found',
51
+ 'report.generated': 'Generated by Open Code Review v{version}',
52
+ 'report.project': 'Project: {name}',
53
+ 'report.date': 'Date: {date}',
54
+ 'report.score': 'Overall Score: {score}/100',
55
+ 'report.grade': 'Grade: {grade}',
56
+ 'report.filesScanned': 'Files Scanned: {count}',
57
+ 'report.passed': 'Passed: {count}',
58
+ 'report.failed': 'Failed: {count}',
59
+ 'report.threshold': 'Threshold: {threshold}',
60
+ 'report.status.passed': 'PASSED',
61
+ 'report.status.failed': 'FAILED',
62
+ 'report.duration': 'Duration: {duration}',
63
+ 'report.languages': 'Languages: {languages}',
64
+ 'report.dimensions': 'Scoring Dimensions',
65
+ 'report.issues': 'Issues',
66
+ 'report.issues.found': '{count} issues found',
67
+ 'report.more': '... and {count} more',
68
+ // ─── CLI ──────────────────────────────────────────────────────
69
+ 'cli.scanning': 'Scanning...',
70
+ 'cli.done': 'Done!',
71
+ 'cli.error': 'Error: {message}',
72
+ 'cli.noFiles': 'No files matched the scan patterns',
73
+ 'cli.offline': 'Registry verification unavailable (offline). Package existence checks skipped.',
74
+ // ─── Errors ───────────────────────────────────────────────────
75
+ 'error.parser.init': 'Failed to initialize parser: {message}',
76
+ 'error.registry.verify': 'Failed to verify package "{package}": {message}',
77
+ 'error.config.load': 'Failed to load configuration: {message}',
78
+ };
79
+ /**
80
+ * Get the locale identifier for English.
81
+ */
82
+ export const EN_LOCALE = 'en';
83
+ //# sourceMappingURL=en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,iEAAiE;IAEjE,YAAY,EAAE,2BAA2B;IACzC,eAAe,EAAE,+BAA+B;IAChD,cAAc,EAAE,kBAAkB;IAElC,iEAAiE;IAEjE,8BAA8B,EAAE,uEAAuE;IACvG,sCAAsC,EAAE,iDAAiD;IACzF,+CAA+C,EAAE,uEAAuE;IACxH,oBAAoB,EAAE,uDAAuD;IAC7E,0BAA0B,EAAE,iEAAiE;IAC7F,mCAAmC,EAAE,gEAAgE;IACrG,sCAAsC,EAAE,8CAA8C;IACtF,gDAAgD,EAAE,yEAAyE;IAC3H,0CAA0C,EAAE,wCAAwC;IACpF,kCAAkC,EAAE,mEAAmE;IACvG,mCAAmC,EAAE,6CAA6C;IAClF,+BAA+B,EAAE,8DAA8D;IAC/F,sCAAsC,EAAE,qDAAqD;IAC7F,oCAAoC,EAAE,sCAAsC;IAC5E,wBAAwB,EAAE,2BAA2B;IACrD,+BAA+B,EAAE,sCAAsC;IACvE,iCAAiC,EAAE,iDAAiD;IACpF,iCAAiC,EAAE,gDAAgD;IACnF,0BAA0B,EAAE,wCAAwC;IAEpE,iEAAiE;IAEjE,uBAAuB,EAAE,WAAW;IACpC,kBAAkB,EAAE,MAAM;IAC1B,kBAAkB,EAAE,MAAM;IAC1B,kBAAkB,EAAE,MAAM;IAC1B,kBAAkB,EAAE,MAAM;IAC1B,8BAA8B,EAAE,iBAAiB;IACjD,2BAA2B,EAAE,gBAAgB;IAC7C,2BAA2B,EAAE,mBAAmB;IAChD,yBAAyB,EAAE,wBAAwB;IAEnD,iEAAiE;IAEjE,QAAQ,EAAE,oCAAoC;IAC9C,QAAQ,EAAE,iDAAiD;IAC3D,QAAQ,EAAE,8CAA8C;IAExD,iEAAiE;IAEjE,cAAc,EAAE,yBAAyB;IACzC,gBAAgB,EAAE,uCAAuC;IACzD,iBAAiB,EAAE,iBAAiB;IACpC,kBAAkB,EAAE,0CAA0C;IAC9D,gBAAgB,EAAE,iBAAiB;IACnC,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,4BAA4B;IAC5C,cAAc,EAAE,gBAAgB;IAChC,qBAAqB,EAAE,wBAAwB;IAC/C,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,wBAAwB;IAC5C,sBAAsB,EAAE,QAAQ;IAChC,sBAAsB,EAAE,QAAQ;IAChC,iBAAiB,EAAE,sBAAsB;IACzC,kBAAkB,EAAE,wBAAwB;IAC5C,mBAAmB,EAAE,oBAAoB;IACzC,eAAe,EAAE,QAAQ;IACzB,qBAAqB,EAAE,sBAAsB;IAC7C,aAAa,EAAE,sBAAsB;IAErC,iEAAiE;IAEjE,cAAc,EAAE,aAAa;IAC7B,UAAU,EAAE,OAAO;IACnB,WAAW,EAAE,kBAAkB;IAC/B,aAAa,EAAE,oCAAoC;IACnD,aAAa,EAAE,gFAAgF;IAE/F,iEAAiE;IAEjE,mBAAmB,EAAE,wCAAwC;IAC7D,uBAAuB,EAAE,iDAAiD;IAC1E,mBAAmB,EAAE,yCAAyC;CAC/D,CAAC;AAOF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAW,IAAI,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * i18n Module β€” Internationalization Framework
3
+ *
4
+ * Provides translation services for all user-visible strings.
5
+ * Supports English (en) and Chinese (zh) locales.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ export type { Locale, I18nProvider } from './types.js';
10
+ export { DefaultI18nProvider, createI18n } from './provider.js';
11
+ export { EN_MESSAGES, EN_LOCALE } from './en.js';
12
+ export { ZH_MESSAGES, ZH_LOCALE } from './zh.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGvD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * i18n Module β€” Internationalization Framework
3
+ *
4
+ * Provides translation services for all user-visible strings.
5
+ * Supports English (en) and Chinese (zh) locales.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ // Provider
10
+ export { DefaultI18nProvider, createI18n } from './provider.js';
11
+ // Message catalogs (for testing or direct access)
12
+ export { EN_MESSAGES, EN_LOCALE } from './en.js';
13
+ export { ZH_MESSAGES, ZH_LOCALE } from './zh.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,WAAW;AACX,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhE,kDAAkD;AAClD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Default i18n Provider Implementation
3
+ *
4
+ * Provides translation services with parameter interpolation.
5
+ * Supports English (en) and Chinese (zh) locales.
6
+ *
7
+ * @since 0.4.0
8
+ */
9
+ import type { Locale, I18nProvider } from './types.js';
10
+ /**
11
+ * Default I18n Provider
12
+ *
13
+ * Provides translation with the following features:
14
+ * - English and Chinese locales
15
+ * - Parameter interpolation with {param} syntax
16
+ * - Fallback to key if translation not found
17
+ * - Locale switching at runtime
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const i18n = new DefaultI18nProvider('en');
22
+ * console.log(i18n.t('scan.start', { count: 5 }));
23
+ * // Output: "Scanning 5 files..."
24
+ *
25
+ * i18n.setLocale('zh');
26
+ * console.log(i18n.t('scan.start', { count: 5 }));
27
+ * // Output: "ζ­£εœ¨ζ‰«ζ 5 δΈͺζ–‡δ»Ά..."
28
+ * ```
29
+ */
30
+ export declare class DefaultI18nProvider implements I18nProvider {
31
+ private _locale;
32
+ private catalogs;
33
+ constructor(locale?: Locale);
34
+ get locale(): Locale;
35
+ setLocale(locale: Locale): void;
36
+ t(key: string, params?: Record<string, string | number>): string;
37
+ /**
38
+ * Check if a key exists in the current locale's catalog.
39
+ */
40
+ has(key: string): boolean;
41
+ /**
42
+ * Get all keys available in the current locale.
43
+ */
44
+ keys(): string[];
45
+ /**
46
+ * Get a raw message without interpolation.
47
+ */
48
+ raw(key: string): string | undefined;
49
+ }
50
+ /**
51
+ * Create a new I18n provider with the specified locale.
52
+ */
53
+ export declare function createI18n(locale?: Locale): I18nProvider;
54
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/i18n/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAIvD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAsC;gBAE1C,MAAM,CAAC,EAAE,MAAM;IAU3B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM;IAgBhE;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKzB;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAKhB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAIrC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAExD"}