reviewflow 3.6.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (598) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/config/projectConfig.d.ts +2 -0
  3. package/dist/config/projectConfig.d.ts.map +1 -1
  4. package/dist/config/projectConfig.js +17 -0
  5. package/dist/config/projectConfig.js.map +1 -1
  6. package/dist/entities/backfill/backfillProgress.d.ts +7 -0
  7. package/dist/entities/backfill/backfillProgress.d.ts.map +1 -0
  8. package/dist/entities/backfill/backfillProgress.js +2 -0
  9. package/dist/entities/backfill/backfillProgress.js.map +1 -0
  10. package/dist/entities/cleanup/retentionPolicy.valueObject.d.ts +8 -0
  11. package/dist/entities/cleanup/retentionPolicy.valueObject.d.ts.map +1 -0
  12. package/dist/entities/cleanup/retentionPolicy.valueObject.js +21 -0
  13. package/dist/entities/cleanup/retentionPolicy.valueObject.js.map +1 -0
  14. package/dist/entities/diffStats/diffStats.d.ts +6 -0
  15. package/dist/entities/diffStats/diffStats.d.ts.map +1 -0
  16. package/dist/entities/diffStats/diffStats.js +2 -0
  17. package/dist/entities/diffStats/diffStats.js.map +1 -0
  18. package/dist/entities/diffStats/diffStatsFetch.gateway.d.ts +5 -0
  19. package/dist/entities/diffStats/diffStatsFetch.gateway.d.ts.map +1 -0
  20. package/dist/entities/diffStats/diffStatsFetch.gateway.js +2 -0
  21. package/dist/entities/diffStats/diffStatsFetch.gateway.js.map +1 -0
  22. package/dist/entities/insight/aiInsight.d.ts +6 -0
  23. package/dist/entities/insight/aiInsight.d.ts.map +1 -0
  24. package/dist/entities/insight/aiInsight.js +2 -0
  25. package/dist/entities/insight/aiInsight.js.map +1 -0
  26. package/dist/entities/insight/aiInsight.schema.d.ts +55 -0
  27. package/dist/entities/insight/aiInsight.schema.d.ts.map +1 -0
  28. package/dist/entities/insight/aiInsight.schema.js +25 -0
  29. package/dist/entities/insight/aiInsight.schema.js.map +1 -0
  30. package/dist/entities/insight/developerInsight.d.ts +8 -0
  31. package/dist/entities/insight/developerInsight.d.ts.map +1 -0
  32. package/dist/entities/insight/developerInsight.guard.d.ts +221 -0
  33. package/dist/entities/insight/developerInsight.guard.d.ts.map +1 -0
  34. package/dist/entities/insight/developerInsight.guard.js +13 -0
  35. package/dist/entities/insight/developerInsight.guard.js.map +1 -0
  36. package/dist/entities/insight/developerInsight.js +2 -0
  37. package/dist/entities/insight/developerInsight.js.map +1 -0
  38. package/dist/entities/insight/developerInsight.schema.d.ts +157 -0
  39. package/dist/entities/insight/developerInsight.schema.d.ts.map +1 -0
  40. package/dist/entities/insight/developerInsight.schema.js +43 -0
  41. package/dist/entities/insight/developerInsight.schema.js.map +1 -0
  42. package/dist/entities/insight/developerTitle.d.ts +12 -0
  43. package/dist/entities/insight/developerTitle.d.ts.map +1 -0
  44. package/dist/entities/insight/developerTitle.js +11 -0
  45. package/dist/entities/insight/developerTitle.js.map +1 -0
  46. package/dist/entities/insight/insightCategory.d.ts +10 -0
  47. package/dist/entities/insight/insightCategory.d.ts.map +1 -0
  48. package/dist/entities/insight/insightCategory.js +4 -0
  49. package/dist/entities/insight/insightCategory.js.map +1 -0
  50. package/dist/entities/insight/insightTrend.d.ts +9 -0
  51. package/dist/entities/insight/insightTrend.d.ts.map +1 -0
  52. package/dist/entities/insight/insightTrend.js +4 -0
  53. package/dist/entities/insight/insightTrend.js.map +1 -0
  54. package/dist/entities/insight/insights.gateway.d.ts +6 -0
  55. package/dist/entities/insight/insights.gateway.d.ts.map +1 -0
  56. package/dist/entities/insight/insights.gateway.js +2 -0
  57. package/dist/entities/insight/insights.gateway.js.map +1 -0
  58. package/dist/entities/insight/persistedInsightsData.d.ts +5 -0
  59. package/dist/entities/insight/persistedInsightsData.d.ts.map +1 -0
  60. package/dist/entities/insight/persistedInsightsData.guard.d.ts +271 -0
  61. package/dist/entities/insight/persistedInsightsData.guard.d.ts.map +1 -0
  62. package/dist/entities/insight/persistedInsightsData.guard.js +13 -0
  63. package/dist/entities/insight/persistedInsightsData.guard.js.map +1 -0
  64. package/dist/entities/insight/persistedInsightsData.js +2 -0
  65. package/dist/entities/insight/persistedInsightsData.js.map +1 -0
  66. package/dist/entities/insight/persistedInsightsData.schema.d.ts +84 -0
  67. package/dist/entities/insight/persistedInsightsData.schema.d.ts.map +1 -0
  68. package/dist/entities/insight/persistedInsightsData.schema.js +40 -0
  69. package/dist/entities/insight/persistedInsightsData.schema.js.map +1 -0
  70. package/dist/entities/insight/teamInsight.d.ts +5 -0
  71. package/dist/entities/insight/teamInsight.d.ts.map +1 -0
  72. package/dist/entities/insight/teamInsight.guard.d.ts +71 -0
  73. package/dist/entities/insight/teamInsight.guard.d.ts.map +1 -0
  74. package/dist/entities/insight/teamInsight.guard.js +13 -0
  75. package/dist/entities/insight/teamInsight.guard.js.map +1 -0
  76. package/dist/entities/insight/teamInsight.js +2 -0
  77. package/dist/entities/insight/teamInsight.js.map +1 -0
  78. package/dist/entities/insight/teamInsight.schema.d.ts +31 -0
  79. package/dist/entities/insight/teamInsight.schema.d.ts.map +1 -0
  80. package/dist/entities/insight/teamInsight.schema.js +17 -0
  81. package/dist/entities/insight/teamInsight.schema.js.map +1 -0
  82. package/dist/entities/packageVersion/packageVersion.d.ts +21 -0
  83. package/dist/entities/packageVersion/packageVersion.d.ts.map +1 -0
  84. package/dist/entities/packageVersion/packageVersion.gateway.d.ts +4 -0
  85. package/dist/entities/packageVersion/packageVersion.gateway.d.ts.map +1 -0
  86. package/dist/entities/packageVersion/packageVersion.gateway.js +2 -0
  87. package/dist/entities/packageVersion/packageVersion.gateway.js.map +1 -0
  88. package/dist/entities/packageVersion/packageVersion.guard.d.ts +7 -0
  89. package/dist/entities/packageVersion/packageVersion.guard.d.ts.map +1 -0
  90. package/dist/entities/packageVersion/packageVersion.guard.js +13 -0
  91. package/dist/entities/packageVersion/packageVersion.guard.js.map +1 -0
  92. package/dist/entities/packageVersion/packageVersion.js +2 -0
  93. package/dist/entities/packageVersion/packageVersion.js.map +1 -0
  94. package/dist/entities/packageVersion/packageVersion.schema.d.ts +12 -0
  95. package/dist/entities/packageVersion/packageVersion.schema.d.ts.map +1 -0
  96. package/dist/entities/packageVersion/packageVersion.schema.js +11 -0
  97. package/dist/entities/packageVersion/packageVersion.schema.js.map +1 -0
  98. package/dist/entities/packageVersion/selfUpdateCommand.gateway.d.ts +9 -0
  99. package/dist/entities/packageVersion/selfUpdateCommand.gateway.d.ts.map +1 -0
  100. package/dist/entities/packageVersion/selfUpdateCommand.gateway.js +2 -0
  101. package/dist/entities/packageVersion/selfUpdateCommand.gateway.js.map +1 -0
  102. package/dist/entities/packageVersion/versionCache.gateway.d.ts +7 -0
  103. package/dist/entities/packageVersion/versionCache.gateway.d.ts.map +1 -0
  104. package/dist/entities/packageVersion/versionCache.gateway.js +2 -0
  105. package/dist/entities/packageVersion/versionCache.gateway.js.map +1 -0
  106. package/dist/entities/review/reviewFile.gateway.d.ts +18 -0
  107. package/dist/entities/review/reviewFile.gateway.d.ts.map +1 -0
  108. package/dist/entities/review/reviewFile.gateway.js +2 -0
  109. package/dist/entities/review/reviewFile.gateway.js.map +1 -0
  110. package/dist/entities/stats/projectStats.d.ts +39 -0
  111. package/dist/entities/stats/projectStats.d.ts.map +1 -0
  112. package/dist/entities/stats/projectStats.js +2 -0
  113. package/dist/entities/stats/projectStats.js.map +1 -0
  114. package/dist/entities/stats/recalculateBody.guard.d.ts +11 -0
  115. package/dist/entities/stats/recalculateBody.guard.d.ts.map +1 -0
  116. package/dist/entities/stats/recalculateBody.guard.js +9 -0
  117. package/dist/entities/stats/recalculateBody.guard.js.map +1 -0
  118. package/dist/entities/stats/stats.gateway.d.ts +7 -0
  119. package/dist/entities/stats/stats.gateway.d.ts.map +1 -0
  120. package/dist/entities/stats/stats.gateway.js +2 -0
  121. package/dist/entities/stats/stats.gateway.js.map +1 -0
  122. package/dist/entities/tracking/reviewEvent.d.ts +2 -0
  123. package/dist/entities/tracking/reviewEvent.d.ts.map +1 -1
  124. package/dist/entities/tracking/reviewRequestTracking.gateway.d.ts +19 -0
  125. package/dist/entities/tracking/reviewRequestTracking.gateway.d.ts.map +1 -0
  126. package/dist/entities/tracking/reviewRequestTracking.gateway.js +2 -0
  127. package/dist/entities/tracking/reviewRequestTracking.gateway.js.map +1 -0
  128. package/dist/frameworks/claude/claudeInsightsInvoker.d.ts +3 -0
  129. package/dist/frameworks/claude/claudeInsightsInvoker.d.ts.map +1 -0
  130. package/dist/frameworks/claude/claudeInsightsInvoker.js +58 -0
  131. package/dist/frameworks/claude/claudeInsightsInvoker.js.map +1 -0
  132. package/dist/frameworks/claude/claudeInvoker.d.ts.map +1 -1
  133. package/dist/frameworks/claude/claudeInvoker.js +15 -1
  134. package/dist/frameworks/claude/claudeInvoker.js.map +1 -1
  135. package/dist/frameworks/scheduler/cleanupScheduler.d.ts +16 -0
  136. package/dist/frameworks/scheduler/cleanupScheduler.d.ts.map +1 -0
  137. package/dist/frameworks/scheduler/cleanupScheduler.js +35 -0
  138. package/dist/frameworks/scheduler/cleanupScheduler.js.map +1 -0
  139. package/dist/interface-adapters/controllers/http/cleanup.routes.d.ts +16 -0
  140. package/dist/interface-adapters/controllers/http/cleanup.routes.d.ts.map +1 -0
  141. package/dist/interface-adapters/controllers/http/cleanup.routes.js +44 -0
  142. package/dist/interface-adapters/controllers/http/cleanup.routes.js.map +1 -0
  143. package/dist/interface-adapters/controllers/http/health.routes.d.ts +3 -1
  144. package/dist/interface-adapters/controllers/http/health.routes.d.ts.map +1 -1
  145. package/dist/interface-adapters/controllers/http/health.routes.js +5 -1
  146. package/dist/interface-adapters/controllers/http/health.routes.js.map +1 -1
  147. package/dist/interface-adapters/controllers/http/insights.routes.d.ts +20 -0
  148. package/dist/interface-adapters/controllers/http/insights.routes.d.ts.map +1 -0
  149. package/dist/interface-adapters/controllers/http/insights.routes.js +73 -0
  150. package/dist/interface-adapters/controllers/http/insights.routes.js.map +1 -0
  151. package/dist/interface-adapters/controllers/http/mrTrackingAdvanced.routes.d.ts.map +1 -1
  152. package/dist/interface-adapters/controllers/http/mrTrackingAdvanced.routes.js +13 -2
  153. package/dist/interface-adapters/controllers/http/mrTrackingAdvanced.routes.js.map +1 -1
  154. package/dist/interface-adapters/controllers/http/settings.routes.d.ts.map +1 -1
  155. package/dist/interface-adapters/controllers/http/settings.routes.js +3 -0
  156. package/dist/interface-adapters/controllers/http/settings.routes.js.map +1 -1
  157. package/dist/interface-adapters/controllers/http/stats.routes.d.ts +20 -6
  158. package/dist/interface-adapters/controllers/http/stats.routes.d.ts.map +1 -1
  159. package/dist/interface-adapters/controllers/http/stats.routes.js +35 -2
  160. package/dist/interface-adapters/controllers/http/stats.routes.js.map +1 -1
  161. package/dist/interface-adapters/controllers/http/version.routes.d.ts +19 -0
  162. package/dist/interface-adapters/controllers/http/version.routes.d.ts.map +1 -0
  163. package/dist/interface-adapters/controllers/http/version.routes.js +21 -0
  164. package/dist/interface-adapters/controllers/http/version.routes.js.map +1 -0
  165. package/dist/interface-adapters/controllers/webhook/github.controller.d.ts +2 -0
  166. package/dist/interface-adapters/controllers/webhook/github.controller.d.ts.map +1 -1
  167. package/dist/interface-adapters/controllers/webhook/github.controller.js +9 -3
  168. package/dist/interface-adapters/controllers/webhook/github.controller.js.map +1 -1
  169. package/dist/interface-adapters/controllers/webhook/gitlab.controller.d.ts +2 -0
  170. package/dist/interface-adapters/controllers/webhook/gitlab.controller.d.ts.map +1 -1
  171. package/dist/interface-adapters/controllers/webhook/gitlab.controller.js +17 -5
  172. package/dist/interface-adapters/controllers/webhook/gitlab.controller.js.map +1 -1
  173. package/dist/interface-adapters/gateways/diffStatsFetch.github.gateway.d.ts +10 -0
  174. package/dist/interface-adapters/gateways/diffStatsFetch.github.gateway.d.ts.map +1 -0
  175. package/dist/interface-adapters/gateways/diffStatsFetch.github.gateway.js +26 -0
  176. package/dist/interface-adapters/gateways/diffStatsFetch.github.gateway.js.map +1 -0
  177. package/dist/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.d.ts +10 -0
  178. package/dist/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.d.ts.map +1 -0
  179. package/dist/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.js +28 -0
  180. package/dist/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.js.map +1 -0
  181. package/dist/interface-adapters/gateways/fileSystem/insights.fileSystem.d.ts +7 -0
  182. package/dist/interface-adapters/gateways/fileSystem/insights.fileSystem.d.ts.map +1 -0
  183. package/dist/interface-adapters/gateways/fileSystem/insights.fileSystem.js +33 -0
  184. package/dist/interface-adapters/gateways/fileSystem/insights.fileSystem.js.map +1 -0
  185. package/dist/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.d.ts +7 -0
  186. package/dist/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.d.ts.map +1 -0
  187. package/dist/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.js +47 -0
  188. package/dist/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.js.map +1 -0
  189. package/dist/interface-adapters/gateways/fileSystem/stats.fileSystem.d.ts +2 -2
  190. package/dist/interface-adapters/gateways/fileSystem/stats.fileSystem.d.ts.map +1 -1
  191. package/dist/interface-adapters/gateways/packageVersion.npm.gateway.d.ts +7 -0
  192. package/dist/interface-adapters/gateways/packageVersion.npm.gateway.d.ts.map +1 -0
  193. package/dist/interface-adapters/gateways/packageVersion.npm.gateway.js +25 -0
  194. package/dist/interface-adapters/gateways/packageVersion.npm.gateway.js.map +1 -0
  195. package/dist/interface-adapters/gateways/reviewFile.gateway.d.ts +1 -17
  196. package/dist/interface-adapters/gateways/reviewFile.gateway.d.ts.map +1 -1
  197. package/dist/interface-adapters/gateways/reviewLogFile.gateway.d.ts +12 -0
  198. package/dist/interface-adapters/gateways/reviewLogFile.gateway.d.ts.map +1 -0
  199. package/dist/interface-adapters/gateways/reviewLogFile.gateway.js +2 -0
  200. package/dist/interface-adapters/gateways/reviewLogFile.gateway.js.map +1 -0
  201. package/dist/interface-adapters/gateways/reviewRequestTracking.gateway.d.ts +1 -18
  202. package/dist/interface-adapters/gateways/reviewRequestTracking.gateway.d.ts.map +1 -1
  203. package/dist/interface-adapters/gateways/selfUpdate.cli.gateway.d.ts +20 -0
  204. package/dist/interface-adapters/gateways/selfUpdate.cli.gateway.d.ts.map +1 -0
  205. package/dist/interface-adapters/gateways/selfUpdate.cli.gateway.js +58 -0
  206. package/dist/interface-adapters/gateways/selfUpdate.cli.gateway.js.map +1 -0
  207. package/dist/interface-adapters/gateways/stats.gateway.d.ts +1 -6
  208. package/dist/interface-adapters/gateways/stats.gateway.d.ts.map +1 -1
  209. package/dist/interface-adapters/gateways/versionCache.memory.gateway.d.ts +12 -0
  210. package/dist/interface-adapters/gateways/versionCache.memory.gateway.d.ts.map +1 -0
  211. package/dist/interface-adapters/gateways/versionCache.memory.gateway.js +22 -0
  212. package/dist/interface-adapters/gateways/versionCache.memory.gateway.js.map +1 -0
  213. package/dist/interface-adapters/presenters/insights.presenter.d.ts +41 -0
  214. package/dist/interface-adapters/presenters/insights.presenter.d.ts.map +1 -0
  215. package/dist/interface-adapters/presenters/insights.presenter.js +36 -0
  216. package/dist/interface-adapters/presenters/insights.presenter.js.map +1 -0
  217. package/dist/interface-adapters/views/dashboard/index.html +599 -40
  218. package/dist/interface-adapters/views/dashboard/modules/cleanup.d.ts +10 -0
  219. package/dist/interface-adapters/views/dashboard/modules/cleanup.d.ts.map +1 -0
  220. package/dist/interface-adapters/views/dashboard/modules/cleanup.js +45 -0
  221. package/dist/interface-adapters/views/dashboard/modules/cleanup.js.map +1 -0
  222. package/dist/interface-adapters/views/dashboard/modules/collapsibleList.d.ts +13 -0
  223. package/dist/interface-adapters/views/dashboard/modules/collapsibleList.d.ts.map +1 -0
  224. package/dist/interface-adapters/views/dashboard/modules/collapsibleList.js +71 -0
  225. package/dist/interface-adapters/views/dashboard/modules/collapsibleList.js.map +1 -0
  226. package/dist/interface-adapters/views/dashboard/modules/developerSheet.d.ts +14 -0
  227. package/dist/interface-adapters/views/dashboard/modules/developerSheet.d.ts.map +1 -0
  228. package/dist/interface-adapters/views/dashboard/modules/developerSheet.js +359 -0
  229. package/dist/interface-adapters/views/dashboard/modules/developerSheet.js.map +1 -0
  230. package/dist/interface-adapters/views/dashboard/modules/i18n.d.ts.map +1 -1
  231. package/dist/interface-adapters/views/dashboard/modules/i18n.js +296 -0
  232. package/dist/interface-adapters/views/dashboard/modules/i18n.js.map +1 -1
  233. package/dist/interface-adapters/views/dashboard/modules/insightsReport.d.ts +7 -0
  234. package/dist/interface-adapters/views/dashboard/modules/insightsReport.d.ts.map +1 -0
  235. package/dist/interface-adapters/views/dashboard/modules/insightsReport.js +509 -0
  236. package/dist/interface-adapters/views/dashboard/modules/insightsReport.js.map +1 -0
  237. package/dist/interface-adapters/views/dashboard/modules/mrSheet.d.ts +25 -0
  238. package/dist/interface-adapters/views/dashboard/modules/mrSheet.d.ts.map +1 -0
  239. package/dist/interface-adapters/views/dashboard/modules/mrSheet.js +414 -0
  240. package/dist/interface-adapters/views/dashboard/modules/mrSheet.js.map +1 -0
  241. package/dist/interface-adapters/views/dashboard/modules/sharedViewHelpers.d.ts +40 -0
  242. package/dist/interface-adapters/views/dashboard/modules/sharedViewHelpers.d.ts.map +1 -0
  243. package/dist/interface-adapters/views/dashboard/modules/sharedViewHelpers.js +106 -0
  244. package/dist/interface-adapters/views/dashboard/modules/sharedViewHelpers.js.map +1 -0
  245. package/dist/interface-adapters/views/dashboard/modules/statsCharts.d.ts +35 -0
  246. package/dist/interface-adapters/views/dashboard/modules/statsCharts.d.ts.map +1 -0
  247. package/dist/interface-adapters/views/dashboard/modules/statsCharts.js +476 -0
  248. package/dist/interface-adapters/views/dashboard/modules/statsCharts.js.map +1 -0
  249. package/dist/interface-adapters/views/dashboard/modules/teamTab.d.ts +13 -0
  250. package/dist/interface-adapters/views/dashboard/modules/teamTab.d.ts.map +1 -0
  251. package/dist/interface-adapters/views/dashboard/modules/teamTab.js +296 -0
  252. package/dist/interface-adapters/views/dashboard/modules/teamTab.js.map +1 -0
  253. package/dist/interface-adapters/views/dashboard/modules/versionUpdate.d.ts +16 -0
  254. package/dist/interface-adapters/views/dashboard/modules/versionUpdate.d.ts.map +1 -0
  255. package/dist/interface-adapters/views/dashboard/modules/versionUpdate.js +54 -0
  256. package/dist/interface-adapters/views/dashboard/modules/versionUpdate.js.map +1 -0
  257. package/dist/interface-adapters/views/dashboard/styles.css +1906 -0
  258. package/dist/main/dependencies.d.ts +4 -0
  259. package/dist/main/dependencies.d.ts.map +1 -1
  260. package/dist/main/dependencies.js +4 -0
  261. package/dist/main/dependencies.js.map +1 -1
  262. package/dist/main/routes.d.ts.map +1 -1
  263. package/dist/main/routes.js +68 -2
  264. package/dist/main/routes.js.map +1 -1
  265. package/dist/main/server.d.ts.map +1 -1
  266. package/dist/main/server.js +8 -0
  267. package/dist/main/server.js.map +1 -1
  268. package/dist/main/websocket.d.ts +2 -0
  269. package/dist/main/websocket.d.ts.map +1 -1
  270. package/dist/main/websocket.js +13 -0
  271. package/dist/main/websocket.js.map +1 -1
  272. package/dist/services/statsService.d.ts +8 -32
  273. package/dist/services/statsService.d.ts.map +1 -1
  274. package/dist/services/statsService.js +60 -36
  275. package/dist/services/statsService.js.map +1 -1
  276. package/dist/shared/foundation/commandExecutor.d.ts +2 -0
  277. package/dist/shared/foundation/commandExecutor.d.ts.map +1 -0
  278. package/dist/shared/foundation/commandExecutor.js +2 -0
  279. package/dist/shared/foundation/commandExecutor.js.map +1 -0
  280. package/dist/tests/factories/developerInsight.factory.d.ts +6 -0
  281. package/dist/tests/factories/developerInsight.factory.d.ts.map +1 -0
  282. package/dist/tests/factories/developerInsight.factory.js +61 -0
  283. package/dist/tests/factories/developerInsight.factory.js.map +1 -0
  284. package/dist/tests/factories/diffStats.factory.d.ts +5 -0
  285. package/dist/tests/factories/diffStats.factory.d.ts.map +1 -0
  286. package/dist/tests/factories/diffStats.factory.js +11 -0
  287. package/dist/tests/factories/diffStats.factory.js.map +1 -0
  288. package/dist/tests/factories/packageVersion.factory.d.ts +7 -0
  289. package/dist/tests/factories/packageVersion.factory.d.ts.map +1 -0
  290. package/dist/tests/factories/packageVersion.factory.js +18 -0
  291. package/dist/tests/factories/packageVersion.factory.js.map +1 -0
  292. package/dist/tests/factories/persistedInsightsData.factory.d.ts +11 -0
  293. package/dist/tests/factories/persistedInsightsData.factory.d.ts.map +1 -0
  294. package/dist/tests/factories/persistedInsightsData.factory.js +41 -0
  295. package/dist/tests/factories/persistedInsightsData.factory.js.map +1 -0
  296. package/dist/tests/factories/projectStats.factory.d.ts +3 -1
  297. package/dist/tests/factories/projectStats.factory.d.ts.map +1 -1
  298. package/dist/tests/factories/projectStats.factory.js +17 -3
  299. package/dist/tests/factories/projectStats.factory.js.map +1 -1
  300. package/dist/tests/factories/teamInsight.factory.d.ts +6 -0
  301. package/dist/tests/factories/teamInsight.factory.d.ts.map +1 -0
  302. package/dist/tests/factories/teamInsight.factory.js +35 -0
  303. package/dist/tests/factories/teamInsight.factory.js.map +1 -0
  304. package/dist/tests/stubs/diffStatsFetch.stub.d.ts +11 -0
  305. package/dist/tests/stubs/diffStatsFetch.stub.d.ts.map +1 -0
  306. package/dist/tests/stubs/diffStatsFetch.stub.js +19 -0
  307. package/dist/tests/stubs/diffStatsFetch.stub.js.map +1 -0
  308. package/dist/tests/stubs/insights.stub.d.ts +9 -0
  309. package/dist/tests/stubs/insights.stub.d.ts.map +1 -0
  310. package/dist/tests/stubs/insights.stub.js +13 -0
  311. package/dist/tests/stubs/insights.stub.js.map +1 -0
  312. package/dist/tests/stubs/packageVersion.stub.d.ts +7 -0
  313. package/dist/tests/stubs/packageVersion.stub.d.ts.map +1 -0
  314. package/dist/tests/stubs/packageVersion.stub.js +10 -0
  315. package/dist/tests/stubs/packageVersion.stub.js.map +1 -0
  316. package/dist/tests/stubs/reviewFile.stub.d.ts +1 -1
  317. package/dist/tests/stubs/reviewFile.stub.d.ts.map +1 -1
  318. package/dist/tests/stubs/reviewLogFile.stub.d.ts +15 -0
  319. package/dist/tests/stubs/reviewLogFile.stub.d.ts.map +1 -0
  320. package/dist/tests/stubs/reviewLogFile.stub.js +35 -0
  321. package/dist/tests/stubs/reviewLogFile.stub.js.map +1 -0
  322. package/dist/tests/stubs/reviewRequestTracking.stub.d.ts +1 -1
  323. package/dist/tests/stubs/reviewRequestTracking.stub.d.ts.map +1 -1
  324. package/dist/tests/stubs/selfUpdate.stub.d.ts +14 -0
  325. package/dist/tests/stubs/selfUpdate.stub.d.ts.map +1 -0
  326. package/dist/tests/stubs/selfUpdate.stub.js +20 -0
  327. package/dist/tests/stubs/selfUpdate.stub.js.map +1 -0
  328. package/dist/tests/stubs/stats.stub.d.ts +2 -2
  329. package/dist/tests/stubs/stats.stub.d.ts.map +1 -1
  330. package/dist/tests/stubs/versionCache.stub.d.ts +11 -0
  331. package/dist/tests/stubs/versionCache.stub.d.ts.map +1 -0
  332. package/dist/tests/stubs/versionCache.stub.js +18 -0
  333. package/dist/tests/stubs/versionCache.stub.js.map +1 -0
  334. package/dist/tests/units/config/projectConfig.test.js +60 -1
  335. package/dist/tests/units/config/projectConfig.test.js.map +1 -1
  336. package/dist/tests/units/entities/backfill/backfillProgress.test.d.ts +2 -0
  337. package/dist/tests/units/entities/backfill/backfillProgress.test.d.ts.map +1 -0
  338. package/dist/tests/units/entities/backfill/backfillProgress.test.js +40 -0
  339. package/dist/tests/units/entities/backfill/backfillProgress.test.js.map +1 -0
  340. package/dist/tests/units/entities/cleanup/retentionPolicy.valueObject.test.d.ts +2 -0
  341. package/dist/tests/units/entities/cleanup/retentionPolicy.valueObject.test.d.ts.map +1 -0
  342. package/dist/tests/units/entities/cleanup/retentionPolicy.valueObject.test.js +47 -0
  343. package/dist/tests/units/entities/cleanup/retentionPolicy.valueObject.test.js.map +1 -0
  344. package/dist/tests/units/entities/diffStats/diffStats.test.d.ts +2 -0
  345. package/dist/tests/units/entities/diffStats/diffStats.test.d.ts.map +1 -0
  346. package/dist/tests/units/entities/diffStats/diffStats.test.js +27 -0
  347. package/dist/tests/units/entities/diffStats/diffStats.test.js.map +1 -0
  348. package/dist/tests/units/entities/insight/aiInsight.schema.test.d.ts +2 -0
  349. package/dist/tests/units/entities/insight/aiInsight.schema.test.d.ts.map +1 -0
  350. package/dist/tests/units/entities/insight/aiInsight.schema.test.js +123 -0
  351. package/dist/tests/units/entities/insight/aiInsight.schema.test.js.map +1 -0
  352. package/dist/tests/units/entities/insight/developerInsight.schema.test.d.ts +2 -0
  353. package/dist/tests/units/entities/insight/developerInsight.schema.test.d.ts.map +1 -0
  354. package/dist/tests/units/entities/insight/developerInsight.schema.test.js +140 -0
  355. package/dist/tests/units/entities/insight/developerInsight.schema.test.js.map +1 -0
  356. package/dist/tests/units/entities/insight/developerTitle.test.d.ts +2 -0
  357. package/dist/tests/units/entities/insight/developerTitle.test.d.ts.map +1 -0
  358. package/dist/tests/units/entities/insight/developerTitle.test.js +23 -0
  359. package/dist/tests/units/entities/insight/developerTitle.test.js.map +1 -0
  360. package/dist/tests/units/entities/insight/insightCategory.test.d.ts +2 -0
  361. package/dist/tests/units/entities/insight/insightCategory.test.d.ts.map +1 -0
  362. package/dist/tests/units/entities/insight/insightCategory.test.js +16 -0
  363. package/dist/tests/units/entities/insight/insightCategory.test.js.map +1 -0
  364. package/dist/tests/units/entities/insight/insightTrend.test.d.ts +2 -0
  365. package/dist/tests/units/entities/insight/insightTrend.test.d.ts.map +1 -0
  366. package/dist/tests/units/entities/insight/insightTrend.test.js +16 -0
  367. package/dist/tests/units/entities/insight/insightTrend.test.js.map +1 -0
  368. package/dist/tests/units/entities/insight/persistedInsightsData.schema.test.d.ts +2 -0
  369. package/dist/tests/units/entities/insight/persistedInsightsData.schema.test.d.ts.map +1 -0
  370. package/dist/tests/units/entities/insight/persistedInsightsData.schema.test.js +160 -0
  371. package/dist/tests/units/entities/insight/persistedInsightsData.schema.test.js.map +1 -0
  372. package/dist/tests/units/entities/insight/teamInsight.schema.test.d.ts +2 -0
  373. package/dist/tests/units/entities/insight/teamInsight.schema.test.d.ts.map +1 -0
  374. package/dist/tests/units/entities/insight/teamInsight.schema.test.js +57 -0
  375. package/dist/tests/units/entities/insight/teamInsight.schema.test.js.map +1 -0
  376. package/dist/tests/units/entities/packageVersion/packageVersion.test.d.ts +2 -0
  377. package/dist/tests/units/entities/packageVersion/packageVersion.test.d.ts.map +1 -0
  378. package/dist/tests/units/entities/packageVersion/packageVersion.test.js +154 -0
  379. package/dist/tests/units/entities/packageVersion/packageVersion.test.js.map +1 -0
  380. package/dist/tests/units/factories/packageVersion.factory.test.d.ts +2 -0
  381. package/dist/tests/units/factories/packageVersion.factory.test.d.ts.map +1 -0
  382. package/dist/tests/units/factories/packageVersion.factory.test.js +37 -0
  383. package/dist/tests/units/factories/packageVersion.factory.test.js.map +1 -0
  384. package/dist/tests/units/frameworks/scheduler/cleanupScheduler.test.d.ts +2 -0
  385. package/dist/tests/units/frameworks/scheduler/cleanupScheduler.test.d.ts.map +1 -0
  386. package/dist/tests/units/frameworks/scheduler/cleanupScheduler.test.js +74 -0
  387. package/dist/tests/units/frameworks/scheduler/cleanupScheduler.test.js.map +1 -0
  388. package/dist/tests/units/interface-adapters/controllers/http/cleanup.routes.test.d.ts +2 -0
  389. package/dist/tests/units/interface-adapters/controllers/http/cleanup.routes.test.d.ts.map +1 -0
  390. package/dist/tests/units/interface-adapters/controllers/http/cleanup.routes.test.js +62 -0
  391. package/dist/tests/units/interface-adapters/controllers/http/cleanup.routes.test.js.map +1 -0
  392. package/dist/tests/units/interface-adapters/controllers/http/health.routes.test.d.ts +2 -0
  393. package/dist/tests/units/interface-adapters/controllers/http/health.routes.test.d.ts.map +1 -0
  394. package/dist/tests/units/interface-adapters/controllers/http/health.routes.test.js +96 -0
  395. package/dist/tests/units/interface-adapters/controllers/http/health.routes.test.js.map +1 -0
  396. package/dist/tests/units/interface-adapters/controllers/http/insights.routes.test.d.ts +2 -0
  397. package/dist/tests/units/interface-adapters/controllers/http/insights.routes.test.d.ts.map +1 -0
  398. package/dist/tests/units/interface-adapters/controllers/http/insights.routes.test.js +390 -0
  399. package/dist/tests/units/interface-adapters/controllers/http/insights.routes.test.js.map +1 -0
  400. package/dist/tests/units/interface-adapters/controllers/http/settings.routes.test.d.ts +2 -0
  401. package/dist/tests/units/interface-adapters/controllers/http/settings.routes.test.d.ts.map +1 -0
  402. package/dist/tests/units/interface-adapters/controllers/http/settings.routes.test.js +25 -0
  403. package/dist/tests/units/interface-adapters/controllers/http/settings.routes.test.js.map +1 -0
  404. package/dist/tests/units/interface-adapters/controllers/http/statsRecalculate.routes.test.d.ts +2 -0
  405. package/dist/tests/units/interface-adapters/controllers/http/statsRecalculate.routes.test.d.ts.map +1 -0
  406. package/dist/tests/units/interface-adapters/controllers/http/statsRecalculate.routes.test.js +82 -0
  407. package/dist/tests/units/interface-adapters/controllers/http/statsRecalculate.routes.test.js.map +1 -0
  408. package/dist/tests/units/interface-adapters/controllers/http/version.routes.test.d.ts +2 -0
  409. package/dist/tests/units/interface-adapters/controllers/http/version.routes.test.d.ts.map +1 -0
  410. package/dist/tests/units/interface-adapters/controllers/http/version.routes.test.js +108 -0
  411. package/dist/tests/units/interface-adapters/controllers/http/version.routes.test.js.map +1 -0
  412. package/dist/tests/units/interface-adapters/controllers/webhook/github.controller.test.js +3 -0
  413. package/dist/tests/units/interface-adapters/controllers/webhook/github.controller.test.js.map +1 -1
  414. package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js +1 -0
  415. package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js.map +1 -1
  416. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.github.gateway.test.d.ts +2 -0
  417. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.github.gateway.test.d.ts.map +1 -0
  418. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.github.gateway.test.js +63 -0
  419. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.github.gateway.test.js.map +1 -0
  420. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.test.d.ts +2 -0
  421. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.test.d.ts.map +1 -0
  422. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.test.js +94 -0
  423. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.test.js.map +1 -0
  424. package/dist/tests/units/interface-adapters/gateways/insights.gateway.test.d.ts +2 -0
  425. package/dist/tests/units/interface-adapters/gateways/insights.gateway.test.d.ts.map +1 -0
  426. package/dist/tests/units/interface-adapters/gateways/insights.gateway.test.js +117 -0
  427. package/dist/tests/units/interface-adapters/gateways/insights.gateway.test.js.map +1 -0
  428. package/dist/tests/units/interface-adapters/gateways/packageVersion.npm.gateway.test.d.ts +2 -0
  429. package/dist/tests/units/interface-adapters/gateways/packageVersion.npm.gateway.test.d.ts.map +1 -0
  430. package/dist/tests/units/interface-adapters/gateways/packageVersion.npm.gateway.test.js +42 -0
  431. package/dist/tests/units/interface-adapters/gateways/packageVersion.npm.gateway.test.js.map +1 -0
  432. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.fileSystem.test.d.ts +2 -0
  433. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.fileSystem.test.d.ts.map +1 -0
  434. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.fileSystem.test.js +65 -0
  435. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.fileSystem.test.js.map +1 -0
  436. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.gateway.test.d.ts +2 -0
  437. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.gateway.test.d.ts.map +1 -0
  438. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.gateway.test.js +63 -0
  439. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.gateway.test.js.map +1 -0
  440. package/dist/tests/units/interface-adapters/gateways/reviewRequestTracking.gateway.test.js +2 -0
  441. package/dist/tests/units/interface-adapters/gateways/reviewRequestTracking.gateway.test.js.map +1 -1
  442. package/dist/tests/units/interface-adapters/gateways/selfUpdate.cli.gateway.test.d.ts +2 -0
  443. package/dist/tests/units/interface-adapters/gateways/selfUpdate.cli.gateway.test.d.ts.map +1 -0
  444. package/dist/tests/units/interface-adapters/gateways/selfUpdate.cli.gateway.test.js +101 -0
  445. package/dist/tests/units/interface-adapters/gateways/selfUpdate.cli.gateway.test.js.map +1 -0
  446. package/dist/tests/units/interface-adapters/gateways/versionCache.memory.gateway.test.d.ts +2 -0
  447. package/dist/tests/units/interface-adapters/gateways/versionCache.memory.gateway.test.d.ts.map +1 -0
  448. package/dist/tests/units/interface-adapters/gateways/versionCache.memory.gateway.test.js +38 -0
  449. package/dist/tests/units/interface-adapters/gateways/versionCache.memory.gateway.test.js.map +1 -0
  450. package/dist/tests/units/interface-adapters/presenters/insights.presenter.test.d.ts +2 -0
  451. package/dist/tests/units/interface-adapters/presenters/insights.presenter.test.d.ts.map +1 -0
  452. package/dist/tests/units/interface-adapters/presenters/insights.presenter.test.js +194 -0
  453. package/dist/tests/units/interface-adapters/presenters/insights.presenter.test.js.map +1 -0
  454. package/dist/tests/units/interface-adapters/views/dashboard/modules/developerSheet.test.d.ts +2 -0
  455. package/dist/tests/units/interface-adapters/views/dashboard/modules/developerSheet.test.d.ts.map +1 -0
  456. package/dist/tests/units/interface-adapters/views/dashboard/modules/developerSheet.test.js +224 -0
  457. package/dist/tests/units/interface-adapters/views/dashboard/modules/developerSheet.test.js.map +1 -0
  458. package/dist/tests/units/interface-adapters/views/dashboard/modules/i18n.test.js +29 -0
  459. package/dist/tests/units/interface-adapters/views/dashboard/modules/i18n.test.js.map +1 -1
  460. package/dist/tests/units/interface-adapters/views/dashboard/modules/insightsReport.test.d.ts +2 -0
  461. package/dist/tests/units/interface-adapters/views/dashboard/modules/insightsReport.test.d.ts.map +1 -0
  462. package/dist/tests/units/interface-adapters/views/dashboard/modules/insightsReport.test.js +326 -0
  463. package/dist/tests/units/interface-adapters/views/dashboard/modules/insightsReport.test.js.map +1 -0
  464. package/dist/tests/units/interface-adapters/views/dashboard/modules/teamTab.test.d.ts +2 -0
  465. package/dist/tests/units/interface-adapters/views/dashboard/modules/teamTab.test.d.ts.map +1 -0
  466. package/dist/tests/units/interface-adapters/views/dashboard/modules/teamTab.test.js +336 -0
  467. package/dist/tests/units/interface-adapters/views/dashboard/modules/teamTab.test.js.map +1 -0
  468. package/dist/tests/units/services/statsService.addReview.test.d.ts +2 -0
  469. package/dist/tests/units/services/statsService.addReview.test.d.ts.map +1 -0
  470. package/dist/tests/units/services/statsService.addReview.test.js +103 -0
  471. package/dist/tests/units/services/statsService.addReview.test.js.map +1 -0
  472. package/dist/tests/units/services/statsService.diffStats.test.d.ts +2 -0
  473. package/dist/tests/units/services/statsService.diffStats.test.d.ts.map +1 -0
  474. package/dist/tests/units/services/statsService.diffStats.test.js +61 -0
  475. package/dist/tests/units/services/statsService.diffStats.test.js.map +1 -0
  476. package/dist/tests/units/stubs/packageVersion.stub.test.d.ts +2 -0
  477. package/dist/tests/units/stubs/packageVersion.stub.test.d.ts.map +1 -0
  478. package/dist/tests/units/stubs/packageVersion.stub.test.js +20 -0
  479. package/dist/tests/units/stubs/packageVersion.stub.test.js.map +1 -0
  480. package/dist/tests/units/stubs/selfUpdate.stub.test.d.ts +2 -0
  481. package/dist/tests/units/stubs/selfUpdate.stub.test.d.ts.map +1 -0
  482. package/dist/tests/units/stubs/selfUpdate.stub.test.js +30 -0
  483. package/dist/tests/units/stubs/selfUpdate.stub.test.js.map +1 -0
  484. package/dist/tests/units/stubs/versionCache.stub.test.d.ts +2 -0
  485. package/dist/tests/units/stubs/versionCache.stub.test.d.ts.map +1 -0
  486. package/dist/tests/units/stubs/versionCache.stub.test.js +34 -0
  487. package/dist/tests/units/stubs/versionCache.stub.test.js.map +1 -0
  488. package/dist/tests/units/usecases/cleanup/cleanupExpiredReviews.usecase.test.d.ts +2 -0
  489. package/dist/tests/units/usecases/cleanup/cleanupExpiredReviews.usecase.test.d.ts.map +1 -0
  490. package/dist/tests/units/usecases/cleanup/cleanupExpiredReviews.usecase.test.js +83 -0
  491. package/dist/tests/units/usecases/cleanup/cleanupExpiredReviews.usecase.test.js.map +1 -0
  492. package/dist/tests/units/usecases/insights/buildAiInsightsPrompt.test.d.ts +2 -0
  493. package/dist/tests/units/usecases/insights/buildAiInsightsPrompt.test.d.ts.map +1 -0
  494. package/dist/tests/units/usecases/insights/buildAiInsightsPrompt.test.js +172 -0
  495. package/dist/tests/units/usecases/insights/buildAiInsightsPrompt.test.js.map +1 -0
  496. package/dist/tests/units/usecases/insights/computeDeveloperInsights.usecase.test.d.ts +2 -0
  497. package/dist/tests/units/usecases/insights/computeDeveloperInsights.usecase.test.d.ts.map +1 -0
  498. package/dist/tests/units/usecases/insights/computeDeveloperInsights.usecase.test.js +449 -0
  499. package/dist/tests/units/usecases/insights/computeDeveloperInsights.usecase.test.js.map +1 -0
  500. package/dist/tests/units/usecases/insights/computeInsightsWithPersistence.usecase.test.d.ts +2 -0
  501. package/dist/tests/units/usecases/insights/computeInsightsWithPersistence.usecase.test.d.ts.map +1 -0
  502. package/dist/tests/units/usecases/insights/computeInsightsWithPersistence.usecase.test.js +326 -0
  503. package/dist/tests/units/usecases/insights/computeInsightsWithPersistence.usecase.test.js.map +1 -0
  504. package/dist/tests/units/usecases/insights/computeTeamInsights.usecase.test.d.ts +2 -0
  505. package/dist/tests/units/usecases/insights/computeTeamInsights.usecase.test.d.ts.map +1 -0
  506. package/dist/tests/units/usecases/insights/computeTeamInsights.usecase.test.js +172 -0
  507. package/dist/tests/units/usecases/insights/computeTeamInsights.usecase.test.js.map +1 -0
  508. package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.d.ts +2 -0
  509. package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.d.ts.map +1 -0
  510. package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.js +253 -0
  511. package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.js.map +1 -0
  512. package/dist/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.d.ts +2 -0
  513. package/dist/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.d.ts.map +1 -0
  514. package/dist/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.js +160 -0
  515. package/dist/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.js.map +1 -0
  516. package/dist/tests/units/usecases/insights/insightLevelComputation.service.test.d.ts +2 -0
  517. package/dist/tests/units/usecases/insights/insightLevelComputation.service.test.d.ts.map +1 -0
  518. package/dist/tests/units/usecases/insights/insightLevelComputation.service.test.js +125 -0
  519. package/dist/tests/units/usecases/insights/insightLevelComputation.service.test.js.map +1 -0
  520. package/dist/tests/units/usecases/stats/backfillDiffStats.usecase.test.d.ts +2 -0
  521. package/dist/tests/units/usecases/stats/backfillDiffStats.usecase.test.d.ts.map +1 -0
  522. package/dist/tests/units/usecases/stats/backfillDiffStats.usecase.test.js +186 -0
  523. package/dist/tests/units/usecases/stats/backfillDiffStats.usecase.test.js.map +1 -0
  524. package/dist/tests/units/usecases/stats/recalculateProjectStats.usecase.test.d.ts +2 -0
  525. package/dist/tests/units/usecases/stats/recalculateProjectStats.usecase.test.d.ts.map +1 -0
  526. package/dist/tests/units/usecases/stats/recalculateProjectStats.usecase.test.js +130 -0
  527. package/dist/tests/units/usecases/stats/recalculateProjectStats.usecase.test.js.map +1 -0
  528. package/dist/tests/units/usecases/stats/recalculateWithBackfill.usecase.test.d.ts +2 -0
  529. package/dist/tests/units/usecases/stats/recalculateWithBackfill.usecase.test.d.ts.map +1 -0
  530. package/dist/tests/units/usecases/stats/recalculateWithBackfill.usecase.test.js +138 -0
  531. package/dist/tests/units/usecases/stats/recalculateWithBackfill.usecase.test.js.map +1 -0
  532. package/dist/tests/units/usecases/tracking/recordReviewCompletion.usecase.test.js +31 -2
  533. package/dist/tests/units/usecases/tracking/recordReviewCompletion.usecase.test.js.map +1 -1
  534. package/dist/tests/units/usecases/version/checkVersion.usecase.test.d.ts +2 -0
  535. package/dist/tests/units/usecases/version/checkVersion.usecase.test.d.ts.map +1 -0
  536. package/dist/tests/units/usecases/version/checkVersion.usecase.test.js +63 -0
  537. package/dist/tests/units/usecases/version/checkVersion.usecase.test.js.map +1 -0
  538. package/dist/tests/units/usecases/version/triggerSelfUpdate.usecase.test.d.ts +2 -0
  539. package/dist/tests/units/usecases/version/triggerSelfUpdate.usecase.test.d.ts.map +1 -0
  540. package/dist/tests/units/usecases/version/triggerSelfUpdate.usecase.test.js +26 -0
  541. package/dist/tests/units/usecases/version/triggerSelfUpdate.usecase.test.js.map +1 -0
  542. package/dist/usecases/cleanup/cleanupExpiredReviews.usecase.d.ts +13 -0
  543. package/dist/usecases/cleanup/cleanupExpiredReviews.usecase.d.ts.map +1 -0
  544. package/dist/usecases/cleanup/cleanupExpiredReviews.usecase.js +41 -0
  545. package/dist/usecases/cleanup/cleanupExpiredReviews.usecase.js.map +1 -0
  546. package/dist/usecases/insights/buildAiInsightsPrompt.d.ts +12 -0
  547. package/dist/usecases/insights/buildAiInsightsPrompt.d.ts.map +1 -0
  548. package/dist/usecases/insights/buildAiInsightsPrompt.js +220 -0
  549. package/dist/usecases/insights/buildAiInsightsPrompt.js.map +1 -0
  550. package/dist/usecases/insights/computeDeveloperInsights.usecase.d.ts +4 -0
  551. package/dist/usecases/insights/computeDeveloperInsights.usecase.d.ts.map +1 -0
  552. package/dist/usecases/insights/computeDeveloperInsights.usecase.js +226 -0
  553. package/dist/usecases/insights/computeDeveloperInsights.usecase.js.map +1 -0
  554. package/dist/usecases/insights/computeInsightsWithPersistence.usecase.d.ts +12 -0
  555. package/dist/usecases/insights/computeInsightsWithPersistence.usecase.d.ts.map +1 -0
  556. package/dist/usecases/insights/computeInsightsWithPersistence.usecase.js +340 -0
  557. package/dist/usecases/insights/computeInsightsWithPersistence.usecase.js.map +1 -0
  558. package/dist/usecases/insights/computeTeamInsights.usecase.d.ts +4 -0
  559. package/dist/usecases/insights/computeTeamInsights.usecase.d.ts.map +1 -0
  560. package/dist/usecases/insights/computeTeamInsights.usecase.js +111 -0
  561. package/dist/usecases/insights/computeTeamInsights.usecase.js.map +1 -0
  562. package/dist/usecases/insights/generateAiInsights.usecase.d.ts +27 -0
  563. package/dist/usecases/insights/generateAiInsights.usecase.d.ts.map +1 -0
  564. package/dist/usecases/insights/generateAiInsights.usecase.js +65 -0
  565. package/dist/usecases/insights/generateAiInsights.usecase.js.map +1 -0
  566. package/dist/usecases/insights/getInsightsWithAiStatus.usecase.d.ts +18 -0
  567. package/dist/usecases/insights/getInsightsWithAiStatus.usecase.d.ts.map +1 -0
  568. package/dist/usecases/insights/getInsightsWithAiStatus.usecase.js +56 -0
  569. package/dist/usecases/insights/getInsightsWithAiStatus.usecase.js.map +1 -0
  570. package/dist/usecases/insights/insightLevelComputation.service.d.ts +41 -0
  571. package/dist/usecases/insights/insightLevelComputation.service.d.ts.map +1 -0
  572. package/dist/usecases/insights/insightLevelComputation.service.js +313 -0
  573. package/dist/usecases/insights/insightLevelComputation.service.js.map +1 -0
  574. package/dist/usecases/stats/backfillDiffStats.usecase.d.ts +18 -0
  575. package/dist/usecases/stats/backfillDiffStats.usecase.d.ts.map +1 -0
  576. package/dist/usecases/stats/backfillDiffStats.usecase.js +43 -0
  577. package/dist/usecases/stats/backfillDiffStats.usecase.js.map +1 -0
  578. package/dist/usecases/stats/recalculateProjectStats.usecase.d.ts +7 -0
  579. package/dist/usecases/stats/recalculateProjectStats.usecase.d.ts.map +1 -0
  580. package/dist/usecases/stats/recalculateProjectStats.usecase.js +47 -0
  581. package/dist/usecases/stats/recalculateProjectStats.usecase.js.map +1 -0
  582. package/dist/usecases/stats/recalculateWithBackfill.usecase.d.ts +22 -0
  583. package/dist/usecases/stats/recalculateWithBackfill.usecase.d.ts.map +1 -0
  584. package/dist/usecases/stats/recalculateWithBackfill.usecase.js +33 -0
  585. package/dist/usecases/stats/recalculateWithBackfill.usecase.js.map +1 -0
  586. package/dist/usecases/tracking/recordReviewCompletion.usecase.d.ts +2 -0
  587. package/dist/usecases/tracking/recordReviewCompletion.usecase.d.ts.map +1 -1
  588. package/dist/usecases/tracking/recordReviewCompletion.usecase.js +1 -0
  589. package/dist/usecases/tracking/recordReviewCompletion.usecase.js.map +1 -1
  590. package/dist/usecases/version/checkVersion.usecase.d.ts +13 -0
  591. package/dist/usecases/version/checkVersion.usecase.d.ts.map +1 -0
  592. package/dist/usecases/version/checkVersion.usecase.js +20 -0
  593. package/dist/usecases/version/checkVersion.usecase.js.map +1 -0
  594. package/dist/usecases/version/triggerSelfUpdate.usecase.d.ts +7 -0
  595. package/dist/usecases/version/triggerSelfUpdate.usecase.d.ts.map +1 -0
  596. package/dist/usecases/version/triggerSelfUpdate.usecase.js +12 -0
  597. package/dist/usecases/version/triggerSelfUpdate.usecase.js.map +1 -0
  598. package/package.json +1 -1
@@ -2,7 +2,9 @@ import type { Config } from '../config/loader.js';
2
2
  import type { ReviewRequestTrackingGateway } from '../interface-adapters/gateways/reviewRequestTracking.gateway.js';
3
3
  import type { StatsGateway } from '../interface-adapters/gateways/stats.gateway.js';
4
4
  import type { ReviewFileGateway } from '../interface-adapters/gateways/reviewFile.gateway.js';
5
+ import type { ReviewLogFileGateway } from '../interface-adapters/gateways/reviewLogFile.gateway.js';
5
6
  import type { ReviewContextGateway } from '../entities/reviewContext/reviewContext.gateway.js';
7
+ import type { InsightsGateway } from '../entities/insight/insights.gateway.js';
6
8
  import { ReviewContextWatcherService } from '../services/reviewContextWatcher.service.js';
7
9
  import { ReviewContextProgressPresenter } from '../interface-adapters/presenters/reviewContextProgress.presenter.js';
8
10
  import { type Logger } from 'pino';
@@ -10,7 +12,9 @@ export interface Dependencies {
10
12
  reviewRequestTrackingGateway: ReviewRequestTrackingGateway;
11
13
  statsGateway: StatsGateway;
12
14
  reviewFileGateway: ReviewFileGateway;
15
+ reviewLogFileGateway: ReviewLogFileGateway;
13
16
  reviewContextGateway: ReviewContextGateway;
17
+ insightsGateway: InsightsGateway;
14
18
  reviewContextWatcher: ReviewContextWatcherService;
15
19
  progressPresenter: ReviewContextProgressPresenter;
16
20
  logger: Logger;
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/main/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iEAAiE,CAAC;AACpH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sDAAsD,CAAC;AAC9F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAK/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,qEAAqE,CAAC;AAErH,OAAO,EAAQ,KAAK,MAAM,EAAsB,MAAM,MAAM,CAAC;AAI7D,MAAM,WAAW,YAAY;IAC3B,4BAA4B,EAAE,4BAA4B,CAAC;IAC3D,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,oBAAoB,EAAE,2BAA2B,CAAC;IAClD,iBAAiB,EAAE,8BAA8B,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AA+BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAe/D"}
1
+ {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/main/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iEAAiE,CAAC;AACpH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sDAAsD,CAAC;AAC9F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yDAAyD,CAAC;AACpG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAO9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,qEAAqE,CAAC;AAErH,OAAO,EAAQ,KAAK,MAAM,EAAsB,MAAM,MAAM,CAAC;AAI7D,MAAM,WAAW,YAAY;IAC3B,4BAA4B,EAAE,4BAA4B,CAAC;IAC3D,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,eAAe,EAAE,eAAe,CAAC;IACjC,oBAAoB,EAAE,2BAA2B,CAAC;IAClD,iBAAiB,EAAE,8BAA8B,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AA+BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAiB/D"}
@@ -1,6 +1,8 @@
1
1
  import { FileSystemReviewRequestTrackingGateway } from '../interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.js';
2
2
  import { FileSystemStatsGateway } from '../interface-adapters/gateways/fileSystem/stats.fileSystem.js';
3
+ import { FileSystemInsightsGateway } from '../interface-adapters/gateways/fileSystem/insights.fileSystem.js';
3
4
  import { FileSystemReviewFileGateway } from '../interface-adapters/gateways/fileSystem/reviewFile.fileSystem.js';
5
+ import { FileSystemReviewLogFileGateway } from '../interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.js';
4
6
  import { ReviewContextFileSystemGateway } from '../interface-adapters/gateways/reviewContext.fileSystem.gateway.js';
5
7
  import { ReviewContextWatcherService } from '../services/reviewContextWatcher.service.js';
6
8
  import { ReviewContextProgressPresenter } from '../interface-adapters/presenters/reviewContextProgress.presenter.js';
@@ -38,7 +40,9 @@ export function createDependencies(config) {
38
40
  reviewRequestTrackingGateway: new FileSystemReviewRequestTrackingGateway(new ProjectStatsCalculator()),
39
41
  statsGateway: new FileSystemStatsGateway(),
40
42
  reviewFileGateway: new FileSystemReviewFileGateway(),
43
+ reviewLogFileGateway: new FileSystemReviewLogFileGateway(),
41
44
  reviewContextGateway,
45
+ insightsGateway: new FileSystemInsightsGateway(),
42
46
  reviewContextWatcher: new ReviewContextWatcherService(reviewContextGateway),
43
47
  progressPresenter: new ReviewContextProgressPresenter(),
44
48
  logger,
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/main/dependencies.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sCAAsC,EAAE,MAAM,+EAA+E,CAAC;AACvI,OAAO,EAAE,sBAAsB,EAAE,MAAM,+DAA+D,CAAC;AACvG,OAAO,EAAE,2BAA2B,EAAE,MAAM,oEAAoE,CAAC;AACjH,OAAO,EAAE,8BAA8B,EAAE,MAAM,oEAAoE,CAAC;AACpH,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,qEAAqE,CAAC;AACrH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6DAA6D,CAAC;AACrG,OAAO,EAAE,IAAI,EAAmC,MAAM,MAAM,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAa3E,SAAS,mBAAmB;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG,CAAC;IAEvD,IAAI,QAAQ,EAAE,CAAC;QACb,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;SACvC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;QACtC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;YAC9C,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;YACxD,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG,CAAC;IACvD,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IAEtC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAE9B,MAAM,oBAAoB,GAAG,IAAI,8BAA8B,EAAE,CAAC;IAElE,OAAO;QACL,4BAA4B,EAAE,IAAI,sCAAsC,CAAC,IAAI,sBAAsB,EAAE,CAAC;QACtG,YAAY,EAAE,IAAI,sBAAsB,EAAE;QAC1C,iBAAiB,EAAE,IAAI,2BAA2B,EAAE;QACpD,oBAAoB;QACpB,oBAAoB,EAAE,IAAI,2BAA2B,CAAC,oBAAoB,CAAC;QAC3E,iBAAiB,EAAE,IAAI,8BAA8B,EAAE;QACvD,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/main/dependencies.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,sCAAsC,EAAE,MAAM,+EAA+E,CAAC;AACvI,OAAO,EAAE,sBAAsB,EAAE,MAAM,+DAA+D,CAAC;AACvG,OAAO,EAAE,yBAAyB,EAAE,MAAM,iEAAiE,CAAC;AAC5G,OAAO,EAAE,2BAA2B,EAAE,MAAM,oEAAoE,CAAC;AACjH,OAAO,EAAE,8BAA8B,EAAE,MAAM,+EAA+E,CAAC;AAC/H,OAAO,EAAE,8BAA8B,EAAE,MAAM,oEAAoE,CAAC;AACpH,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,qEAAqE,CAAC;AACrH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6DAA6D,CAAC;AACrG,OAAO,EAAE,IAAI,EAAmC,MAAM,MAAM,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAe3E,SAAS,mBAAmB;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG,CAAC;IAEvD,IAAI,QAAQ,EAAE,CAAC;QACb,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;SACvC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;QACtC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;YAC9C,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;YACxD,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG,CAAC;IACvD,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IAEtC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAE9B,MAAM,oBAAoB,GAAG,IAAI,8BAA8B,EAAE,CAAC;IAElE,OAAO;QACL,4BAA4B,EAAE,IAAI,sCAAsC,CAAC,IAAI,sBAAsB,EAAE,CAAC;QACtG,YAAY,EAAE,IAAI,sBAAsB,EAAE;QAC1C,iBAAiB,EAAE,IAAI,2BAA2B,EAAE;QACpD,oBAAoB,EAAE,IAAI,8BAA8B,EAAE;QAC1D,oBAAoB;QACpB,eAAe,EAAE,IAAI,yBAAyB,EAAE;QAChD,oBAAoB,EAAE,IAAI,2BAA2B,CAAC,oBAAoB,CAAC;QAC3E,iBAAiB,EAAE,IAAI,8BAA8B,EAAE;QACvD,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/main/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AA4B3D,wBAAsB,cAAc,CAClC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAuFf"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/main/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAoD3D,wBAAsB,cAAc,CAClC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CA0If"}
@@ -1,4 +1,5 @@
1
1
  import fastifyStatic from '@fastify/static';
2
+ import { readFileSync } from 'node:fs';
2
3
  import { fileURLToPath } from 'node:url';
3
4
  import { dirname, join } from 'node:path';
4
5
  import { healthRoutes } from '../interface-adapters/controllers/http/health.routes.js';
@@ -10,6 +11,9 @@ import { mrTrackingAdvancedRoutes } from '../interface-adapters/controllers/http
10
11
  import { logsRoutes } from '../interface-adapters/controllers/http/logs.routes.js';
11
12
  import { cliStatusRoutes } from '../interface-adapters/controllers/http/cliStatus.routes.js';
12
13
  import { projectConfigRoutes } from '../interface-adapters/controllers/http/projectConfig.routes.js';
14
+ import { cleanupRoutes } from '../interface-adapters/controllers/http/cleanup.routes.js';
15
+ import { versionRoutes } from '../interface-adapters/controllers/http/version.routes.js';
16
+ import { insightsRoutes } from '../interface-adapters/controllers/http/insights.routes.js';
13
17
  import { registerWebSocketRoutes } from '../main/websocket.js';
14
18
  import { handleGitLabWebhook } from '../interface-adapters/controllers/webhook/gitlab.controller.js';
15
19
  import { handleGitHubWebhook } from '../interface-adapters/controllers/webhook/github.controller.js';
@@ -18,21 +22,41 @@ import { GitLabThreadFetchGateway, defaultGitLabExecutor } from '../interface-ad
18
22
  import { GitLabDiffMetadataFetchGateway } from '../interface-adapters/gateways/diffMetadataFetch.gitlab.gateway.js';
19
23
  import { GitHubThreadFetchGateway, defaultGitHubExecutor } from '../interface-adapters/gateways/threadFetch.github.gateway.js';
20
24
  import { GitHubDiffMetadataFetchGateway } from '../interface-adapters/gateways/diffMetadataFetch.github.gateway.js';
25
+ import { GitLabDiffStatsFetchGateway } from '../interface-adapters/gateways/diffStatsFetch.gitlab.gateway.js';
26
+ import { GitHubDiffStatsFetchGateway } from '../interface-adapters/gateways/diffStatsFetch.github.gateway.js';
21
27
  import { TrackAssignmentUseCase } from '../usecases/tracking/trackAssignment.usecase.js';
22
28
  import { RecordReviewCompletionUseCase } from '../usecases/tracking/recordReviewCompletion.usecase.js';
23
29
  import { RecordPushUseCase } from '../usecases/tracking/recordPush.usecase.js';
24
30
  import { TransitionStateUseCase } from '../usecases/tracking/transitionState.usecase.js';
25
31
  import { CheckFollowupNeededUseCase } from '../usecases/tracking/checkFollowupNeeded.usecase.js';
26
32
  import { SyncThreadsUseCase } from '../usecases/tracking/syncThreads.usecase.js';
33
+ import { checkVersion } from '../usecases/version/checkVersion.usecase.js';
34
+ import { triggerSelfUpdate } from '../usecases/version/triggerSelfUpdate.usecase.js';
35
+ import { NpmPackageVersionGateway } from '../interface-adapters/gateways/packageVersion.npm.gateway.js';
36
+ import { VersionCacheMemoryGateway } from '../interface-adapters/gateways/versionCache.memory.gateway.js';
37
+ import { SelfUpdateCliGateway } from '../interface-adapters/gateways/selfUpdate.cli.gateway.js';
38
+ import { broadcastBackfillProgress } from '../main/websocket.js';
39
+ import { createClaudeInsightsInvoker } from '../frameworks/claude/claudeInsightsInvoker.js';
40
+ import { getDefaultLanguage } from '../frameworks/settings/runtimeSettings.js';
27
41
  const __filename = fileURLToPath(import.meta.url);
28
42
  const __dirname = dirname(__filename);
43
+ function readVersion() {
44
+ const packageJsonPath = join(__dirname, '..', '..', 'package.json');
45
+ const raw = readFileSync(packageJsonPath, 'utf-8');
46
+ return JSON.parse(raw).version;
47
+ }
48
+ const currentVersion = readVersion();
49
+ const packageVersionGateway = new NpmPackageVersionGateway();
50
+ const versionCache = new VersionCacheMemoryGateway();
51
+ const selfUpdateCommand = new SelfUpdateCliGateway();
29
52
  export async function registerRoutes(app, deps) {
30
53
  await app.register(fastifyStatic, {
31
54
  root: join(__dirname, '..', 'interface-adapters', 'views', 'dashboard'),
32
55
  prefix: '/dashboard/',
33
56
  });
34
57
  await app.register(healthRoutes, {
35
- getConfig: () => ({ version: '1.0.0' }),
58
+ getConfig: () => ({ version: currentVersion }),
59
+ versionCache,
36
60
  });
37
61
  await app.register(settingsRoutes);
38
62
  await app.register(reviewRoutes, {
@@ -45,6 +69,12 @@ export async function registerRoutes(app, deps) {
45
69
  await app.register(statsRoutes, {
46
70
  statsGateway: deps.statsGateway,
47
71
  getRepositories: () => deps.config.repositories,
72
+ diffStatsFetchGateways: {
73
+ gitlab: new GitLabDiffStatsFetchGateway(defaultGitLabExecutor),
74
+ github: new GitHubDiffStatsFetchGateway(defaultGitHubExecutor),
75
+ },
76
+ broadcastBackfillProgress,
77
+ logger: deps.logger,
48
78
  });
49
79
  await app.register(mrTrackingRoutes, {
50
80
  reviewRequestTrackingGateway: deps.reviewRequestTrackingGateway,
@@ -54,6 +84,30 @@ export async function registerRoutes(app, deps) {
54
84
  reviewRequestTrackingGateway: deps.reviewRequestTrackingGateway,
55
85
  logger: deps.logger,
56
86
  });
87
+ await app.register(cleanupRoutes, {
88
+ reviewFileGateway: deps.reviewFileGateway,
89
+ reviewLogFileGateway: deps.reviewLogFileGateway,
90
+ getRepositories: () => deps.config.repositories,
91
+ logger: deps.logger,
92
+ });
93
+ await app.register(versionRoutes, {
94
+ checkVersion,
95
+ triggerSelfUpdate,
96
+ currentVersion,
97
+ packageVersionGateway,
98
+ versionCache,
99
+ selfUpdateCommand,
100
+ serverPort: deps.config.server.port,
101
+ });
102
+ await app.register(insightsRoutes, {
103
+ statsGateway: deps.statsGateway,
104
+ insightsGateway: deps.insightsGateway,
105
+ reviewFileGateway: deps.reviewFileGateway,
106
+ reviewRequestTrackingGateway: deps.reviewRequestTrackingGateway,
107
+ logger: deps.logger,
108
+ claudeInvoker: createClaudeInsightsInvoker(),
109
+ language: getDefaultLanguage(),
110
+ });
57
111
  await app.register(logsRoutes);
58
112
  await app.register(cliStatusRoutes);
59
113
  await app.register(projectConfigRoutes);
@@ -65,6 +119,7 @@ export async function registerRoutes(app, deps) {
65
119
  reviewContextGateway: deps.reviewContextGateway,
66
120
  threadFetchGateway: threadFetchGw,
67
121
  diffMetadataFetchGateway: new GitLabDiffMetadataFetchGateway(defaultGitLabExecutor),
122
+ diffStatsFetchGateway: new GitLabDiffStatsFetchGateway(defaultGitLabExecutor),
68
123
  trackAssignment: new TrackAssignmentUseCase(trackingGw),
69
124
  recordCompletion: new RecordReviewCompletionUseCase(trackingGw),
70
125
  recordPush: new RecordPushUseCase(trackingGw),
@@ -79,6 +134,7 @@ export async function registerRoutes(app, deps) {
79
134
  reviewContextGateway: deps.reviewContextGateway,
80
135
  threadFetchGateway: gitHubThreadFetchGw,
81
136
  diffMetadataFetchGateway: new GitHubDiffMetadataFetchGateway(defaultGitHubExecutor),
137
+ diffStatsFetchGateway: new GitHubDiffStatsFetchGateway(defaultGitHubExecutor),
82
138
  trackAssignment: new TrackAssignmentUseCase(trackingGw),
83
139
  recordCompletion: new RecordReviewCompletionUseCase(trackingGw),
84
140
  });
@@ -86,10 +142,19 @@ export async function registerRoutes(app, deps) {
86
142
  app.get('/', async (_request, reply) => {
87
143
  reply.redirect('/dashboard/');
88
144
  });
145
+ app.get('/api/repositories', async () => {
146
+ return {
147
+ repositories: deps.config.repositories.map((repository) => ({
148
+ name: repository.name,
149
+ localPath: repository.localPath,
150
+ enabled: repository.enabled,
151
+ })),
152
+ };
153
+ });
89
154
  app.get('/api', async () => {
90
155
  return {
91
156
  name: 'reviewflow',
92
- version: '1.0.0',
157
+ version: currentVersion,
93
158
  endpoints: {
94
159
  dashboard: '/dashboard/',
95
160
  health: '/health',
@@ -99,5 +164,6 @@ export async function registerRoutes(app, deps) {
99
164
  },
100
165
  };
101
166
  });
167
+ checkVersion({ currentVersion, forceRefresh: false }, { packageVersionGateway, cache: versionCache }).catch(() => { });
102
168
  }
103
169
  //# sourceMappingURL=routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/main/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/main/routes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/main/server.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQ9D,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA4BD,wBAAsB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAKxF;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CA6BvF"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/main/server.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAS9D,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA4BD,wBAAsB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAKxF;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAqCvF"}
@@ -7,6 +7,7 @@ import { setupWebSocketCallbacks } from './websocket.js';
7
7
  import { initQueue } from '../frameworks/queue/pQueueAdapter.js';
8
8
  import { removePidFile } from '../shared/services/pidFileManager.js';
9
9
  import { PID_FILE_PATH } from '../shared/services/daemonPaths.js';
10
+ import { startCleanupScheduler } from '../frameworks/scheduler/cleanupScheduler.js';
10
11
  function addRawBodyParser(app) {
11
12
  app.addContentTypeParser('application/json', { parseAs: 'buffer' }, (req, body, done) => {
12
13
  req.rawBody = body;
@@ -41,12 +42,19 @@ export async function startServer(options = {}) {
41
42
  });
42
43
  const app = await buildServer(deps);
43
44
  const port = options.portOverride ?? config.server.port;
45
+ const cleanupScheduler = startCleanupScheduler({
46
+ reviewFileGateway: deps.reviewFileGateway,
47
+ reviewLogFileGateway: deps.reviewLogFileGateway,
48
+ getRepositories: () => config.repositories,
49
+ logger: deps.logger,
50
+ });
44
51
  await app.listen({
45
52
  port,
46
53
  host: '0.0.0.0',
47
54
  });
48
55
  const shutdown = async () => {
49
56
  deps.logger.info('Shutting down...');
57
+ cleanupScheduler.stop();
50
58
  removePidFile(PID_FILE_PATH);
51
59
  await app.close();
52
60
  process.exit(0);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/main/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/main/server.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import type { FastifyInstance } from 'fastify';
2
2
  import type { ReviewProgress, ProgressEvent } from '../entities/progress/progress.type.js';
3
+ import type { BackfillProgress } from '../entities/backfill/backfillProgress.js';
3
4
  import type { Dependencies } from './dependencies.js';
4
5
  export declare function getWsClientsCount(): number;
5
6
  export declare function broadcastProgress(jobId: string, progress: ReviewProgress, event?: ProgressEvent): void;
7
+ export declare function broadcastBackfillProgress(progress: BackfillProgress): void;
6
8
  export declare function setupWebSocketCallbacks(deps: Pick<Dependencies, 'reviewContextWatcher' | 'progressPresenter'>): void;
7
9
  export declare function startWatchingReviewContext(jobId: string, localPath: string, mergeRequestId: string): void;
8
10
  export declare function stopWatchingReviewContext(mergeRequestId: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/main/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQtD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CActG;AAkCD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,sBAAsB,GAAG,mBAAmB,CAAC,GAAG,IAAI,CASpH;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CASzG;AAED,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAKtE;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAoCf"}
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/main/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQtD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CActG;AAkCD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAa1E;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,sBAAsB,GAAG,mBAAmB,CAAC,GAAG,IAAI,CASpH;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CASzG;AAED,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAKtE;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -46,6 +46,19 @@ function broadcastStateChange() {
46
46
  }
47
47
  }
48
48
  }
49
+ export function broadcastBackfillProgress(progress) {
50
+ const messageType = progress.status === 'completed' ? 'backfill-complete' : 'backfill-progress';
51
+ const message = JSON.stringify({
52
+ type: messageType,
53
+ data: progress,
54
+ timestamp: new Date().toISOString(),
55
+ });
56
+ for (const client of wsClients) {
57
+ if (client.readyState === 1) {
58
+ client.send(message);
59
+ }
60
+ }
61
+ }
49
62
  export function setupWebSocketCallbacks(deps) {
50
63
  injectedDeps = deps;
51
64
  onLog(broadcastLogEntry);
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/main/websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/main/websocket.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,6 @@
1
- /**
2
- * Individual review statistics
3
- */
4
- export interface ReviewStats {
5
- id: string;
6
- timestamp: string;
7
- mrNumber: number;
8
- duration: number;
9
- score: number | null;
10
- blocking: number;
11
- warnings: number;
12
- suggestions?: number;
13
- assignedBy?: string;
14
- }
15
- /**
16
- * Aggregated project statistics
17
- */
18
- export interface ProjectStats {
19
- totalReviews: number;
20
- totalDuration: number;
21
- averageScore: number | null;
22
- averageDuration: number;
23
- totalBlocking: number;
24
- totalWarnings: number;
25
- reviews: ReviewStats[];
26
- lastUpdated: string;
27
- }
1
+ import type { ReviewStats, ProjectStats } from '../entities/stats/projectStats.js';
2
+ import type { DiffStats } from '../entities/diffStats/diffStats.js';
3
+ export type { ReviewStats, ProjectStats };
28
4
  /**
29
5
  * Load project statistics
30
6
  */
@@ -38,15 +14,15 @@ export declare function saveProjectStats(projectPath: string, stats: ProjectStat
38
14
  *
39
15
  * Supports two formats:
40
16
  * 1. Summary format (from skill output):
41
- * 📊 Score global : X/10
42
- * 🚨 Bloquants : X
43
- * ⚠️ Importants : X
17
+ * Score global : X/10
18
+ * Bloquants : X
19
+ * Importants : X
44
20
  *
45
21
  * 2. Structured stats line:
46
22
  * [REVIEW_STATS:blocking=X:warnings=X:suggestions=X:score=X]
47
23
  *
48
24
  * 3. Inline markers (fallback):
49
- * 🚨 [BLOQUANT], ⚠️ [IMPORTANT], 💡 [SUGGESTION]
25
+ * [BLOQUANT], [IMPORTANT], [SUGGESTION]
50
26
  */
51
27
  export declare function parseReviewOutput(stdout: string): {
52
28
  score: number | null;
@@ -57,7 +33,7 @@ export declare function parseReviewOutput(stdout: string): {
57
33
  /**
58
34
  * Add a review to project statistics
59
35
  */
60
- export declare function addReviewStats(projectPath: string, mrNumber: number, duration: number, stdout: string, assignedBy?: string): ReviewStats;
36
+ export declare function addReviewStats(projectPath: string, mrNumber: number, duration: number, stdout: string, assignedBy?: string, diffStats?: DiffStats | null): ReviewStats;
61
37
  /**
62
38
  * Get statistics summary for display
63
39
  */
@@ -1 +1 @@
1
- {"version":3,"file":"statsService.d.ts","sourceRoot":"","sources":["../../src/services/statsService.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AASD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAoBlE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAW/E;AAkBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG;IACjD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAqGA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,WAAW,CA4Cb;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE;QAAE,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;QAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAC;CAChF,CAyCA"}
1
+ {"version":3,"file":"statsService.d.ts","sourceRoot":"","sources":["../../src/services/statsService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAEnE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAsB1C;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAuBlE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAW/E;AAsBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG;IACjD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CA2FA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,GAC3B,WAAW,CA8Bb;AAyCD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE;QAAE,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;QAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAC;CAChF,CAyCA"}
@@ -6,6 +6,16 @@ import { join, dirname } from 'node:path';
6
6
  function getStatsPath(projectPath) {
7
7
  return join(projectPath, '.claude', 'reviews', 'stats.json');
8
8
  }
9
+ function hasProperty(object, key) {
10
+ return key in object;
11
+ }
12
+ function isProjectStatsShape(value) {
13
+ if (typeof value !== 'object' || value === null)
14
+ return false;
15
+ return (hasProperty(value, 'totalReviews') && typeof value.totalReviews === 'number' &&
16
+ hasProperty(value, 'totalDuration') && typeof value.totalDuration === 'number' &&
17
+ hasProperty(value, 'lastUpdated') && typeof value.lastUpdated === 'string');
18
+ }
9
19
  /**
10
20
  * Load project statistics
11
21
  */
@@ -16,12 +26,14 @@ export function loadProjectStats(projectPath) {
16
26
  }
17
27
  try {
18
28
  const content = readFileSync(statsPath, 'utf-8');
19
- const stats = JSON.parse(content);
20
- // Ensure arrays exist
21
- if (!Array.isArray(stats.reviews)) {
22
- stats.reviews = [];
29
+ const parsed = JSON.parse(content);
30
+ if (!isProjectStatsShape(parsed)) {
31
+ return createEmptyStats();
23
32
  }
24
- return stats;
33
+ if (!Array.isArray(parsed.reviews)) {
34
+ parsed.reviews = [];
35
+ }
36
+ return parsed;
25
37
  }
26
38
  catch {
27
39
  return createEmptyStats();
@@ -51,6 +63,10 @@ function createEmptyStats() {
51
63
  averageDuration: 0,
52
64
  totalBlocking: 0,
53
65
  totalWarnings: 0,
66
+ totalAdditions: 0,
67
+ totalDeletions: 0,
68
+ averageAdditions: null,
69
+ averageDeletions: null,
54
70
  reviews: [],
55
71
  lastUpdated: new Date().toISOString(),
56
72
  };
@@ -60,15 +76,15 @@ function createEmptyStats() {
60
76
  *
61
77
  * Supports two formats:
62
78
  * 1. Summary format (from skill output):
63
- * 📊 Score global : X/10
64
- * 🚨 Bloquants : X
65
- * ⚠️ Importants : X
79
+ * Score global : X/10
80
+ * Bloquants : X
81
+ * Importants : X
66
82
  *
67
83
  * 2. Structured stats line:
68
84
  * [REVIEW_STATS:blocking=X:warnings=X:suggestions=X:score=X]
69
85
  *
70
86
  * 3. Inline markers (fallback):
71
- * 🚨 [BLOQUANT], ⚠️ [IMPORTANT], 💡 [SUGGESTION]
87
+ * [BLOQUANT], [IMPORTANT], [SUGGESTION]
72
88
  */
73
89
  export function parseReviewOutput(stdout) {
74
90
  let score = null;
@@ -95,22 +111,18 @@ export function parseReviewOutput(stdout) {
95
111
  return { score, blocking, warnings, suggestions };
96
112
  }
97
113
  // Method 2: Parse summary format (skill output)
98
- // 📊 Score global : X/10
99
114
  const scoreMatch = stdout.match(/Score\s+[Gg]lobal\s*:\s*(\d+(?:\.\d+)?)\s*\/\s*10/i);
100
115
  if (scoreMatch) {
101
116
  score = Number.parseFloat(scoreMatch[1]);
102
117
  }
103
- // 🚨 Bloquants : X (summary count)
104
118
  const blockingSummary = stdout.match(/🚨\s*Bloquants?\s*:\s*(\d+)/i);
105
119
  if (blockingSummary) {
106
120
  blocking = Number.parseInt(blockingSummary[1], 10);
107
121
  }
108
- // ⚠️ Importants : X (summary count)
109
122
  const warningsSummary = stdout.match(/⚠️\s*Importants?\s*:\s*(\d+)/i);
110
123
  if (warningsSummary) {
111
124
  warnings = Number.parseInt(warningsSummary[1], 10);
112
125
  }
113
- // 📝 Améliorations/Suggestions : X (summary count)
114
126
  const suggestionsSummary = stdout.match(/(?:📝|💡)\s*(?:Améliorations?|Suggestions?)[^:]*:\s*(\d+)/i);
115
127
  if (suggestionsSummary) {
116
128
  suggestions = Number.parseInt(suggestionsSummary[1], 10);
@@ -120,12 +132,10 @@ export function parseReviewOutput(stdout) {
120
132
  return { score, blocking, warnings, suggestions };
121
133
  }
122
134
  // Method 3: Fallback - count inline markers
123
- // 🚨 [BLOQUANT] or 🚨 **[BLOQUANT]**
124
135
  const blockingMatches = stdout.match(/🚨\s*\*?\*?\[BLOQUANT\]/gi);
125
136
  if (blockingMatches) {
126
137
  blocking = blockingMatches.length;
127
138
  }
128
- // Alternative: count "### " headers under "## Corrections Bloquantes"
129
139
  const blockingSection = stdout.match(/##\s+Corrections?\s+Bloquantes?[\s\S]*?(?=##\s|$)/i);
130
140
  if (blockingSection) {
131
141
  const blockingHeaders = blockingSection[0].match(/^###\s+\d+\./gm);
@@ -133,12 +143,10 @@ export function parseReviewOutput(stdout) {
133
143
  blocking = blockingHeaders.length;
134
144
  }
135
145
  }
136
- // ⚠️ [IMPORTANT] or ⚠️ **[IMPORTANT]**
137
146
  const warningMatches = stdout.match(/⚠️\s*\*?\*?\[IMPORTANT\]/gi);
138
147
  if (warningMatches) {
139
148
  warnings = warningMatches.length;
140
149
  }
141
- // Alternative: count "### " headers under "## Corrections Importantes"
142
150
  const warningSection = stdout.match(/##\s+Corrections?\s+Importantes?[\s\S]*?(?=##\s|$)/i);
143
151
  if (warningSection) {
144
152
  const warningHeaders = warningSection[0].match(/^###\s+\d+\./gm);
@@ -146,12 +154,10 @@ export function parseReviewOutput(stdout) {
146
154
  warnings = warningHeaders.length;
147
155
  }
148
156
  }
149
- // 💡 [SUGGESTION] or 💡 **[SUGGESTION]**
150
157
  const suggestionMatches = stdout.match(/💡\s*\*?\*?\[SUGGESTION\]/gi);
151
158
  if (suggestionMatches) {
152
159
  suggestions = suggestionMatches.length;
153
160
  }
154
- // Alternative: count "### " headers under "## Suggestions"
155
161
  const suggestionSection = stdout.match(/##\s+Suggestions?[\s\S]*?(?=##\s|$)/i);
156
162
  if (suggestionSection) {
157
163
  const suggestionHeaders = suggestionSection[0].match(/^###\s+\d+\./gm);
@@ -164,7 +170,7 @@ export function parseReviewOutput(stdout) {
164
170
  /**
165
171
  * Add a review to project statistics
166
172
  */
167
- export function addReviewStats(projectPath, mrNumber, duration, stdout, assignedBy) {
173
+ export function addReviewStats(projectPath, mrNumber, duration, stdout, assignedBy, diffStats) {
168
174
  const stats = loadProjectStats(projectPath);
169
175
  const parsed = parseReviewOutput(stdout);
170
176
  const now = new Date();
@@ -178,30 +184,48 @@ export function addReviewStats(projectPath, mrNumber, duration, stdout, assigned
178
184
  warnings: parsed.warnings,
179
185
  suggestions: parsed.suggestions,
180
186
  assignedBy,
187
+ diffStats: diffStats ?? null,
181
188
  };
182
- // Add to reviews array
189
+ initializeCumulativeCounters(stats);
183
190
  stats.reviews.push(reviewStats);
184
- // Keep only last 100 reviews
191
+ updateAggregatesForNewReview(stats, reviewStats);
185
192
  if (stats.reviews.length > 100) {
186
193
  stats.reviews = stats.reviews.slice(-100);
187
194
  }
188
- // Recalculate aggregates
189
- stats.totalReviews = stats.reviews.length;
190
- stats.totalDuration = stats.reviews.reduce((sum, r) => sum + r.duration, 0);
191
- stats.averageDuration = stats.totalDuration / stats.totalReviews;
192
- stats.totalBlocking = stats.reviews.reduce((sum, r) => sum + r.blocking, 0);
193
- stats.totalWarnings = stats.reviews.reduce((sum, r) => sum + r.warnings, 0);
194
- // Calculate average score (only from reviews with scores)
195
+ saveProjectStats(projectPath, stats);
196
+ return reviewStats;
197
+ }
198
+ function initializeCumulativeCounters(stats) {
199
+ if (stats.totalScoreSum !== undefined)
200
+ return;
195
201
  const reviewsWithScore = stats.reviews.filter((r) => r.score !== null);
196
- if (reviewsWithScore.length > 0) {
197
- stats.averageScore =
198
- reviewsWithScore.reduce((sum, r) => sum + (r.score ?? 0), 0) / reviewsWithScore.length;
202
+ stats.totalScoreSum = reviewsWithScore.reduce((sum, r) => sum + (r.score ?? 0), 0);
203
+ stats.scoredReviewCount = reviewsWithScore.length;
204
+ const reviewsWithDiffStats = stats.reviews.filter((r) => r.diffStats != null);
205
+ stats.diffStatsReviewCount = reviewsWithDiffStats.length;
206
+ }
207
+ function updateAggregatesForNewReview(stats, review) {
208
+ stats.totalReviews += 1;
209
+ stats.totalDuration += review.duration;
210
+ stats.averageDuration = stats.totalDuration / stats.totalReviews;
211
+ stats.totalBlocking += review.blocking;
212
+ stats.totalWarnings += review.warnings;
213
+ if (review.score !== null) {
214
+ stats.totalScoreSum = (stats.totalScoreSum ?? 0) + review.score;
215
+ stats.scoredReviewCount = (stats.scoredReviewCount ?? 0) + 1;
199
216
  }
200
- else {
201
- stats.averageScore = null;
217
+ if (stats.scoredReviewCount && stats.scoredReviewCount > 0) {
218
+ stats.averageScore = (stats.totalScoreSum ?? 0) / stats.scoredReviewCount;
219
+ }
220
+ if (review.diffStats) {
221
+ stats.totalAdditions += review.diffStats.additions;
222
+ stats.totalDeletions += review.diffStats.deletions;
223
+ stats.diffStatsReviewCount = (stats.diffStatsReviewCount ?? 0) + 1;
224
+ }
225
+ if (stats.diffStatsReviewCount && stats.diffStatsReviewCount > 0) {
226
+ stats.averageAdditions = stats.totalAdditions / stats.diffStatsReviewCount;
227
+ stats.averageDeletions = stats.totalDeletions / stats.diffStatsReviewCount;
202
228
  }
203
- saveProjectStats(projectPath, stats);
204
- return reviewStats;
205
229
  }
206
230
  /**
207
231
  * Get statistics summary for display