reviewflow 3.10.0 → 3.13.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 (2250) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/config/projectConfig.d.ts +3 -3
  3. package/dist/config/projectConfig.d.ts.map +1 -1
  4. package/dist/dashboard/index.html +2826 -0
  5. package/dist/dashboard/modules/assignee.d.ts.map +1 -0
  6. package/dist/dashboard/modules/assignee.js.map +1 -0
  7. package/dist/dashboard/modules/budgetSettings.d.ts +70 -0
  8. package/dist/dashboard/modules/budgetSettings.d.ts.map +1 -0
  9. package/dist/dashboard/modules/budgetSettings.js +159 -0
  10. package/dist/dashboard/modules/budgetSettings.js.map +1 -0
  11. package/dist/dashboard/modules/cleanup.d.ts.map +1 -0
  12. package/dist/dashboard/modules/cleanup.js.map +1 -0
  13. package/dist/dashboard/modules/collapsibleList.d.ts.map +1 -0
  14. package/dist/dashboard/modules/collapsibleList.js.map +1 -0
  15. package/dist/dashboard/modules/constants.d.ts.map +1 -0
  16. package/dist/dashboard/modules/constants.js.map +1 -0
  17. package/dist/dashboard/modules/desktopNotifications.d.ts.map +1 -0
  18. package/dist/dashboard/modules/desktopNotifications.js.map +1 -0
  19. package/dist/dashboard/modules/developerSheet.d.ts.map +1 -0
  20. package/dist/dashboard/modules/developerSheet.js.map +1 -0
  21. package/dist/dashboard/modules/formatting.d.ts.map +1 -0
  22. package/dist/dashboard/modules/formatting.js.map +1 -0
  23. package/dist/dashboard/modules/html.d.ts.map +1 -0
  24. package/dist/dashboard/modules/html.js.map +1 -0
  25. package/dist/dashboard/modules/i18n.d.ts.map +1 -0
  26. package/dist/dashboard/modules/i18n.js +800 -0
  27. package/dist/dashboard/modules/i18n.js.map +1 -0
  28. package/dist/dashboard/modules/icons.d.ts.map +1 -0
  29. package/dist/dashboard/modules/icons.js.map +1 -0
  30. package/dist/dashboard/modules/insightsReport.d.ts.map +1 -0
  31. package/dist/dashboard/modules/insightsReport.js.map +1 -0
  32. package/dist/dashboard/modules/loading.d.ts.map +1 -0
  33. package/dist/dashboard/modules/loading.js.map +1 -0
  34. package/dist/dashboard/modules/mrSheet.d.ts.map +1 -0
  35. package/dist/dashboard/modules/mrSheet.js.map +1 -0
  36. package/dist/dashboard/modules/notifications.d.ts.map +1 -0
  37. package/dist/dashboard/modules/notifications.js.map +1 -0
  38. package/dist/dashboard/modules/priority.d.ts.map +1 -0
  39. package/dist/dashboard/modules/priority.js.map +1 -0
  40. package/dist/dashboard/modules/quality.d.ts.map +1 -0
  41. package/dist/dashboard/modules/quality.js.map +1 -0
  42. package/dist/dashboard/modules/queueLanes.d.ts.map +1 -0
  43. package/dist/dashboard/modules/queueLanes.js.map +1 -0
  44. package/dist/dashboard/modules/sessionMetrics.d.ts.map +1 -0
  45. package/dist/dashboard/modules/sessionMetrics.js.map +1 -0
  46. package/dist/dashboard/modules/sharedViewHelpers.d.ts.map +1 -0
  47. package/dist/dashboard/modules/sharedViewHelpers.js.map +1 -0
  48. package/dist/dashboard/modules/statsCharts.d.ts.map +1 -0
  49. package/dist/dashboard/modules/statsCharts.js.map +1 -0
  50. package/dist/dashboard/modules/teamTab.d.ts.map +1 -0
  51. package/dist/dashboard/modules/teamTab.js.map +1 -0
  52. package/dist/dashboard/modules/tokenUsage.d.ts +37 -0
  53. package/dist/dashboard/modules/tokenUsage.d.ts.map +1 -0
  54. package/dist/dashboard/modules/tokenUsage.js +118 -0
  55. package/dist/dashboard/modules/tokenUsage.js.map +1 -0
  56. package/dist/dashboard/modules/versionUpdate.d.ts +17 -0
  57. package/dist/dashboard/modules/versionUpdate.d.ts.map +1 -0
  58. package/dist/dashboard/modules/versionUpdate.js +63 -0
  59. package/dist/dashboard/modules/versionUpdate.js.map +1 -0
  60. package/dist/dashboard/styles.css +4109 -0
  61. package/dist/frameworks/claude/broadcastBudgetAfterUsage.d.ts +13 -0
  62. package/dist/frameworks/claude/broadcastBudgetAfterUsage.d.ts.map +1 -0
  63. package/dist/frameworks/claude/broadcastBudgetAfterUsage.js +10 -0
  64. package/dist/frameworks/claude/broadcastBudgetAfterUsage.js.map +1 -0
  65. package/dist/frameworks/claude/claudeInsightsInvoker.d.ts +1 -1
  66. package/dist/frameworks/claude/claudeInsightsInvoker.d.ts.map +1 -1
  67. package/dist/frameworks/claude/claudeInvoker.d.ts +72 -4
  68. package/dist/frameworks/claude/claudeInvoker.d.ts.map +1 -1
  69. package/dist/frameworks/claude/claudeInvoker.js +254 -289
  70. package/dist/frameworks/claude/claudeInvoker.js.map +1 -1
  71. package/dist/frameworks/claude/languageDirective.d.ts +1 -1
  72. package/dist/frameworks/claude/languageDirective.d.ts.map +1 -1
  73. package/dist/frameworks/claude/progressParser.d.ts +2 -2
  74. package/dist/frameworks/claude/progressParser.d.ts.map +1 -1
  75. package/dist/frameworks/claude/progressParser.js +2 -2
  76. package/dist/frameworks/claude/progressParser.js.map +1 -1
  77. package/dist/frameworks/claude/streamJsonParser.d.ts +2 -39
  78. package/dist/frameworks/claude/streamJsonParser.d.ts.map +1 -1
  79. package/dist/frameworks/claude/streamJsonParser.js +16 -88
  80. package/dist/frameworks/claude/streamJsonParser.js.map +1 -1
  81. package/dist/frameworks/claude/timers/claudeInvocationTimers.d.ts +14 -0
  82. package/dist/frameworks/claude/timers/claudeInvocationTimers.d.ts.map +1 -0
  83. package/dist/frameworks/claude/timers/claudeInvocationTimers.js +23 -0
  84. package/dist/frameworks/claude/timers/claudeInvocationTimers.js.map +1 -0
  85. package/dist/frameworks/queue/pQueueAdapter.d.ts +3 -3
  86. package/dist/frameworks/queue/pQueueAdapter.d.ts.map +1 -1
  87. package/dist/frameworks/scheduler/cleanupScheduler.d.ts +2 -2
  88. package/dist/frameworks/scheduler/cleanupScheduler.d.ts.map +1 -1
  89. package/dist/frameworks/scheduler/cleanupScheduler.js +1 -1
  90. package/dist/frameworks/scheduler/cleanupScheduler.js.map +1 -1
  91. package/dist/frameworks/settings/runtimeSettings.d.ts +1 -1
  92. package/dist/frameworks/settings/runtimeSettings.d.ts.map +1 -1
  93. package/dist/main/cli.d.ts +8 -8
  94. package/dist/main/cli.d.ts.map +1 -1
  95. package/dist/main/cli.js +11 -11
  96. package/dist/main/cli.js.map +1 -1
  97. package/dist/main/dependencies.d.ts +10 -8
  98. package/dist/main/dependencies.d.ts.map +1 -1
  99. package/dist/main/dependencies.js +11 -9
  100. package/dist/main/dependencies.js.map +1 -1
  101. package/dist/main/mcpDependencies.d.ts +4 -4
  102. package/dist/main/mcpDependencies.d.ts.map +1 -1
  103. package/dist/main/mcpDependencies.js +2 -2
  104. package/dist/main/mcpDependencies.js.map +1 -1
  105. package/dist/main/routes.d.ts.map +1 -1
  106. package/dist/main/routes.js +109 -33
  107. package/dist/main/routes.js.map +1 -1
  108. package/dist/main/server.d.ts.map +1 -1
  109. package/dist/main/server.js +16 -0
  110. package/dist/main/server.js.map +1 -1
  111. package/dist/main/websocket.d.ts +14 -2
  112. package/dist/main/websocket.d.ts.map +1 -1
  113. package/dist/main/websocket.js +30 -0
  114. package/dist/main/websocket.js.map +1 -1
  115. package/dist/mcp/mcpServerStdio.d.ts.map +1 -1
  116. package/dist/mcp/mcpServerStdio.js +17 -8
  117. package/dist/mcp/mcpServerStdio.js.map +1 -1
  118. package/dist/modules/claude-invocation/entities/billingState/billingState.gateway.d.ts +8 -0
  119. package/dist/modules/claude-invocation/entities/billingState/billingState.gateway.d.ts.map +1 -0
  120. package/dist/modules/claude-invocation/entities/billingState/billingState.gateway.js +2 -0
  121. package/dist/modules/claude-invocation/entities/billingState/billingState.gateway.js.map +1 -0
  122. package/dist/modules/claude-invocation/entities/billingState/billingState.schema.d.ts +8 -0
  123. package/dist/modules/claude-invocation/entities/billingState/billingState.schema.d.ts.map +1 -0
  124. package/dist/modules/claude-invocation/entities/billingState/billingState.schema.js +7 -0
  125. package/dist/modules/claude-invocation/entities/billingState/billingState.schema.js.map +1 -0
  126. package/dist/modules/claude-invocation/entities/billingState/environment.gateway.d.ts +4 -0
  127. package/dist/modules/claude-invocation/entities/billingState/environment.gateway.d.ts.map +1 -0
  128. package/dist/modules/claude-invocation/entities/billingState/environment.gateway.js +2 -0
  129. package/dist/modules/claude-invocation/entities/billingState/environment.gateway.js.map +1 -0
  130. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.d.ts +16 -0
  131. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.d.ts.map +1 -0
  132. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.gateway.d.ts +52 -0
  133. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.gateway.d.ts.map +1 -0
  134. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.gateway.js +2 -0
  135. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.gateway.js.map +1 -0
  136. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.guard.d.ts +11 -0
  137. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.guard.d.ts.map +1 -0
  138. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.guard.js +4 -0
  139. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.guard.js.map +1 -0
  140. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.js +29 -0
  141. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.js.map +1 -0
  142. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.schema.d.ts +38 -0
  143. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.schema.d.ts.map +1 -0
  144. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.schema.js +27 -0
  145. package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.schema.js.map +1 -0
  146. package/dist/modules/claude-invocation/entities/retrySchedule/retrySchedule.schema.d.ts +10 -0
  147. package/dist/modules/claude-invocation/entities/retrySchedule/retrySchedule.schema.d.ts.map +1 -0
  148. package/dist/modules/claude-invocation/entities/retrySchedule/retrySchedule.schema.js +14 -0
  149. package/dist/modules/claude-invocation/entities/retrySchedule/retrySchedule.schema.js.map +1 -0
  150. package/dist/modules/claude-invocation/entities/retrySchedule/retrySchedule.valueObject.d.ts +10 -0
  151. package/dist/modules/claude-invocation/entities/retrySchedule/retrySchedule.valueObject.d.ts.map +1 -0
  152. package/dist/modules/claude-invocation/entities/retrySchedule/retrySchedule.valueObject.js +11 -0
  153. package/dist/modules/claude-invocation/entities/retrySchedule/retrySchedule.valueObject.js.map +1 -0
  154. package/dist/modules/claude-invocation/entities/sessionCompletion/mcpCompletion.gateway.d.ts +8 -0
  155. package/dist/modules/claude-invocation/entities/sessionCompletion/mcpCompletion.gateway.d.ts.map +1 -0
  156. package/dist/modules/claude-invocation/entities/sessionCompletion/mcpCompletion.gateway.js +2 -0
  157. package/dist/modules/claude-invocation/entities/sessionCompletion/mcpCompletion.gateway.js.map +1 -0
  158. package/dist/modules/claude-invocation/entities/sessionCompletion/reviewReport.gateway.d.ts +16 -0
  159. package/dist/modules/claude-invocation/entities/sessionCompletion/reviewReport.gateway.d.ts.map +1 -0
  160. package/dist/modules/claude-invocation/entities/sessionCompletion/reviewReport.gateway.js +2 -0
  161. package/dist/modules/claude-invocation/entities/sessionCompletion/reviewReport.gateway.js.map +1 -0
  162. package/dist/modules/claude-invocation/entities/sessionCompletion/sessionCompletion.guard.d.ts +8 -0
  163. package/dist/modules/claude-invocation/entities/sessionCompletion/sessionCompletion.guard.d.ts.map +1 -0
  164. package/dist/modules/claude-invocation/entities/sessionCompletion/sessionCompletion.guard.js +7 -0
  165. package/dist/modules/claude-invocation/entities/sessionCompletion/sessionCompletion.guard.js.map +1 -0
  166. package/dist/modules/claude-invocation/entities/sessionCompletion/sessionCompletion.schema.d.ts +28 -0
  167. package/dist/modules/claude-invocation/entities/sessionCompletion/sessionCompletion.schema.d.ts.map +1 -0
  168. package/dist/modules/claude-invocation/entities/sessionCompletion/sessionCompletion.schema.js +9 -0
  169. package/dist/modules/claude-invocation/entities/sessionCompletion/sessionCompletion.schema.js.map +1 -0
  170. package/dist/modules/claude-invocation/entities/supervisorHealth/supervisorHealth.gateway.d.ts +6 -0
  171. package/dist/modules/claude-invocation/entities/supervisorHealth/supervisorHealth.gateway.d.ts.map +1 -0
  172. package/dist/modules/claude-invocation/entities/supervisorHealth/supervisorHealth.gateway.js +2 -0
  173. package/dist/modules/claude-invocation/entities/supervisorHealth/supervisorHealth.gateway.js.map +1 -0
  174. package/dist/modules/claude-invocation/entities/supervisorHealth/supervisorHealth.schema.d.ts +16 -0
  175. package/dist/modules/claude-invocation/entities/supervisorHealth/supervisorHealth.schema.d.ts.map +1 -0
  176. package/dist/modules/claude-invocation/entities/supervisorHealth/supervisorHealth.schema.js +8 -0
  177. package/dist/modules/claude-invocation/entities/supervisorHealth/supervisorHealth.schema.js.map +1 -0
  178. package/dist/modules/claude-invocation/interface-adapters/gateways/billingState.memory.gateway.d.ts +10 -0
  179. package/dist/modules/claude-invocation/interface-adapters/gateways/billingState.memory.gateway.d.ts.map +1 -0
  180. package/dist/modules/claude-invocation/interface-adapters/gateways/billingState.memory.gateway.js +32 -0
  181. package/dist/modules/claude-invocation/interface-adapters/gateways/billingState.memory.gateway.js.map +1 -0
  182. package/dist/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.d.ts +25 -0
  183. package/dist/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.d.ts.map +1 -0
  184. package/dist/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.js +102 -0
  185. package/dist/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.js.map +1 -0
  186. package/dist/modules/claude-invocation/interface-adapters/gateways/environment.process.gateway.d.ts +8 -0
  187. package/dist/modules/claude-invocation/interface-adapters/gateways/environment.process.gateway.d.ts.map +1 -0
  188. package/dist/modules/claude-invocation/interface-adapters/gateways/environment.process.gateway.js +11 -0
  189. package/dist/modules/claude-invocation/interface-adapters/gateways/environment.process.gateway.js.map +1 -0
  190. package/dist/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.fileSystem.gateway.d.ts +34 -0
  191. package/dist/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.fileSystem.gateway.d.ts.map +1 -0
  192. package/dist/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.fileSystem.gateway.js +131 -0
  193. package/dist/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.fileSystem.gateway.js.map +1 -0
  194. package/dist/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.memory.gateway.d.ts +10 -0
  195. package/dist/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.memory.gateway.d.ts.map +1 -0
  196. package/dist/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.memory.gateway.js +24 -0
  197. package/dist/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.memory.gateway.js.map +1 -0
  198. package/dist/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.d.ts +12 -0
  199. package/dist/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.d.ts.map +1 -0
  200. package/dist/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.js +25 -0
  201. package/dist/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.js.map +1 -0
  202. package/dist/modules/claude-invocation/interface-adapters/gateways/supervisorHealth.memory.gateway.d.ts +8 -0
  203. package/dist/modules/claude-invocation/interface-adapters/gateways/supervisorHealth.memory.gateway.d.ts.map +1 -0
  204. package/dist/modules/claude-invocation/interface-adapters/gateways/supervisorHealth.memory.gateway.js +18 -0
  205. package/dist/modules/claude-invocation/interface-adapters/gateways/supervisorHealth.memory.gateway.js.map +1 -0
  206. package/dist/modules/claude-invocation/usecases/auditBilling.usecase.d.ts +15 -0
  207. package/dist/modules/claude-invocation/usecases/auditBilling.usecase.d.ts.map +1 -0
  208. package/dist/modules/claude-invocation/usecases/auditBilling.usecase.js +12 -0
  209. package/dist/modules/claude-invocation/usecases/auditBilling.usecase.js.map +1 -0
  210. package/dist/modules/claude-invocation/usecases/awaitSessionCompletion.usecase.d.ts +16 -0
  211. package/dist/modules/claude-invocation/usecases/awaitSessionCompletion.usecase.d.ts.map +1 -0
  212. package/dist/modules/claude-invocation/usecases/awaitSessionCompletion.usecase.js +64 -0
  213. package/dist/modules/claude-invocation/usecases/awaitSessionCompletion.usecase.js.map +1 -0
  214. package/dist/modules/claude-invocation/usecases/checkSupervisorHealth.usecase.d.ts +10 -0
  215. package/dist/modules/claude-invocation/usecases/checkSupervisorHealth.usecase.d.ts.map +1 -0
  216. package/dist/modules/claude-invocation/usecases/checkSupervisorHealth.usecase.js +12 -0
  217. package/dist/modules/claude-invocation/usecases/checkSupervisorHealth.usecase.js.map +1 -0
  218. package/dist/modules/claude-invocation/usecases/cleanupClaudeSession.usecase.d.ts +15 -0
  219. package/dist/modules/claude-invocation/usecases/cleanupClaudeSession.usecase.d.ts.map +1 -0
  220. package/dist/modules/claude-invocation/usecases/cleanupClaudeSession.usecase.js +25 -0
  221. package/dist/modules/claude-invocation/usecases/cleanupClaudeSession.usecase.js.map +1 -0
  222. package/dist/modules/claude-invocation/usecases/dispatchClaudeSession.usecase.d.ts +34 -0
  223. package/dist/modules/claude-invocation/usecases/dispatchClaudeSession.usecase.d.ts.map +1 -0
  224. package/dist/modules/claude-invocation/usecases/dispatchClaudeSession.usecase.js +32 -0
  225. package/dist/modules/claude-invocation/usecases/dispatchClaudeSession.usecase.js.map +1 -0
  226. package/dist/modules/claude-invocation/usecases/retrieveReviewReport.usecase.d.ts +20 -0
  227. package/dist/modules/claude-invocation/usecases/retrieveReviewReport.usecase.d.ts.map +1 -0
  228. package/dist/modules/claude-invocation/usecases/retrieveReviewReport.usecase.js +17 -0
  229. package/dist/modules/claude-invocation/usecases/retrieveReviewReport.usecase.js.map +1 -0
  230. package/dist/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.d.ts +41 -0
  231. package/dist/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.d.ts.map +1 -0
  232. package/dist/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.js +88 -0
  233. package/dist/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.js.map +1 -0
  234. package/dist/modules/cli-configuration/entities/mcpSettings/mcpSettings.guard.d.ts +12 -0
  235. package/dist/modules/cli-configuration/entities/mcpSettings/mcpSettings.guard.d.ts.map +1 -0
  236. package/dist/modules/cli-configuration/entities/mcpSettings/mcpSettings.guard.js +15 -0
  237. package/dist/modules/cli-configuration/entities/mcpSettings/mcpSettings.guard.js.map +1 -0
  238. package/dist/modules/cli-configuration/entities/mcpSettings/mcpSettings.schema.d.ts.map +1 -0
  239. package/dist/modules/cli-configuration/entities/mcpSettings/mcpSettings.schema.js.map +1 -0
  240. package/dist/modules/cli-configuration/entities/packageVersion/installType.d.ts +2 -0
  241. package/dist/modules/cli-configuration/entities/packageVersion/installType.d.ts.map +1 -0
  242. package/dist/modules/cli-configuration/entities/packageVersion/installType.js +2 -0
  243. package/dist/modules/cli-configuration/entities/packageVersion/installType.js.map +1 -0
  244. package/dist/modules/cli-configuration/entities/packageVersion/installTypeDetector.gateway.d.ts +5 -0
  245. package/dist/modules/cli-configuration/entities/packageVersion/installTypeDetector.gateway.d.ts.map +1 -0
  246. package/dist/modules/cli-configuration/entities/packageVersion/installTypeDetector.gateway.js +2 -0
  247. package/dist/modules/cli-configuration/entities/packageVersion/installTypeDetector.gateway.js.map +1 -0
  248. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.d.ts +26 -0
  249. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.d.ts.map +1 -0
  250. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.gateway.d.ts.map +1 -0
  251. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.gateway.js.map +1 -0
  252. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.guard.d.ts +7 -0
  253. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.guard.d.ts.map +1 -0
  254. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.guard.js +13 -0
  255. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.guard.js.map +1 -0
  256. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.js.map +1 -0
  257. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.schema.d.ts +16 -0
  258. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.schema.d.ts.map +1 -0
  259. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.schema.js +12 -0
  260. package/dist/modules/cli-configuration/entities/packageVersion/packageVersion.schema.js.map +1 -0
  261. package/dist/modules/cli-configuration/entities/packageVersion/selfUpdateCommand.gateway.d.ts.map +1 -0
  262. package/dist/modules/cli-configuration/entities/packageVersion/selfUpdateCommand.gateway.js.map +1 -0
  263. package/dist/modules/cli-configuration/entities/packageVersion/versionCache.gateway.d.ts +7 -0
  264. package/dist/modules/cli-configuration/entities/packageVersion/versionCache.gateway.d.ts.map +1 -0
  265. package/dist/modules/cli-configuration/entities/packageVersion/versionCache.gateway.js.map +1 -0
  266. package/dist/modules/cli-configuration/interface-adapters/controllers/http/cliStatus.routes.d.ts.map +1 -0
  267. package/dist/modules/cli-configuration/interface-adapters/controllers/http/cliStatus.routes.js +173 -0
  268. package/dist/modules/cli-configuration/interface-adapters/controllers/http/cliStatus.routes.js.map +1 -0
  269. package/dist/modules/cli-configuration/interface-adapters/controllers/http/health.routes.d.ts +11 -0
  270. package/dist/modules/cli-configuration/interface-adapters/controllers/http/health.routes.d.ts.map +1 -0
  271. package/dist/modules/cli-configuration/interface-adapters/controllers/http/health.routes.js +27 -0
  272. package/dist/modules/cli-configuration/interface-adapters/controllers/http/health.routes.js.map +1 -0
  273. package/dist/modules/cli-configuration/interface-adapters/controllers/http/logs.routes.d.ts.map +1 -0
  274. package/dist/modules/cli-configuration/interface-adapters/controllers/http/logs.routes.js +12 -0
  275. package/dist/modules/cli-configuration/interface-adapters/controllers/http/logs.routes.js.map +1 -0
  276. package/dist/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.d.ts.map +1 -0
  277. package/dist/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.js +75 -0
  278. package/dist/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.js.map +1 -0
  279. package/dist/modules/cli-configuration/interface-adapters/controllers/http/settings.routes.d.ts.map +1 -0
  280. package/dist/modules/cli-configuration/interface-adapters/controllers/http/settings.routes.js +35 -0
  281. package/dist/modules/cli-configuration/interface-adapters/controllers/http/settings.routes.js.map +1 -0
  282. package/dist/modules/cli-configuration/interface-adapters/controllers/http/version.routes.d.ts +21 -0
  283. package/dist/modules/cli-configuration/interface-adapters/controllers/http/version.routes.d.ts.map +1 -0
  284. package/dist/modules/cli-configuration/interface-adapters/controllers/http/version.routes.js +28 -0
  285. package/dist/modules/cli-configuration/interface-adapters/controllers/http/version.routes.js.map +1 -0
  286. package/dist/modules/cli-configuration/interface-adapters/gateways/installTypeDetector.fs.gateway.d.ts +8 -0
  287. package/dist/modules/cli-configuration/interface-adapters/gateways/installTypeDetector.fs.gateway.d.ts.map +1 -0
  288. package/dist/modules/cli-configuration/interface-adapters/gateways/installTypeDetector.fs.gateway.js +26 -0
  289. package/dist/modules/cli-configuration/interface-adapters/gateways/installTypeDetector.fs.gateway.js.map +1 -0
  290. package/dist/modules/cli-configuration/interface-adapters/gateways/packageVersion.npm.gateway.d.ts +7 -0
  291. package/dist/modules/cli-configuration/interface-adapters/gateways/packageVersion.npm.gateway.d.ts.map +1 -0
  292. package/dist/modules/cli-configuration/interface-adapters/gateways/packageVersion.npm.gateway.js +25 -0
  293. package/dist/modules/cli-configuration/interface-adapters/gateways/packageVersion.npm.gateway.js.map +1 -0
  294. package/dist/modules/cli-configuration/interface-adapters/gateways/selfUpdate.cli.gateway.d.ts +20 -0
  295. package/dist/modules/cli-configuration/interface-adapters/gateways/selfUpdate.cli.gateway.d.ts.map +1 -0
  296. package/dist/modules/cli-configuration/interface-adapters/gateways/selfUpdate.cli.gateway.js +58 -0
  297. package/dist/modules/cli-configuration/interface-adapters/gateways/selfUpdate.cli.gateway.js.map +1 -0
  298. package/dist/modules/cli-configuration/interface-adapters/gateways/versionCache.memory.gateway.d.ts +12 -0
  299. package/dist/modules/cli-configuration/interface-adapters/gateways/versionCache.memory.gateway.d.ts.map +1 -0
  300. package/dist/modules/cli-configuration/interface-adapters/gateways/versionCache.memory.gateway.js.map +1 -0
  301. package/dist/modules/cli-configuration/usecases/cli/addRepositoriesToConfig.usecase.d.ts +27 -0
  302. package/dist/modules/cli-configuration/usecases/cli/addRepositoriesToConfig.usecase.d.ts.map +1 -0
  303. package/dist/modules/cli-configuration/usecases/cli/addRepositoriesToConfig.usecase.js.map +1 -0
  304. package/dist/modules/cli-configuration/usecases/cli/checkInitPrerequisites.d.ts.map +1 -0
  305. package/dist/modules/cli-configuration/usecases/cli/checkInitPrerequisites.js.map +1 -0
  306. package/dist/modules/cli-configuration/usecases/cli/configureMcp.usecase.d.ts.map +1 -0
  307. package/dist/modules/cli-configuration/usecases/cli/configureMcp.usecase.js +49 -0
  308. package/dist/modules/cli-configuration/usecases/cli/configureMcp.usecase.js.map +1 -0
  309. package/dist/modules/cli-configuration/usecases/cli/discoverRepositories.usecase.d.ts +34 -0
  310. package/dist/modules/cli-configuration/usecases/cli/discoverRepositories.usecase.d.ts.map +1 -0
  311. package/dist/modules/cli-configuration/usecases/cli/discoverRepositories.usecase.js.map +1 -0
  312. package/dist/modules/cli-configuration/usecases/cli/followupImportants.usecase.d.ts.map +1 -0
  313. package/dist/modules/cli-configuration/usecases/cli/followupImportants.usecase.js.map +1 -0
  314. package/dist/modules/cli-configuration/usecases/cli/queryStatus.usecase.d.ts +21 -0
  315. package/dist/modules/cli-configuration/usecases/cli/queryStatus.usecase.d.ts.map +1 -0
  316. package/dist/modules/cli-configuration/usecases/cli/queryStatus.usecase.js.map +1 -0
  317. package/dist/modules/cli-configuration/usecases/cli/readLogs.usecase.d.ts +29 -0
  318. package/dist/modules/cli-configuration/usecases/cli/readLogs.usecase.d.ts.map +1 -0
  319. package/dist/modules/cli-configuration/usecases/cli/readLogs.usecase.js.map +1 -0
  320. package/dist/modules/cli-configuration/usecases/cli/startDaemon.usecase.d.ts +28 -0
  321. package/dist/modules/cli-configuration/usecases/cli/startDaemon.usecase.d.ts.map +1 -0
  322. package/dist/modules/cli-configuration/usecases/cli/startDaemon.usecase.js.map +1 -0
  323. package/dist/modules/cli-configuration/usecases/cli/stopDaemon.usecase.d.ts +26 -0
  324. package/dist/modules/cli-configuration/usecases/cli/stopDaemon.usecase.d.ts.map +1 -0
  325. package/dist/modules/cli-configuration/usecases/cli/stopDaemon.usecase.js.map +1 -0
  326. package/dist/modules/cli-configuration/usecases/cli/validateConfig.usecase.d.ts.map +1 -0
  327. package/dist/modules/cli-configuration/usecases/cli/validateConfig.usecase.js.map +1 -0
  328. package/dist/modules/cli-configuration/usecases/cli/writeInitConfig.usecase.d.ts.map +1 -0
  329. package/dist/modules/cli-configuration/usecases/cli/writeInitConfig.usecase.js.map +1 -0
  330. package/dist/modules/cli-configuration/usecases/version/checkVersion.usecase.d.ts +15 -0
  331. package/dist/modules/cli-configuration/usecases/version/checkVersion.usecase.d.ts.map +1 -0
  332. package/dist/modules/cli-configuration/usecases/version/checkVersion.usecase.js +21 -0
  333. package/dist/modules/cli-configuration/usecases/version/checkVersion.usecase.js.map +1 -0
  334. package/dist/modules/cli-configuration/usecases/version/triggerSelfUpdate.usecase.d.ts +10 -0
  335. package/dist/modules/cli-configuration/usecases/version/triggerSelfUpdate.usecase.d.ts.map +1 -0
  336. package/dist/modules/cli-configuration/usecases/version/triggerSelfUpdate.usecase.js +16 -0
  337. package/dist/modules/cli-configuration/usecases/version/triggerSelfUpdate.usecase.js.map +1 -0
  338. package/dist/modules/data-lifecycle/entities/cleanup/retentionPolicy.valueObject.d.ts.map +1 -0
  339. package/dist/modules/data-lifecycle/entities/cleanup/retentionPolicy.valueObject.js.map +1 -0
  340. package/dist/modules/data-lifecycle/interface-adapters/controllers/http/cleanup.routes.d.ts +16 -0
  341. package/dist/modules/data-lifecycle/interface-adapters/controllers/http/cleanup.routes.d.ts.map +1 -0
  342. package/dist/modules/data-lifecycle/interface-adapters/controllers/http/cleanup.routes.js +44 -0
  343. package/dist/modules/data-lifecycle/interface-adapters/controllers/http/cleanup.routes.js.map +1 -0
  344. package/dist/modules/data-lifecycle/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.d.ts +7 -0
  345. package/dist/modules/data-lifecycle/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.d.ts.map +1 -0
  346. package/dist/modules/data-lifecycle/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.js.map +1 -0
  347. package/dist/modules/data-lifecycle/interface-adapters/gateways/reviewLogFile.gateway.d.ts.map +1 -0
  348. package/dist/modules/data-lifecycle/interface-adapters/gateways/reviewLogFile.gateway.js.map +1 -0
  349. package/dist/modules/data-lifecycle/usecases/cleanup/cleanupExpiredReviews.usecase.d.ts +13 -0
  350. package/dist/modules/data-lifecycle/usecases/cleanup/cleanupExpiredReviews.usecase.d.ts.map +1 -0
  351. package/dist/modules/data-lifecycle/usecases/cleanup/cleanupExpiredReviews.usecase.js +41 -0
  352. package/dist/modules/data-lifecycle/usecases/cleanup/cleanupExpiredReviews.usecase.js.map +1 -0
  353. package/dist/modules/platform-integration/entities/diffMetadata/diffMetadata.gateway.d.ts +5 -0
  354. package/dist/modules/platform-integration/entities/diffMetadata/diffMetadata.gateway.d.ts.map +1 -0
  355. package/dist/modules/platform-integration/entities/diffMetadata/diffMetadata.gateway.js.map +1 -0
  356. package/dist/modules/platform-integration/entities/github/githubPullRequestEvent.guard.d.ts +83 -0
  357. package/dist/modules/platform-integration/entities/github/githubPullRequestEvent.guard.d.ts.map +1 -0
  358. package/dist/modules/platform-integration/entities/github/githubPullRequestEvent.guard.js +28 -0
  359. package/dist/modules/platform-integration/entities/github/githubPullRequestEvent.guard.js.map +1 -0
  360. package/dist/modules/platform-integration/entities/gitlab/gitlabMergeRequestEvent.guard.d.ts +97 -0
  361. package/dist/modules/platform-integration/entities/gitlab/gitlabMergeRequestEvent.guard.d.ts.map +1 -0
  362. package/dist/modules/platform-integration/entities/gitlab/gitlabMergeRequestEvent.guard.js +52 -0
  363. package/dist/modules/platform-integration/entities/gitlab/gitlabMergeRequestEvent.guard.js.map +1 -0
  364. package/dist/modules/platform-integration/entities/threadFetch/threadFetch.gateway.d.ts +5 -0
  365. package/dist/modules/platform-integration/entities/threadFetch/threadFetch.gateway.d.ts.map +1 -0
  366. package/dist/modules/platform-integration/entities/threadFetch/threadFetch.gateway.js.map +1 -0
  367. package/dist/modules/platform-integration/interface-adapters/adapters/githubPullRequest.adapter.d.ts +6 -0
  368. package/dist/modules/platform-integration/interface-adapters/adapters/githubPullRequest.adapter.d.ts.map +1 -0
  369. package/dist/modules/platform-integration/interface-adapters/adapters/githubPullRequest.adapter.js.map +1 -0
  370. package/dist/modules/platform-integration/interface-adapters/adapters/gitlabMergeRequest.adapter.d.ts +6 -0
  371. package/dist/modules/platform-integration/interface-adapters/adapters/gitlabMergeRequest.adapter.d.ts.map +1 -0
  372. package/dist/modules/platform-integration/interface-adapters/adapters/gitlabMergeRequest.adapter.js.map +1 -0
  373. package/dist/modules/platform-integration/interface-adapters/adapters/platformAdapter.d.ts +9 -0
  374. package/dist/modules/platform-integration/interface-adapters/adapters/platformAdapter.d.ts.map +1 -0
  375. package/dist/modules/platform-integration/interface-adapters/adapters/platformAdapter.js +16 -0
  376. package/dist/modules/platform-integration/interface-adapters/adapters/platformAdapter.js.map +1 -0
  377. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/eventFilter.d.ts +76 -0
  378. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/eventFilter.d.ts.map +1 -0
  379. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/eventFilter.js +278 -0
  380. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/eventFilter.js.map +1 -0
  381. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.d.ts +35 -0
  382. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.d.ts.map +1 -0
  383. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.js +470 -0
  384. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.js.map +1 -0
  385. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/gitlab.controller.d.ts +36 -0
  386. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/gitlab.controller.d.ts.map +1 -0
  387. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/gitlab.controller.js +523 -0
  388. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/gitlab.controller.js.map +1 -0
  389. package/dist/modules/platform-integration/interface-adapters/gateways/diffMetadataFetch.github.gateway.d.ts +9 -0
  390. package/dist/modules/platform-integration/interface-adapters/gateways/diffMetadataFetch.github.gateway.d.ts.map +1 -0
  391. package/dist/modules/platform-integration/interface-adapters/gateways/diffMetadataFetch.github.gateway.js.map +1 -0
  392. package/dist/modules/platform-integration/interface-adapters/gateways/diffMetadataFetch.gitlab.gateway.d.ts +9 -0
  393. package/dist/modules/platform-integration/interface-adapters/gateways/diffMetadataFetch.gitlab.gateway.d.ts.map +1 -0
  394. package/dist/modules/platform-integration/interface-adapters/gateways/diffMetadataFetch.gitlab.gateway.js.map +1 -0
  395. package/dist/modules/platform-integration/interface-adapters/gateways/threadFetch.github.gateway.d.ts +10 -0
  396. package/dist/modules/platform-integration/interface-adapters/gateways/threadFetch.github.gateway.d.ts.map +1 -0
  397. package/dist/modules/platform-integration/interface-adapters/gateways/threadFetch.github.gateway.js.map +1 -0
  398. package/dist/modules/platform-integration/interface-adapters/gateways/threadFetch.gitlab.gateway.d.ts +10 -0
  399. package/dist/modules/platform-integration/interface-adapters/gateways/threadFetch.gitlab.gateway.d.ts.map +1 -0
  400. package/dist/modules/platform-integration/interface-adapters/gateways/threadFetch.gitlab.gateway.js.map +1 -0
  401. package/dist/modules/review-execution/entities/job/jobContext.gateway.d.ts.map +1 -0
  402. package/dist/modules/review-execution/entities/job/jobContext.gateway.js.map +1 -0
  403. package/dist/modules/review-execution/entities/modelRouting/modelRouting.gateway.d.ts +5 -0
  404. package/dist/modules/review-execution/entities/modelRouting/modelRouting.gateway.d.ts.map +1 -0
  405. package/dist/modules/review-execution/entities/modelRouting/modelRouting.gateway.js.map +1 -0
  406. package/dist/modules/review-execution/entities/modelRouting/modelRouting.schema.d.ts.map +1 -0
  407. package/dist/modules/review-execution/entities/modelRouting/modelRouting.schema.js.map +1 -0
  408. package/dist/modules/review-execution/entities/progress/agentDefinition.type.d.ts.map +1 -0
  409. package/dist/modules/review-execution/entities/progress/agentDefinition.type.js.map +1 -0
  410. package/dist/modules/review-execution/entities/progress/progress.calculator.d.ts.map +1 -0
  411. package/dist/modules/review-execution/entities/progress/progress.calculator.js.map +1 -0
  412. package/dist/modules/review-execution/entities/progress/progress.factory.d.ts.map +1 -0
  413. package/dist/modules/review-execution/entities/progress/progress.factory.js.map +1 -0
  414. package/dist/modules/review-execution/entities/progress/progress.gateway.d.ts.map +1 -0
  415. package/dist/modules/review-execution/entities/progress/progress.gateway.js.map +1 -0
  416. package/dist/modules/review-execution/entities/progress/progress.type.d.ts.map +1 -0
  417. package/dist/modules/review-execution/entities/progress/progress.type.js.map +1 -0
  418. package/dist/modules/review-execution/entities/review/reviewFile.gateway.d.ts.map +1 -0
  419. package/dist/modules/review-execution/entities/review/reviewFile.gateway.js.map +1 -0
  420. package/dist/modules/review-execution/entities/review/reviewScore.valueObject.d.ts.map +1 -0
  421. package/dist/modules/review-execution/entities/review/reviewScore.valueObject.js.map +1 -0
  422. package/dist/modules/review-execution/entities/reviewAction/reviewAction.d.ts.map +1 -0
  423. package/dist/modules/review-execution/entities/reviewAction/reviewAction.gateway.d.ts.map +1 -0
  424. package/dist/modules/review-execution/entities/reviewAction/reviewAction.gateway.js.map +1 -0
  425. package/dist/modules/review-execution/entities/reviewAction/reviewAction.guard.d.ts +27 -0
  426. package/dist/modules/review-execution/entities/reviewAction/reviewAction.guard.d.ts.map +1 -0
  427. package/dist/modules/review-execution/entities/reviewAction/reviewAction.guard.js +8 -0
  428. package/dist/modules/review-execution/entities/reviewAction/reviewAction.guard.js.map +1 -0
  429. package/dist/modules/review-execution/entities/reviewAction/reviewAction.js.map +1 -0
  430. package/dist/modules/review-execution/entities/reviewAction/reviewAction.schema.d.ts.map +1 -0
  431. package/dist/modules/review-execution/entities/reviewAction/reviewAction.schema.js.map +1 -0
  432. package/dist/modules/review-execution/entities/reviewContext/reviewContext.d.ts +63 -0
  433. package/dist/modules/review-execution/entities/reviewContext/reviewContext.d.ts.map +1 -0
  434. package/dist/modules/review-execution/entities/reviewContext/reviewContext.gateway.d.ts +17 -0
  435. package/dist/modules/review-execution/entities/reviewContext/reviewContext.gateway.d.ts.map +1 -0
  436. package/dist/modules/review-execution/entities/reviewContext/reviewContext.gateway.js.map +1 -0
  437. package/dist/modules/review-execution/entities/reviewContext/reviewContext.js.map +1 -0
  438. package/dist/modules/review-execution/entities/reviewContext/reviewContext.schema.d.ts.map +1 -0
  439. package/dist/modules/review-execution/entities/reviewContext/reviewContext.schema.js +43 -0
  440. package/dist/modules/review-execution/entities/reviewContext/reviewContext.schema.js.map +1 -0
  441. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.guard.d.ts +18 -0
  442. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.guard.d.ts.map +1 -0
  443. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.guard.js +13 -0
  444. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.guard.js.map +1 -0
  445. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.schema.d.ts +14 -0
  446. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.schema.d.ts.map +1 -0
  447. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.schema.js +9 -0
  448. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.schema.js.map +1 -0
  449. package/dist/modules/review-execution/entities/reviewRequest/reviewRequest.entity.d.ts.map +1 -0
  450. package/dist/modules/review-execution/entities/reviewRequest/reviewRequest.entity.js.map +1 -0
  451. package/dist/modules/review-execution/entities/reviewRequest/reviewRequest.guard.d.ts.map +1 -0
  452. package/dist/modules/review-execution/entities/reviewRequest/reviewRequest.guard.js.map +1 -0
  453. package/dist/modules/review-execution/entities/reviewRequest/reviewRequestState.valueObject.d.ts.map +1 -0
  454. package/dist/modules/review-execution/entities/reviewRequest/reviewRequestState.valueObject.js.map +1 -0
  455. package/dist/modules/review-execution/interface-adapters/controllers/http/reviews.routes.d.ts +18 -0
  456. package/dist/modules/review-execution/interface-adapters/controllers/http/reviews.routes.d.ts.map +1 -0
  457. package/dist/modules/review-execution/interface-adapters/controllers/http/reviews.routes.js +96 -0
  458. package/dist/modules/review-execution/interface-adapters/controllers/http/reviews.routes.js.map +1 -0
  459. package/dist/modules/review-execution/interface-adapters/controllers/mcp/addAction.handler.d.ts +4 -0
  460. package/dist/modules/review-execution/interface-adapters/controllers/mcp/addAction.handler.d.ts.map +1 -0
  461. package/dist/modules/review-execution/interface-adapters/controllers/mcp/addAction.handler.js.map +1 -0
  462. package/dist/modules/review-execution/interface-adapters/controllers/mcp/completeAgent.handler.d.ts +4 -0
  463. package/dist/modules/review-execution/interface-adapters/controllers/mcp/completeAgent.handler.d.ts.map +1 -0
  464. package/dist/modules/review-execution/interface-adapters/controllers/mcp/completeAgent.handler.js.map +1 -0
  465. package/dist/modules/review-execution/interface-adapters/controllers/mcp/getThreads.handler.d.ts +4 -0
  466. package/dist/modules/review-execution/interface-adapters/controllers/mcp/getThreads.handler.d.ts.map +1 -0
  467. package/dist/modules/review-execution/interface-adapters/controllers/mcp/getThreads.handler.js.map +1 -0
  468. package/dist/modules/review-execution/interface-adapters/controllers/mcp/getWorkflow.handler.d.ts +4 -0
  469. package/dist/modules/review-execution/interface-adapters/controllers/mcp/getWorkflow.handler.d.ts.map +1 -0
  470. package/dist/modules/review-execution/interface-adapters/controllers/mcp/getWorkflow.handler.js.map +1 -0
  471. package/dist/modules/review-execution/interface-adapters/controllers/mcp/setPhase.handler.d.ts +4 -0
  472. package/dist/modules/review-execution/interface-adapters/controllers/mcp/setPhase.handler.d.ts.map +1 -0
  473. package/dist/modules/review-execution/interface-adapters/controllers/mcp/setPhase.handler.js.map +1 -0
  474. package/dist/modules/review-execution/interface-adapters/controllers/mcp/startAgent.handler.d.ts +4 -0
  475. package/dist/modules/review-execution/interface-adapters/controllers/mcp/startAgent.handler.d.ts.map +1 -0
  476. package/dist/modules/review-execution/interface-adapters/controllers/mcp/startAgent.handler.js.map +1 -0
  477. package/dist/modules/review-execution/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.d.ts +7 -0
  478. package/dist/modules/review-execution/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.d.ts.map +1 -0
  479. package/dist/modules/review-execution/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.js +71 -0
  480. package/dist/modules/review-execution/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.js.map +1 -0
  481. package/dist/modules/review-execution/interface-adapters/gateways/cli/reviewAction.gitlab.cli.gateway.d.ts +7 -0
  482. package/dist/modules/review-execution/interface-adapters/gateways/cli/reviewAction.gitlab.cli.gateway.d.ts.map +1 -0
  483. package/dist/modules/review-execution/interface-adapters/gateways/cli/reviewAction.gitlab.cli.gateway.js +63 -0
  484. package/dist/modules/review-execution/interface-adapters/gateways/cli/reviewAction.gitlab.cli.gateway.js.map +1 -0
  485. package/dist/modules/review-execution/interface-adapters/gateways/fileSystem/reviewFile.fileSystem.d.ts.map +1 -0
  486. package/dist/modules/review-execution/interface-adapters/gateways/fileSystem/reviewFile.fileSystem.js.map +1 -0
  487. package/dist/modules/review-execution/interface-adapters/gateways/jobContext.memory.gateway.d.ts.map +1 -0
  488. package/dist/modules/review-execution/interface-adapters/gateways/jobContext.memory.gateway.js.map +1 -0
  489. package/dist/modules/review-execution/interface-adapters/gateways/projectConfig/routingPolicy.projectConfig.gateway.d.ts +6 -0
  490. package/dist/modules/review-execution/interface-adapters/gateways/projectConfig/routingPolicy.projectConfig.gateway.d.ts.map +1 -0
  491. package/dist/modules/review-execution/interface-adapters/gateways/projectConfig/routingPolicy.projectConfig.gateway.js +8 -0
  492. package/dist/modules/review-execution/interface-adapters/gateways/projectConfig/routingPolicy.projectConfig.gateway.js.map +1 -0
  493. package/dist/modules/review-execution/interface-adapters/gateways/reviewContext.fileSystem.gateway.d.ts +15 -0
  494. package/dist/modules/review-execution/interface-adapters/gateways/reviewContext.fileSystem.gateway.d.ts.map +1 -0
  495. package/dist/modules/review-execution/interface-adapters/gateways/reviewContext.fileSystem.gateway.js +87 -0
  496. package/dist/modules/review-execution/interface-adapters/gateways/reviewContext.fileSystem.gateway.js.map +1 -0
  497. package/dist/modules/review-execution/interface-adapters/gateways/reviewFile.gateway.d.ts +2 -0
  498. package/dist/modules/review-execution/interface-adapters/gateways/reviewFile.gateway.d.ts.map +1 -0
  499. package/dist/modules/review-execution/interface-adapters/gateways/reviewFile.gateway.js.map +1 -0
  500. package/dist/modules/review-execution/interface-adapters/gateways/reviewProgress.memory.gateway.d.ts.map +1 -0
  501. package/dist/modules/review-execution/interface-adapters/gateways/reviewProgress.memory.gateway.js.map +1 -0
  502. package/dist/modules/review-execution/interface-adapters/presenters/jobStatus.presenter.d.ts +29 -0
  503. package/dist/modules/review-execution/interface-adapters/presenters/jobStatus.presenter.d.ts.map +1 -0
  504. package/dist/modules/review-execution/interface-adapters/presenters/jobStatus.presenter.js +57 -0
  505. package/dist/modules/review-execution/interface-adapters/presenters/jobStatus.presenter.js.map +1 -0
  506. package/dist/modules/review-execution/interface-adapters/presenters/reviewContextProgress.presenter.d.ts +8 -0
  507. package/dist/modules/review-execution/interface-adapters/presenters/reviewContextProgress.presenter.d.ts.map +1 -0
  508. package/dist/modules/review-execution/interface-adapters/presenters/reviewContextProgress.presenter.js +45 -0
  509. package/dist/modules/review-execution/interface-adapters/presenters/reviewContextProgress.presenter.js.map +1 -0
  510. package/dist/modules/review-execution/interface-adapters/presenters/reviewList.presenter.d.ts +22 -0
  511. package/dist/modules/review-execution/interface-adapters/presenters/reviewList.presenter.d.ts.map +1 -0
  512. package/dist/modules/review-execution/interface-adapters/presenters/reviewList.presenter.js.map +1 -0
  513. package/dist/modules/review-execution/services/agentInstructionsBuilder.d.ts +4 -0
  514. package/dist/modules/review-execution/services/agentInstructionsBuilder.d.ts.map +1 -0
  515. package/dist/modules/review-execution/services/agentInstructionsBuilder.js.map +1 -0
  516. package/dist/modules/review-execution/services/commentLinkEnricher.d.ts.map +1 -0
  517. package/dist/modules/review-execution/services/commentLinkEnricher.js.map +1 -0
  518. package/dist/modules/review-execution/services/contextActionsExecutor.d.ts +19 -0
  519. package/dist/modules/review-execution/services/contextActionsExecutor.d.ts.map +1 -0
  520. package/dist/modules/review-execution/services/contextActionsExecutor.js +19 -0
  521. package/dist/modules/review-execution/services/contextActionsExecutor.js.map +1 -0
  522. package/dist/modules/review-execution/services/reviewContextWatcher.service.d.ts +15 -0
  523. package/dist/modules/review-execution/services/reviewContextWatcher.service.d.ts.map +1 -0
  524. package/dist/modules/review-execution/services/reviewContextWatcher.service.js.map +1 -0
  525. package/dist/modules/review-execution/services/threadActionsExecutor.d.ts +26 -0
  526. package/dist/modules/review-execution/services/threadActionsExecutor.d.ts.map +1 -0
  527. package/dist/modules/review-execution/services/threadActionsExecutor.js +28 -0
  528. package/dist/modules/review-execution/services/threadActionsExecutor.js.map +1 -0
  529. package/dist/modules/review-execution/services/threadActionsParser.d.ts +4 -0
  530. package/dist/modules/review-execution/services/threadActionsParser.d.ts.map +1 -0
  531. package/dist/modules/review-execution/services/threadActionsParser.js.map +1 -0
  532. package/dist/modules/review-execution/usecases/cancelReview.usecase.d.ts.map +1 -0
  533. package/dist/modules/review-execution/usecases/cancelReview.usecase.js.map +1 -0
  534. package/dist/modules/review-execution/usecases/handleReviewRequestPush.usecase.d.ts +26 -0
  535. package/dist/modules/review-execution/usecases/handleReviewRequestPush.usecase.d.ts.map +1 -0
  536. package/dist/modules/review-execution/usecases/handleReviewRequestPush.usecase.js.map +1 -0
  537. package/dist/modules/review-execution/usecases/mcp/addAction.usecase.d.ts.map +1 -0
  538. package/dist/modules/review-execution/usecases/mcp/addAction.usecase.js.map +1 -0
  539. package/dist/modules/review-execution/usecases/mcp/completeAgent.usecase.d.ts.map +1 -0
  540. package/dist/modules/review-execution/usecases/mcp/completeAgent.usecase.js.map +1 -0
  541. package/dist/modules/review-execution/usecases/mcp/getThreads.usecase.d.ts.map +1 -0
  542. package/dist/modules/review-execution/usecases/mcp/getThreads.usecase.js.map +1 -0
  543. package/dist/modules/review-execution/usecases/mcp/getWorkflow.usecase.d.ts.map +1 -0
  544. package/dist/modules/review-execution/usecases/mcp/getWorkflow.usecase.js.map +1 -0
  545. package/dist/modules/review-execution/usecases/mcp/setPhase.usecase.d.ts +17 -0
  546. package/dist/modules/review-execution/usecases/mcp/setPhase.usecase.d.ts.map +1 -0
  547. package/dist/modules/review-execution/usecases/mcp/setPhase.usecase.js +19 -0
  548. package/dist/modules/review-execution/usecases/mcp/setPhase.usecase.js.map +1 -0
  549. package/dist/modules/review-execution/usecases/mcp/startAgent.usecase.d.ts.map +1 -0
  550. package/dist/modules/review-execution/usecases/mcp/startAgent.usecase.js.map +1 -0
  551. package/dist/modules/review-execution/usecases/selectModelForReview/selectModelForReview.usecase.d.ts +15 -0
  552. package/dist/modules/review-execution/usecases/selectModelForReview/selectModelForReview.usecase.d.ts.map +1 -0
  553. package/dist/modules/review-execution/usecases/selectModelForReview/selectModelForReview.usecase.js.map +1 -0
  554. package/dist/modules/review-execution/usecases/triggerReview.usecase.d.ts +43 -0
  555. package/dist/modules/review-execution/usecases/triggerReview.usecase.d.ts.map +1 -0
  556. package/dist/modules/review-execution/usecases/triggerReview.usecase.js.map +1 -0
  557. package/dist/modules/shared-kernel/entities/diffStats/diffStats.d.ts.map +1 -0
  558. package/dist/modules/shared-kernel/entities/diffStats/diffStats.js.map +1 -0
  559. package/dist/modules/shared-kernel/entities/diffStats/diffStatsFetch.gateway.d.ts +5 -0
  560. package/dist/modules/shared-kernel/entities/diffStats/diffStatsFetch.gateway.d.ts.map +1 -0
  561. package/dist/modules/shared-kernel/entities/diffStats/diffStatsFetch.gateway.js.map +1 -0
  562. package/dist/modules/shared-kernel/entities/language/language.schema.d.ts.map +1 -0
  563. package/dist/modules/shared-kernel/entities/language/language.schema.js.map +1 -0
  564. package/dist/modules/shared-kernel/entities/shared/duration.valueObject.d.ts.map +1 -0
  565. package/dist/modules/shared-kernel/entities/shared/duration.valueObject.js.map +1 -0
  566. package/dist/modules/statistics-insights/entities/backfill/backfillProgress.d.ts.map +1 -0
  567. package/dist/modules/statistics-insights/entities/backfill/backfillProgress.js.map +1 -0
  568. package/dist/modules/statistics-insights/entities/insight/aiInsight.d.ts +6 -0
  569. package/dist/modules/statistics-insights/entities/insight/aiInsight.d.ts.map +1 -0
  570. package/dist/modules/statistics-insights/entities/insight/aiInsight.js.map +1 -0
  571. package/dist/modules/statistics-insights/entities/insight/aiInsight.schema.d.ts.map +1 -0
  572. package/dist/modules/statistics-insights/entities/insight/aiInsight.schema.js.map +1 -0
  573. package/dist/modules/statistics-insights/entities/insight/developerInsight.d.ts +8 -0
  574. package/dist/modules/statistics-insights/entities/insight/developerInsight.d.ts.map +1 -0
  575. package/dist/modules/statistics-insights/entities/insight/developerInsight.guard.d.ts +90 -0
  576. package/dist/modules/statistics-insights/entities/insight/developerInsight.guard.d.ts.map +1 -0
  577. package/dist/modules/statistics-insights/entities/insight/developerInsight.guard.js +13 -0
  578. package/dist/modules/statistics-insights/entities/insight/developerInsight.guard.js.map +1 -0
  579. package/dist/modules/statistics-insights/entities/insight/developerInsight.js.map +1 -0
  580. package/dist/modules/statistics-insights/entities/insight/developerInsight.schema.d.ts.map +1 -0
  581. package/dist/modules/statistics-insights/entities/insight/developerInsight.schema.js +43 -0
  582. package/dist/modules/statistics-insights/entities/insight/developerInsight.schema.js.map +1 -0
  583. package/dist/modules/statistics-insights/entities/insight/developerTitle.d.ts.map +1 -0
  584. package/dist/modules/statistics-insights/entities/insight/developerTitle.js.map +1 -0
  585. package/dist/modules/statistics-insights/entities/insight/insightCategory.d.ts.map +1 -0
  586. package/dist/modules/statistics-insights/entities/insight/insightCategory.js.map +1 -0
  587. package/dist/modules/statistics-insights/entities/insight/insightTrend.d.ts.map +1 -0
  588. package/dist/modules/statistics-insights/entities/insight/insightTrend.js.map +1 -0
  589. package/dist/modules/statistics-insights/entities/insight/insights.gateway.d.ts +6 -0
  590. package/dist/modules/statistics-insights/entities/insight/insights.gateway.d.ts.map +1 -0
  591. package/dist/modules/statistics-insights/entities/insight/insights.gateway.js.map +1 -0
  592. package/dist/modules/statistics-insights/entities/insight/persistedInsightsData.d.ts +5 -0
  593. package/dist/modules/statistics-insights/entities/insight/persistedInsightsData.d.ts.map +1 -0
  594. package/dist/modules/statistics-insights/entities/insight/persistedInsightsData.guard.d.ts +110 -0
  595. package/dist/modules/statistics-insights/entities/insight/persistedInsightsData.guard.d.ts.map +1 -0
  596. package/dist/modules/statistics-insights/entities/insight/persistedInsightsData.guard.js +13 -0
  597. package/dist/modules/statistics-insights/entities/insight/persistedInsightsData.guard.js.map +1 -0
  598. package/dist/modules/statistics-insights/entities/insight/persistedInsightsData.js.map +1 -0
  599. package/dist/modules/statistics-insights/entities/insight/persistedInsightsData.schema.d.ts.map +1 -0
  600. package/dist/modules/statistics-insights/entities/insight/persistedInsightsData.schema.js +40 -0
  601. package/dist/modules/statistics-insights/entities/insight/persistedInsightsData.schema.js.map +1 -0
  602. package/dist/modules/statistics-insights/entities/insight/teamInsight.d.ts +5 -0
  603. package/dist/modules/statistics-insights/entities/insight/teamInsight.d.ts.map +1 -0
  604. package/dist/modules/statistics-insights/entities/insight/teamInsight.guard.d.ts +30 -0
  605. package/dist/modules/statistics-insights/entities/insight/teamInsight.guard.d.ts.map +1 -0
  606. package/dist/modules/statistics-insights/entities/insight/teamInsight.guard.js +13 -0
  607. package/dist/modules/statistics-insights/entities/insight/teamInsight.guard.js.map +1 -0
  608. package/dist/modules/statistics-insights/entities/insight/teamInsight.js.map +1 -0
  609. package/dist/modules/statistics-insights/entities/insight/teamInsight.schema.d.ts.map +1 -0
  610. package/dist/modules/statistics-insights/entities/insight/teamInsight.schema.js +17 -0
  611. package/dist/modules/statistics-insights/entities/insight/teamInsight.schema.js.map +1 -0
  612. package/dist/modules/statistics-insights/entities/stats/projectStats.d.ts +39 -0
  613. package/dist/modules/statistics-insights/entities/stats/projectStats.d.ts.map +1 -0
  614. package/dist/modules/statistics-insights/entities/stats/projectStats.js.map +1 -0
  615. package/dist/modules/statistics-insights/entities/stats/recalculateBody.guard.d.ts +11 -0
  616. package/dist/modules/statistics-insights/entities/stats/recalculateBody.guard.d.ts.map +1 -0
  617. package/dist/modules/statistics-insights/entities/stats/recalculateBody.guard.js +9 -0
  618. package/dist/modules/statistics-insights/entities/stats/recalculateBody.guard.js.map +1 -0
  619. package/dist/modules/statistics-insights/entities/stats/stats.gateway.d.ts +7 -0
  620. package/dist/modules/statistics-insights/entities/stats/stats.gateway.d.ts.map +1 -0
  621. package/dist/modules/statistics-insights/entities/stats/stats.gateway.js.map +1 -0
  622. package/dist/modules/statistics-insights/interface-adapters/controllers/http/insights.routes.d.ts +20 -0
  623. package/dist/modules/statistics-insights/interface-adapters/controllers/http/insights.routes.d.ts.map +1 -0
  624. package/dist/modules/statistics-insights/interface-adapters/controllers/http/insights.routes.js +73 -0
  625. package/dist/modules/statistics-insights/interface-adapters/controllers/http/insights.routes.js.map +1 -0
  626. package/dist/modules/statistics-insights/interface-adapters/controllers/http/stats.routes.d.ts +27 -0
  627. package/dist/modules/statistics-insights/interface-adapters/controllers/http/stats.routes.d.ts.map +1 -0
  628. package/dist/modules/statistics-insights/interface-adapters/controllers/http/stats.routes.js +70 -0
  629. package/dist/modules/statistics-insights/interface-adapters/controllers/http/stats.routes.js.map +1 -0
  630. package/dist/modules/statistics-insights/interface-adapters/gateways/diffStatsFetch.github.gateway.d.ts +10 -0
  631. package/dist/modules/statistics-insights/interface-adapters/gateways/diffStatsFetch.github.gateway.d.ts.map +1 -0
  632. package/dist/modules/statistics-insights/interface-adapters/gateways/diffStatsFetch.github.gateway.js.map +1 -0
  633. package/dist/modules/statistics-insights/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.d.ts +10 -0
  634. package/dist/modules/statistics-insights/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.d.ts.map +1 -0
  635. package/dist/modules/statistics-insights/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.js.map +1 -0
  636. package/dist/modules/statistics-insights/interface-adapters/gateways/fileSystem/insights.fileSystem.d.ts +7 -0
  637. package/dist/modules/statistics-insights/interface-adapters/gateways/fileSystem/insights.fileSystem.d.ts.map +1 -0
  638. package/dist/modules/statistics-insights/interface-adapters/gateways/fileSystem/insights.fileSystem.js +33 -0
  639. package/dist/modules/statistics-insights/interface-adapters/gateways/fileSystem/insights.fileSystem.js.map +1 -0
  640. package/dist/modules/statistics-insights/interface-adapters/gateways/fileSystem/stats.fileSystem.d.ts +8 -0
  641. package/dist/modules/statistics-insights/interface-adapters/gateways/fileSystem/stats.fileSystem.d.ts.map +1 -0
  642. package/dist/modules/statistics-insights/interface-adapters/gateways/fileSystem/stats.fileSystem.js.map +1 -0
  643. package/dist/modules/statistics-insights/interface-adapters/gateways/stats.gateway.d.ts +2 -0
  644. package/dist/modules/statistics-insights/interface-adapters/gateways/stats.gateway.d.ts.map +1 -0
  645. package/dist/modules/statistics-insights/interface-adapters/gateways/stats.gateway.js.map +1 -0
  646. package/dist/modules/statistics-insights/interface-adapters/presenters/insights.presenter.d.ts +41 -0
  647. package/dist/modules/statistics-insights/interface-adapters/presenters/insights.presenter.d.ts.map +1 -0
  648. package/dist/modules/statistics-insights/interface-adapters/presenters/insights.presenter.js.map +1 -0
  649. package/dist/modules/statistics-insights/interface-adapters/presenters/projectStats.calculator.d.ts +8 -0
  650. package/dist/modules/statistics-insights/interface-adapters/presenters/projectStats.calculator.d.ts.map +1 -0
  651. package/dist/modules/statistics-insights/interface-adapters/presenters/projectStats.calculator.js.map +1 -0
  652. package/dist/modules/statistics-insights/services/statsService.d.ts +52 -0
  653. package/dist/modules/statistics-insights/services/statsService.d.ts.map +1 -0
  654. package/dist/modules/statistics-insights/services/statsService.js.map +1 -0
  655. package/dist/modules/statistics-insights/usecases/insights/buildAiInsightsPrompt.d.ts +12 -0
  656. package/dist/modules/statistics-insights/usecases/insights/buildAiInsightsPrompt.d.ts.map +1 -0
  657. package/dist/modules/statistics-insights/usecases/insights/buildAiInsightsPrompt.js.map +1 -0
  658. package/dist/modules/statistics-insights/usecases/insights/computeDeveloperInsights.usecase.d.ts +4 -0
  659. package/dist/modules/statistics-insights/usecases/insights/computeDeveloperInsights.usecase.d.ts.map +1 -0
  660. package/dist/modules/statistics-insights/usecases/insights/computeDeveloperInsights.usecase.js +226 -0
  661. package/dist/modules/statistics-insights/usecases/insights/computeDeveloperInsights.usecase.js.map +1 -0
  662. package/dist/modules/statistics-insights/usecases/insights/computeInsightsWithPersistence.usecase.d.ts +12 -0
  663. package/dist/modules/statistics-insights/usecases/insights/computeInsightsWithPersistence.usecase.d.ts.map +1 -0
  664. package/dist/modules/statistics-insights/usecases/insights/computeInsightsWithPersistence.usecase.js +340 -0
  665. package/dist/modules/statistics-insights/usecases/insights/computeInsightsWithPersistence.usecase.js.map +1 -0
  666. package/dist/modules/statistics-insights/usecases/insights/computeTeamInsights.usecase.d.ts +4 -0
  667. package/dist/modules/statistics-insights/usecases/insights/computeTeamInsights.usecase.d.ts.map +1 -0
  668. package/dist/modules/statistics-insights/usecases/insights/computeTeamInsights.usecase.js +111 -0
  669. package/dist/modules/statistics-insights/usecases/insights/computeTeamInsights.usecase.js.map +1 -0
  670. package/dist/modules/statistics-insights/usecases/insights/generateAiInsights.usecase.d.ts +27 -0
  671. package/dist/modules/statistics-insights/usecases/insights/generateAiInsights.usecase.d.ts.map +1 -0
  672. package/dist/modules/statistics-insights/usecases/insights/generateAiInsights.usecase.js +65 -0
  673. package/dist/modules/statistics-insights/usecases/insights/generateAiInsights.usecase.js.map +1 -0
  674. package/dist/modules/statistics-insights/usecases/insights/getInsightsWithAiStatus.usecase.d.ts +18 -0
  675. package/dist/modules/statistics-insights/usecases/insights/getInsightsWithAiStatus.usecase.d.ts.map +1 -0
  676. package/dist/modules/statistics-insights/usecases/insights/getInsightsWithAiStatus.usecase.js +56 -0
  677. package/dist/modules/statistics-insights/usecases/insights/getInsightsWithAiStatus.usecase.js.map +1 -0
  678. package/dist/modules/statistics-insights/usecases/insights/insightLevelComputation.service.d.ts +41 -0
  679. package/dist/modules/statistics-insights/usecases/insights/insightLevelComputation.service.d.ts.map +1 -0
  680. package/dist/modules/statistics-insights/usecases/insights/insightLevelComputation.service.js +313 -0
  681. package/dist/modules/statistics-insights/usecases/insights/insightLevelComputation.service.js.map +1 -0
  682. package/dist/modules/statistics-insights/usecases/stats/backfillDiffStats.usecase.d.ts +18 -0
  683. package/dist/modules/statistics-insights/usecases/stats/backfillDiffStats.usecase.d.ts.map +1 -0
  684. package/dist/modules/statistics-insights/usecases/stats/backfillDiffStats.usecase.js.map +1 -0
  685. package/dist/modules/statistics-insights/usecases/stats/recalculateProjectStats.usecase.d.ts +7 -0
  686. package/dist/modules/statistics-insights/usecases/stats/recalculateProjectStats.usecase.d.ts.map +1 -0
  687. package/dist/modules/statistics-insights/usecases/stats/recalculateProjectStats.usecase.js.map +1 -0
  688. package/dist/modules/statistics-insights/usecases/stats/recalculateWithBackfill.usecase.d.ts +22 -0
  689. package/dist/modules/statistics-insights/usecases/stats/recalculateWithBackfill.usecase.d.ts.map +1 -0
  690. package/dist/modules/statistics-insights/usecases/stats/recalculateWithBackfill.usecase.js +33 -0
  691. package/dist/modules/statistics-insights/usecases/stats/recalculateWithBackfill.usecase.js.map +1 -0
  692. package/dist/modules/token-accounting/entities/budget/budget.gateway.d.ts +6 -0
  693. package/dist/modules/token-accounting/entities/budget/budget.gateway.d.ts.map +1 -0
  694. package/dist/modules/token-accounting/entities/budget/budget.gateway.js +2 -0
  695. package/dist/modules/token-accounting/entities/budget/budget.gateway.js.map +1 -0
  696. package/dist/modules/token-accounting/entities/budget/budgetConfig.guard.d.ts +4 -0
  697. package/dist/modules/token-accounting/entities/budget/budgetConfig.guard.d.ts.map +1 -0
  698. package/dist/modules/token-accounting/entities/budget/budgetConfig.guard.js +4 -0
  699. package/dist/modules/token-accounting/entities/budget/budgetConfig.guard.js.map +1 -0
  700. package/dist/modules/token-accounting/entities/budget/budgetConfig.schema.d.ts +9 -0
  701. package/dist/modules/token-accounting/entities/budget/budgetConfig.schema.d.ts.map +1 -0
  702. package/dist/modules/token-accounting/entities/budget/budgetConfig.schema.js +8 -0
  703. package/dist/modules/token-accounting/entities/budget/budgetConfig.schema.js.map +1 -0
  704. package/dist/modules/token-accounting/entities/budget/budgetStatus.d.ts +9 -0
  705. package/dist/modules/token-accounting/entities/budget/budgetStatus.d.ts.map +1 -0
  706. package/dist/modules/token-accounting/entities/budget/budgetStatus.js +2 -0
  707. package/dist/modules/token-accounting/entities/budget/budgetStatus.js.map +1 -0
  708. package/dist/modules/token-accounting/entities/tokenUsage/tokenUsage.gateway.d.ts +6 -0
  709. package/dist/modules/token-accounting/entities/tokenUsage/tokenUsage.gateway.d.ts.map +1 -0
  710. package/dist/modules/token-accounting/entities/tokenUsage/tokenUsage.gateway.js.map +1 -0
  711. package/dist/modules/token-accounting/entities/tokenUsage/tokenUsage.schema.d.ts.map +1 -0
  712. package/dist/modules/token-accounting/entities/tokenUsage/tokenUsage.schema.js.map +1 -0
  713. package/dist/modules/token-accounting/interface-adapters/controllers/http/budget.routes.d.ts +16 -0
  714. package/dist/modules/token-accounting/interface-adapters/controllers/http/budget.routes.d.ts.map +1 -0
  715. package/dist/modules/token-accounting/interface-adapters/controllers/http/budget.routes.js +32 -0
  716. package/dist/modules/token-accounting/interface-adapters/controllers/http/budget.routes.js.map +1 -0
  717. package/dist/modules/token-accounting/interface-adapters/controllers/http/tokenUsage.routes.d.ts +9 -0
  718. package/dist/modules/token-accounting/interface-adapters/controllers/http/tokenUsage.routes.d.ts.map +1 -0
  719. package/dist/modules/token-accounting/interface-adapters/controllers/http/tokenUsage.routes.js +13 -0
  720. package/dist/modules/token-accounting/interface-adapters/controllers/http/tokenUsage.routes.js.map +1 -0
  721. package/dist/modules/token-accounting/interface-adapters/gateways/budget/budget.filesystem.gateway.d.ts +8 -0
  722. package/dist/modules/token-accounting/interface-adapters/gateways/budget/budget.filesystem.gateway.d.ts.map +1 -0
  723. package/dist/modules/token-accounting/interface-adapters/gateways/budget/budget.filesystem.gateway.js +44 -0
  724. package/dist/modules/token-accounting/interface-adapters/gateways/budget/budget.filesystem.gateway.js.map +1 -0
  725. package/dist/modules/token-accounting/interface-adapters/gateways/tokenUsage/tokenUsage.filesystem.gateway.d.ts +7 -0
  726. package/dist/modules/token-accounting/interface-adapters/gateways/tokenUsage/tokenUsage.filesystem.gateway.d.ts.map +1 -0
  727. package/dist/modules/token-accounting/interface-adapters/gateways/tokenUsage/tokenUsage.filesystem.gateway.js +37 -0
  728. package/dist/modules/token-accounting/interface-adapters/gateways/tokenUsage/tokenUsage.filesystem.gateway.js.map +1 -0
  729. package/dist/modules/token-accounting/interface-adapters/presenters/budgetStatus.presenter.d.ts +15 -0
  730. package/dist/modules/token-accounting/interface-adapters/presenters/budgetStatus.presenter.d.ts.map +1 -0
  731. package/dist/modules/token-accounting/interface-adapters/presenters/budgetStatus.presenter.js +20 -0
  732. package/dist/modules/token-accounting/interface-adapters/presenters/budgetStatus.presenter.js.map +1 -0
  733. package/dist/modules/token-accounting/interface-adapters/presenters/tokenUsageSummary.presenter.d.ts +19 -0
  734. package/dist/modules/token-accounting/interface-adapters/presenters/tokenUsageSummary.presenter.d.ts.map +1 -0
  735. package/dist/modules/token-accounting/interface-adapters/presenters/tokenUsageSummary.presenter.js +32 -0
  736. package/dist/modules/token-accounting/interface-adapters/presenters/tokenUsageSummary.presenter.js.map +1 -0
  737. package/dist/modules/token-accounting/usecases/enforceBudget/enforceBudget.usecase.d.ts +19 -0
  738. package/dist/modules/token-accounting/usecases/enforceBudget/enforceBudget.usecase.d.ts.map +1 -0
  739. package/dist/modules/token-accounting/usecases/enforceBudget/enforceBudget.usecase.js +14 -0
  740. package/dist/modules/token-accounting/usecases/enforceBudget/enforceBudget.usecase.js.map +1 -0
  741. package/dist/modules/token-accounting/usecases/getBudgetStatus/getBudgetStatus.usecase.d.ts +17 -0
  742. package/dist/modules/token-accounting/usecases/getBudgetStatus/getBudgetStatus.usecase.d.ts.map +1 -0
  743. package/dist/modules/token-accounting/usecases/getBudgetStatus/getBudgetStatus.usecase.js +44 -0
  744. package/dist/modules/token-accounting/usecases/getBudgetStatus/getBudgetStatus.usecase.js.map +1 -0
  745. package/dist/modules/token-accounting/usecases/summarizeTokenUsage/summarizeTokenUsage.usecase.d.ts +23 -0
  746. package/dist/modules/token-accounting/usecases/summarizeTokenUsage/summarizeTokenUsage.usecase.d.ts.map +1 -0
  747. package/dist/modules/token-accounting/usecases/summarizeTokenUsage/summarizeTokenUsage.usecase.js.map +1 -0
  748. package/dist/modules/token-accounting/usecases/trackTokenUsage/trackTokenUsage.usecase.d.ts +8 -0
  749. package/dist/modules/token-accounting/usecases/trackTokenUsage/trackTokenUsage.usecase.d.ts.map +1 -0
  750. package/dist/modules/token-accounting/usecases/trackTokenUsage/trackTokenUsage.usecase.js.map +1 -0
  751. package/dist/modules/token-accounting/usecases/updateBudget/updateBudget.usecase.d.ts +20 -0
  752. package/dist/modules/token-accounting/usecases/updateBudget/updateBudget.usecase.d.ts.map +1 -0
  753. package/dist/modules/token-accounting/usecases/updateBudget/updateBudget.usecase.js +18 -0
  754. package/dist/modules/token-accounting/usecases/updateBudget/updateBudget.usecase.js.map +1 -0
  755. package/dist/modules/tracking/entities/tracking/assignmentInfo.d.ts.map +1 -0
  756. package/dist/modules/tracking/entities/tracking/assignmentInfo.js.map +1 -0
  757. package/dist/modules/tracking/entities/tracking/mrTrackingData.d.ts.map +1 -0
  758. package/dist/modules/tracking/entities/tracking/mrTrackingData.js.map +1 -0
  759. package/dist/modules/tracking/entities/tracking/reviewEvent.d.ts +14 -0
  760. package/dist/modules/tracking/entities/tracking/reviewEvent.d.ts.map +1 -0
  761. package/dist/modules/tracking/entities/tracking/reviewEvent.js.map +1 -0
  762. package/dist/modules/tracking/entities/tracking/reviewRequestTracking.gateway.d.ts +19 -0
  763. package/dist/modules/tracking/entities/tracking/reviewRequestTracking.gateway.d.ts.map +1 -0
  764. package/dist/modules/tracking/entities/tracking/reviewRequestTracking.gateway.js.map +1 -0
  765. package/dist/modules/tracking/entities/tracking/trackedMr.d.ts.map +1 -0
  766. package/dist/modules/tracking/entities/tracking/trackedMr.js.map +1 -0
  767. package/dist/modules/tracking/interface-adapters/controllers/http/mrTracking.routes.d.ts.map +1 -0
  768. package/dist/modules/tracking/interface-adapters/controllers/http/mrTracking.routes.js +63 -0
  769. package/dist/modules/tracking/interface-adapters/controllers/http/mrTracking.routes.js.map +1 -0
  770. package/dist/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.d.ts +34 -0
  771. package/dist/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.d.ts.map +1 -0
  772. package/dist/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.js +334 -0
  773. package/dist/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.js.map +1 -0
  774. package/dist/modules/tracking/interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.d.ts +22 -0
  775. package/dist/modules/tracking/interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.d.ts.map +1 -0
  776. package/dist/modules/tracking/interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.js +142 -0
  777. package/dist/modules/tracking/interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.js.map +1 -0
  778. package/dist/modules/tracking/interface-adapters/gateways/reviewRequestTracking.gateway.d.ts +2 -0
  779. package/dist/modules/tracking/interface-adapters/gateways/reviewRequestTracking.gateway.d.ts.map +1 -0
  780. package/dist/modules/tracking/interface-adapters/gateways/reviewRequestTracking.gateway.js.map +1 -0
  781. package/dist/modules/tracking/usecases/tracking/checkFollowupNeeded.usecase.d.ts +14 -0
  782. package/dist/modules/tracking/usecases/tracking/checkFollowupNeeded.usecase.d.ts.map +1 -0
  783. package/dist/modules/tracking/usecases/tracking/checkFollowupNeeded.usecase.js.map +1 -0
  784. package/dist/modules/tracking/usecases/tracking/recordPush.usecase.d.ts +15 -0
  785. package/dist/modules/tracking/usecases/tracking/recordPush.usecase.d.ts.map +1 -0
  786. package/dist/modules/tracking/usecases/tracking/recordPush.usecase.js.map +1 -0
  787. package/dist/modules/tracking/usecases/tracking/recordReviewCompletion.usecase.d.ts +26 -0
  788. package/dist/modules/tracking/usecases/tracking/recordReviewCompletion.usecase.d.ts.map +1 -0
  789. package/dist/modules/tracking/usecases/tracking/recordReviewCompletion.usecase.js.map +1 -0
  790. package/dist/modules/tracking/usecases/tracking/syncThreads.usecase.d.ts +16 -0
  791. package/dist/modules/tracking/usecases/tracking/syncThreads.usecase.d.ts.map +1 -0
  792. package/dist/modules/tracking/usecases/tracking/syncThreads.usecase.js.map +1 -0
  793. package/dist/modules/tracking/usecases/tracking/trackAssignment.usecase.d.ts +28 -0
  794. package/dist/modules/tracking/usecases/tracking/trackAssignment.usecase.d.ts.map +1 -0
  795. package/dist/modules/tracking/usecases/tracking/trackAssignment.usecase.js +68 -0
  796. package/dist/modules/tracking/usecases/tracking/trackAssignment.usecase.js.map +1 -0
  797. package/dist/modules/tracking/usecases/tracking/transitionState.usecase.d.ts +14 -0
  798. package/dist/modules/tracking/usecases/tracking/transitionState.usecase.d.ts.map +1 -0
  799. package/dist/modules/tracking/usecases/tracking/transitionState.usecase.js.map +1 -0
  800. package/dist/shared/foundation/applicationRuleViolation.d.ts +19 -0
  801. package/dist/shared/foundation/applicationRuleViolation.d.ts.map +1 -0
  802. package/dist/shared/foundation/applicationRuleViolation.js +22 -0
  803. package/dist/shared/foundation/applicationRuleViolation.js.map +1 -0
  804. package/dist/shared/foundation/businessRuleViolation.d.ts +19 -0
  805. package/dist/shared/foundation/businessRuleViolation.d.ts.map +1 -0
  806. package/dist/shared/foundation/businessRuleViolation.js +22 -0
  807. package/dist/shared/foundation/businessRuleViolation.js.map +1 -0
  808. package/dist/shared/foundation/executionGateway.base.d.ts +1 -1
  809. package/dist/shared/foundation/executionGateway.base.d.ts.map +1 -1
  810. package/dist/shared/foundation/gatewayError.d.ts +20 -0
  811. package/dist/shared/foundation/gatewayError.d.ts.map +1 -0
  812. package/dist/shared/foundation/gatewayError.js +24 -0
  813. package/dist/shared/foundation/gatewayError.js.map +1 -0
  814. package/dist/shared/foundation/guard.base.d.ts +27 -7
  815. package/dist/shared/foundation/guard.base.d.ts.map +1 -1
  816. package/dist/shared/foundation/guard.base.js +47 -9
  817. package/dist/shared/foundation/guard.base.js.map +1 -1
  818. package/dist/tests/acceptance/169-migrate-claude-invocation-to-bg-mode.acceptance.test.d.ts +2 -0
  819. package/dist/tests/acceptance/169-migrate-claude-invocation-to-bg-mode.acceptance.test.d.ts.map +1 -0
  820. package/dist/tests/acceptance/169-migrate-claude-invocation-to-bg-mode.acceptance.test.js +238 -0
  821. package/dist/tests/acceptance/169-migrate-claude-invocation-to-bg-mode.acceptance.test.js.map +1 -0
  822. package/dist/tests/acceptance/46-github-followup-review-on-push.acceptance.test.d.ts +2 -0
  823. package/dist/tests/acceptance/46-github-followup-review-on-push.acceptance.test.d.ts.map +1 -0
  824. package/dist/tests/acceptance/46-github-followup-review-on-push.acceptance.test.js +267 -0
  825. package/dist/tests/acceptance/46-github-followup-review-on-push.acceptance.test.js.map +1 -0
  826. package/dist/tests/acceptance/dashboardModulesCoverage.acceptance.test.d.ts +2 -0
  827. package/dist/tests/acceptance/dashboardModulesCoverage.acceptance.test.d.ts.map +1 -0
  828. package/dist/tests/acceptance/dashboardModulesCoverage.acceptance.test.js +43 -0
  829. package/dist/tests/acceptance/dashboardModulesCoverage.acceptance.test.js.map +1 -0
  830. package/dist/tests/acceptance/tokenBudgetCap.acceptance.test.d.ts +2 -0
  831. package/dist/tests/acceptance/tokenBudgetCap.acceptance.test.d.ts.map +1 -0
  832. package/dist/tests/acceptance/tokenBudgetCap.acceptance.test.js +183 -0
  833. package/dist/tests/acceptance/tokenBudgetCap.acceptance.test.js.map +1 -0
  834. package/dist/tests/factories/budgetConfig.factory.d.ts +5 -0
  835. package/dist/tests/factories/budgetConfig.factory.d.ts.map +1 -0
  836. package/dist/tests/factories/budgetConfig.factory.js +10 -0
  837. package/dist/tests/factories/budgetConfig.factory.js.map +1 -0
  838. package/dist/tests/factories/claudeSession.factory.d.ts +5 -0
  839. package/dist/tests/factories/claudeSession.factory.d.ts.map +1 -0
  840. package/dist/tests/factories/claudeSession.factory.js +17 -0
  841. package/dist/tests/factories/claudeSession.factory.js.map +1 -0
  842. package/dist/tests/factories/developerInsight.factory.d.ts +1 -1
  843. package/dist/tests/factories/developerInsight.factory.d.ts.map +1 -1
  844. package/dist/tests/factories/diffStats.factory.d.ts +1 -1
  845. package/dist/tests/factories/diffStats.factory.d.ts.map +1 -1
  846. package/dist/tests/factories/gitHubEvent.factory.d.ts +2 -1
  847. package/dist/tests/factories/gitHubEvent.factory.d.ts.map +1 -1
  848. package/dist/tests/factories/gitHubEvent.factory.js +9 -0
  849. package/dist/tests/factories/gitHubEvent.factory.js.map +1 -1
  850. package/dist/tests/factories/gitLabEvent.factory.d.ts +2 -2
  851. package/dist/tests/factories/gitLabEvent.factory.d.ts.map +1 -1
  852. package/dist/tests/factories/packageVersion.factory.d.ts +2 -2
  853. package/dist/tests/factories/packageVersion.factory.d.ts.map +1 -1
  854. package/dist/tests/factories/packageVersion.factory.js +1 -0
  855. package/dist/tests/factories/packageVersion.factory.js.map +1 -1
  856. package/dist/tests/factories/persistedInsightsData.factory.d.ts +2 -2
  857. package/dist/tests/factories/persistedInsightsData.factory.d.ts.map +1 -1
  858. package/dist/tests/factories/projectStats.factory.d.ts +2 -2
  859. package/dist/tests/factories/projectStats.factory.d.ts.map +1 -1
  860. package/dist/tests/factories/reviewContext.factory.d.ts +1 -1
  861. package/dist/tests/factories/reviewContext.factory.d.ts.map +1 -1
  862. package/dist/tests/factories/routingPolicy.factory.d.ts +1 -1
  863. package/dist/tests/factories/routingPolicy.factory.d.ts.map +1 -1
  864. package/dist/tests/factories/sessionCompletion.factory.d.ts +5 -0
  865. package/dist/tests/factories/sessionCompletion.factory.d.ts.map +1 -0
  866. package/dist/tests/factories/sessionCompletion.factory.js +11 -0
  867. package/dist/tests/factories/sessionCompletion.factory.js.map +1 -0
  868. package/dist/tests/factories/teamInsight.factory.d.ts +1 -1
  869. package/dist/tests/factories/teamInsight.factory.d.ts.map +1 -1
  870. package/dist/tests/factories/tokenUsage.factory.d.ts +1 -1
  871. package/dist/tests/factories/tokenUsage.factory.d.ts.map +1 -1
  872. package/dist/tests/factories/trackedMr.factory.d.ts +2 -2
  873. package/dist/tests/factories/trackedMr.factory.d.ts.map +1 -1
  874. package/dist/tests/factories/webhookEvent.factory.d.ts +1 -1
  875. package/dist/tests/factories/webhookEvent.factory.d.ts.map +1 -1
  876. package/dist/tests/helpers/entityBuilder.d.ts +22 -0
  877. package/dist/tests/helpers/entityBuilder.d.ts.map +1 -0
  878. package/dist/tests/helpers/entityBuilder.js +25 -0
  879. package/dist/tests/helpers/entityBuilder.js.map +1 -0
  880. package/dist/tests/integration/claudeInvocation.integration.test.d.ts +2 -0
  881. package/dist/tests/integration/claudeInvocation.integration.test.d.ts.map +1 -0
  882. package/dist/tests/integration/claudeInvocation.integration.test.js +147 -0
  883. package/dist/tests/integration/claudeInvocation.integration.test.js.map +1 -0
  884. package/dist/tests/stubs/billingState.stub.d.ts +10 -0
  885. package/dist/tests/stubs/billingState.stub.d.ts.map +1 -0
  886. package/dist/tests/stubs/billingState.stub.js +32 -0
  887. package/dist/tests/stubs/billingState.stub.js.map +1 -0
  888. package/dist/tests/stubs/budget.stub.d.ts +10 -0
  889. package/dist/tests/stubs/budget.stub.d.ts.map +1 -0
  890. package/dist/tests/stubs/budget.stub.js +15 -0
  891. package/dist/tests/stubs/budget.stub.js.map +1 -0
  892. package/dist/tests/stubs/claudeSession.stub.d.ts +23 -0
  893. package/dist/tests/stubs/claudeSession.stub.d.ts.map +1 -0
  894. package/dist/tests/stubs/claudeSession.stub.js +55 -0
  895. package/dist/tests/stubs/claudeSession.stub.js.map +1 -0
  896. package/dist/tests/stubs/diffStatsFetch.stub.d.ts +2 -2
  897. package/dist/tests/stubs/diffStatsFetch.stub.d.ts.map +1 -1
  898. package/dist/tests/stubs/environment.stub.d.ts +7 -0
  899. package/dist/tests/stubs/environment.stub.d.ts.map +1 -0
  900. package/dist/tests/stubs/environment.stub.js +10 -0
  901. package/dist/tests/stubs/environment.stub.js.map +1 -0
  902. package/dist/tests/stubs/insights.stub.d.ts +2 -2
  903. package/dist/tests/stubs/insights.stub.d.ts.map +1 -1
  904. package/dist/tests/stubs/installTypeDetector.stub.d.ts +8 -0
  905. package/dist/tests/stubs/installTypeDetector.stub.d.ts.map +1 -0
  906. package/dist/tests/stubs/installTypeDetector.stub.js +10 -0
  907. package/dist/tests/stubs/installTypeDetector.stub.js.map +1 -0
  908. package/dist/tests/stubs/mcpCompletion.stub.d.ts +13 -0
  909. package/dist/tests/stubs/mcpCompletion.stub.d.ts.map +1 -0
  910. package/dist/tests/stubs/mcpCompletion.stub.js +29 -0
  911. package/dist/tests/stubs/mcpCompletion.stub.js.map +1 -0
  912. package/dist/tests/stubs/packageVersion.stub.d.ts +1 -1
  913. package/dist/tests/stubs/packageVersion.stub.d.ts.map +1 -1
  914. package/dist/tests/stubs/reviewContextGateway.stub.d.ts +4 -3
  915. package/dist/tests/stubs/reviewContextGateway.stub.d.ts.map +1 -1
  916. package/dist/tests/stubs/reviewContextGateway.stub.js.map +1 -1
  917. package/dist/tests/stubs/reviewFile.stub.d.ts +1 -1
  918. package/dist/tests/stubs/reviewFile.stub.d.ts.map +1 -1
  919. package/dist/tests/stubs/reviewLogFile.stub.d.ts +1 -1
  920. package/dist/tests/stubs/reviewLogFile.stub.d.ts.map +1 -1
  921. package/dist/tests/stubs/reviewQueue.stub.d.ts +2 -2
  922. package/dist/tests/stubs/reviewQueue.stub.d.ts.map +1 -1
  923. package/dist/tests/stubs/reviewReport.stub.d.ts +11 -0
  924. package/dist/tests/stubs/reviewReport.stub.d.ts.map +1 -0
  925. package/dist/tests/stubs/reviewReport.stub.js +21 -0
  926. package/dist/tests/stubs/reviewReport.stub.js.map +1 -0
  927. package/dist/tests/stubs/reviewRequestTracking.stub.d.ts +4 -4
  928. package/dist/tests/stubs/reviewRequestTracking.stub.d.ts.map +1 -1
  929. package/dist/tests/stubs/selfUpdate.stub.d.ts +1 -1
  930. package/dist/tests/stubs/selfUpdate.stub.d.ts.map +1 -1
  931. package/dist/tests/stubs/stats.stub.d.ts +2 -2
  932. package/dist/tests/stubs/stats.stub.d.ts.map +1 -1
  933. package/dist/tests/stubs/supervisorHealth.stub.d.ts +8 -0
  934. package/dist/tests/stubs/supervisorHealth.stub.d.ts.map +1 -0
  935. package/dist/tests/stubs/supervisorHealth.stub.js +18 -0
  936. package/dist/tests/stubs/supervisorHealth.stub.js.map +1 -0
  937. package/dist/tests/stubs/threadFetch.stub.d.ts +2 -2
  938. package/dist/tests/stubs/threadFetch.stub.d.ts.map +1 -1
  939. package/dist/tests/stubs/tokenUsage.stub.d.ts +5 -3
  940. package/dist/tests/stubs/tokenUsage.stub.d.ts.map +1 -1
  941. package/dist/tests/stubs/tokenUsage.stub.js +10 -1
  942. package/dist/tests/stubs/tokenUsage.stub.js.map +1 -1
  943. package/dist/tests/stubs/versionCache.stub.d.ts +2 -2
  944. package/dist/tests/stubs/versionCache.stub.d.ts.map +1 -1
  945. package/dist/tests/units/architecture/noClaudePInProduction.test.d.ts +2 -0
  946. package/dist/tests/units/architecture/noClaudePInProduction.test.d.ts.map +1 -0
  947. package/dist/tests/units/architecture/noClaudePInProduction.test.js +89 -0
  948. package/dist/tests/units/architecture/noClaudePInProduction.test.js.map +1 -0
  949. package/dist/tests/units/cli/cli.integration.test.js +11 -5
  950. package/dist/tests/units/cli/cli.integration.test.js.map +1 -1
  951. package/dist/tests/units/dashboard/modules/assignee.test.d.ts.map +1 -0
  952. package/dist/tests/units/dashboard/modules/assignee.test.js +35 -0
  953. package/dist/tests/units/dashboard/modules/assignee.test.js.map +1 -0
  954. package/dist/tests/units/dashboard/modules/budgetSettings.test.d.ts +2 -0
  955. package/dist/tests/units/dashboard/modules/budgetSettings.test.d.ts.map +1 -0
  956. package/dist/tests/units/dashboard/modules/budgetSettings.test.js +96 -0
  957. package/dist/tests/units/dashboard/modules/budgetSettings.test.js.map +1 -0
  958. package/dist/tests/units/dashboard/modules/cleanup.test.d.ts +2 -0
  959. package/dist/tests/units/dashboard/modules/cleanup.test.d.ts.map +1 -0
  960. package/dist/tests/units/dashboard/modules/cleanup.test.js +15 -0
  961. package/dist/tests/units/dashboard/modules/cleanup.test.js.map +1 -0
  962. package/dist/tests/units/dashboard/modules/collapsibleList.test.d.ts +2 -0
  963. package/dist/tests/units/dashboard/modules/collapsibleList.test.d.ts.map +1 -0
  964. package/dist/tests/units/dashboard/modules/collapsibleList.test.js +21 -0
  965. package/dist/tests/units/dashboard/modules/collapsibleList.test.js.map +1 -0
  966. package/dist/tests/units/dashboard/modules/constants.test.d.ts.map +1 -0
  967. package/dist/tests/units/dashboard/modules/constants.test.js +17 -0
  968. package/dist/tests/units/dashboard/modules/constants.test.js.map +1 -0
  969. package/dist/tests/units/dashboard/modules/desktopNotifications.test.d.ts.map +1 -0
  970. package/dist/tests/units/dashboard/modules/desktopNotifications.test.js +54 -0
  971. package/dist/tests/units/dashboard/modules/desktopNotifications.test.js.map +1 -0
  972. package/dist/tests/units/dashboard/modules/developerSheet.test.d.ts.map +1 -0
  973. package/dist/tests/units/dashboard/modules/developerSheet.test.js +224 -0
  974. package/dist/tests/units/dashboard/modules/developerSheet.test.js.map +1 -0
  975. package/dist/tests/units/dashboard/modules/formatting.test.d.ts.map +1 -0
  976. package/dist/tests/units/dashboard/modules/formatting.test.js +95 -0
  977. package/dist/tests/units/dashboard/modules/formatting.test.js.map +1 -0
  978. package/dist/tests/units/dashboard/modules/html.test.d.ts.map +1 -0
  979. package/dist/tests/units/dashboard/modules/html.test.js +55 -0
  980. package/dist/tests/units/dashboard/modules/html.test.js.map +1 -0
  981. package/dist/tests/units/dashboard/modules/i18n.test.d.ts.map +1 -0
  982. package/dist/tests/units/dashboard/modules/i18n.test.js +127 -0
  983. package/dist/tests/units/dashboard/modules/i18n.test.js.map +1 -0
  984. package/dist/tests/units/dashboard/modules/icons.test.d.ts.map +1 -0
  985. package/dist/tests/units/dashboard/modules/icons.test.js +28 -0
  986. package/dist/tests/units/dashboard/modules/icons.test.js.map +1 -0
  987. package/dist/tests/units/dashboard/modules/insightsReport.test.d.ts.map +1 -0
  988. package/dist/tests/units/dashboard/modules/insightsReport.test.js +326 -0
  989. package/dist/tests/units/dashboard/modules/insightsReport.test.js.map +1 -0
  990. package/dist/tests/units/dashboard/modules/loading.test.d.ts.map +1 -0
  991. package/dist/tests/units/dashboard/modules/loading.test.js +51 -0
  992. package/dist/tests/units/dashboard/modules/loading.test.js.map +1 -0
  993. package/dist/tests/units/dashboard/modules/mrSheet.test.d.ts +2 -0
  994. package/dist/tests/units/dashboard/modules/mrSheet.test.d.ts.map +1 -0
  995. package/dist/tests/units/dashboard/modules/mrSheet.test.js +29 -0
  996. package/dist/tests/units/dashboard/modules/mrSheet.test.js.map +1 -0
  997. package/dist/tests/units/dashboard/modules/notifications.test.d.ts.map +1 -0
  998. package/dist/tests/units/dashboard/modules/notifications.test.js +43 -0
  999. package/dist/tests/units/dashboard/modules/notifications.test.js.map +1 -0
  1000. package/dist/tests/units/dashboard/modules/priority.test.d.ts.map +1 -0
  1001. package/dist/tests/units/dashboard/modules/priority.test.js +78 -0
  1002. package/dist/tests/units/dashboard/modules/priority.test.js.map +1 -0
  1003. package/dist/tests/units/dashboard/modules/quality.test.d.ts.map +1 -0
  1004. package/dist/tests/units/dashboard/modules/quality.test.js +87 -0
  1005. package/dist/tests/units/dashboard/modules/quality.test.js.map +1 -0
  1006. package/dist/tests/units/dashboard/modules/queueLanes.test.d.ts.map +1 -0
  1007. package/dist/tests/units/dashboard/modules/queueLanes.test.js +29 -0
  1008. package/dist/tests/units/dashboard/modules/queueLanes.test.js.map +1 -0
  1009. package/dist/tests/units/dashboard/modules/sessionMetrics.test.d.ts.map +1 -0
  1010. package/dist/tests/units/dashboard/modules/sessionMetrics.test.js +60 -0
  1011. package/dist/tests/units/dashboard/modules/sessionMetrics.test.js.map +1 -0
  1012. package/dist/tests/units/dashboard/modules/sharedViewHelpers.test.d.ts +2 -0
  1013. package/dist/tests/units/dashboard/modules/sharedViewHelpers.test.d.ts.map +1 -0
  1014. package/dist/tests/units/dashboard/modules/sharedViewHelpers.test.js +44 -0
  1015. package/dist/tests/units/dashboard/modules/sharedViewHelpers.test.js.map +1 -0
  1016. package/dist/tests/units/dashboard/modules/statsCharts.test.d.ts +2 -0
  1017. package/dist/tests/units/dashboard/modules/statsCharts.test.d.ts.map +1 -0
  1018. package/dist/tests/units/dashboard/modules/statsCharts.test.js +34 -0
  1019. package/dist/tests/units/dashboard/modules/statsCharts.test.js.map +1 -0
  1020. package/dist/tests/units/dashboard/modules/teamTab.test.d.ts.map +1 -0
  1021. package/dist/tests/units/dashboard/modules/teamTab.test.js +336 -0
  1022. package/dist/tests/units/dashboard/modules/teamTab.test.js.map +1 -0
  1023. package/dist/tests/units/dashboard/modules/tokenUsage.test.d.ts +2 -0
  1024. package/dist/tests/units/dashboard/modules/tokenUsage.test.d.ts.map +1 -0
  1025. package/dist/tests/units/dashboard/modules/tokenUsage.test.js +81 -0
  1026. package/dist/tests/units/dashboard/modules/tokenUsage.test.js.map +1 -0
  1027. package/dist/tests/units/dashboard/modules/versionUpdate.test.d.ts +2 -0
  1028. package/dist/tests/units/dashboard/modules/versionUpdate.test.d.ts.map +1 -0
  1029. package/dist/tests/units/dashboard/modules/versionUpdate.test.js +30 -0
  1030. package/dist/tests/units/dashboard/modules/versionUpdate.test.js.map +1 -0
  1031. package/dist/tests/units/entities/cleanup/retentionPolicy.valueObject.test.js +1 -1
  1032. package/dist/tests/units/entities/cleanup/retentionPolicy.valueObject.test.js.map +1 -1
  1033. package/dist/tests/units/entities/duration.valueObject.test.js +1 -1
  1034. package/dist/tests/units/entities/duration.valueObject.test.js.map +1 -1
  1035. package/dist/tests/units/entities/github/githubPullRequestEvent.guard.test.js +1 -1
  1036. package/dist/tests/units/entities/github/githubPullRequestEvent.guard.test.js.map +1 -1
  1037. package/dist/tests/units/entities/gitlab/gitlabMergeRequestEvent.guard.test.js +1 -1
  1038. package/dist/tests/units/entities/gitlab/gitlabMergeRequestEvent.guard.test.js.map +1 -1
  1039. package/dist/tests/units/entities/insight/aiInsight.schema.test.js +1 -1
  1040. package/dist/tests/units/entities/insight/aiInsight.schema.test.js.map +1 -1
  1041. package/dist/tests/units/entities/insight/developerInsight.schema.test.js +1 -1
  1042. package/dist/tests/units/entities/insight/developerInsight.schema.test.js.map +1 -1
  1043. package/dist/tests/units/entities/insight/developerTitle.test.js +1 -1
  1044. package/dist/tests/units/entities/insight/developerTitle.test.js.map +1 -1
  1045. package/dist/tests/units/entities/insight/insightCategory.test.js +1 -1
  1046. package/dist/tests/units/entities/insight/insightCategory.test.js.map +1 -1
  1047. package/dist/tests/units/entities/insight/insightTrend.test.js +1 -1
  1048. package/dist/tests/units/entities/insight/insightTrend.test.js.map +1 -1
  1049. package/dist/tests/units/entities/insight/persistedInsightsData.schema.test.js +1 -1
  1050. package/dist/tests/units/entities/insight/persistedInsightsData.schema.test.js.map +1 -1
  1051. package/dist/tests/units/entities/insight/teamInsight.schema.test.js +1 -1
  1052. package/dist/tests/units/entities/insight/teamInsight.schema.test.js.map +1 -1
  1053. package/dist/tests/units/entities/language/language.schema.test.js +1 -1
  1054. package/dist/tests/units/entities/language/language.schema.test.js.map +1 -1
  1055. package/dist/tests/units/entities/mcpSettings/mcpSettings.guard.test.js +1 -1
  1056. package/dist/tests/units/entities/mcpSettings/mcpSettings.guard.test.js.map +1 -1
  1057. package/dist/tests/units/entities/packageVersion/packageVersion.test.js +8 -2
  1058. package/dist/tests/units/entities/packageVersion/packageVersion.test.js.map +1 -1
  1059. package/dist/tests/units/entities/progress/progress.test.js +3 -3
  1060. package/dist/tests/units/entities/progress/progress.test.js.map +1 -1
  1061. package/dist/tests/units/entities/reviewAction/reviewAction.guard.test.js +1 -1
  1062. package/dist/tests/units/entities/reviewAction/reviewAction.guard.test.js.map +1 -1
  1063. package/dist/tests/units/entities/reviewContext/reviewContext.schema.test.js +1 -1
  1064. package/dist/tests/units/entities/reviewContext/reviewContext.schema.test.js.map +1 -1
  1065. package/dist/tests/units/entities/reviewContext/reviewContextResult.guard.test.d.ts +2 -0
  1066. package/dist/tests/units/entities/reviewContext/reviewContextResult.guard.test.d.ts.map +1 -0
  1067. package/dist/tests/units/entities/reviewContext/reviewContextResult.guard.test.js +34 -0
  1068. package/dist/tests/units/entities/reviewContext/reviewContextResult.guard.test.js.map +1 -0
  1069. package/dist/tests/units/entities/reviewContext/reviewContextResult.schema.test.d.ts +2 -0
  1070. package/dist/tests/units/entities/reviewContext/reviewContextResult.schema.test.d.ts.map +1 -0
  1071. package/dist/tests/units/entities/reviewContext/reviewContextResult.schema.test.js +27 -0
  1072. package/dist/tests/units/entities/reviewContext/reviewContextResult.schema.test.js.map +1 -0
  1073. package/dist/tests/units/entities/reviewRequestState.valueObject.test.js +1 -1
  1074. package/dist/tests/units/entities/reviewRequestState.valueObject.test.js.map +1 -1
  1075. package/dist/tests/units/entities/reviewScore.valueObject.test.js +1 -1
  1076. package/dist/tests/units/entities/reviewScore.valueObject.test.js.map +1 -1
  1077. package/dist/tests/units/factories/packageVersion.factory.test.js +1 -1
  1078. package/dist/tests/units/factories/packageVersion.factory.test.js.map +1 -1
  1079. package/dist/tests/units/frameworks/claude/broadcastBudgetAfterUsage.test.d.ts +2 -0
  1080. package/dist/tests/units/frameworks/claude/broadcastBudgetAfterUsage.test.d.ts.map +1 -0
  1081. package/dist/tests/units/frameworks/claude/broadcastBudgetAfterUsage.test.js +37 -0
  1082. package/dist/tests/units/frameworks/claude/broadcastBudgetAfterUsage.test.js.map +1 -0
  1083. package/dist/tests/units/frameworks/claude/buildSpawnEnv.test.d.ts +2 -0
  1084. package/dist/tests/units/frameworks/claude/buildSpawnEnv.test.d.ts.map +1 -0
  1085. package/dist/tests/units/frameworks/claude/buildSpawnEnv.test.js +30 -0
  1086. package/dist/tests/units/frameworks/claude/buildSpawnEnv.test.js.map +1 -0
  1087. package/dist/tests/units/frameworks/claude/claudeInvoker.test.d.ts +2 -0
  1088. package/dist/tests/units/frameworks/claude/claudeInvoker.test.d.ts.map +1 -0
  1089. package/dist/tests/units/frameworks/claude/claudeInvoker.test.js +56 -0
  1090. package/dist/tests/units/frameworks/claude/claudeInvoker.test.js.map +1 -0
  1091. package/dist/tests/units/frameworks/claude/streamJsonParser.test.js +15 -72
  1092. package/dist/tests/units/frameworks/claude/streamJsonParser.test.js.map +1 -1
  1093. package/dist/tests/units/frameworks/claude/timers/claudeInvocationTimers.test.d.ts +2 -0
  1094. package/dist/tests/units/frameworks/claude/timers/claudeInvocationTimers.test.d.ts.map +1 -0
  1095. package/dist/tests/units/frameworks/claude/timers/claudeInvocationTimers.test.js +66 -0
  1096. package/dist/tests/units/frameworks/claude/timers/claudeInvocationTimers.test.js.map +1 -0
  1097. package/dist/tests/units/helpers/entityBuilder.test.d.ts +2 -0
  1098. package/dist/tests/units/helpers/entityBuilder.test.d.ts.map +1 -0
  1099. package/dist/tests/units/helpers/entityBuilder.test.js +32 -0
  1100. package/dist/tests/units/helpers/entityBuilder.test.js.map +1 -0
  1101. package/dist/tests/units/interface-adapters/adapters/platformAdapter.test.js +1 -1
  1102. package/dist/tests/units/interface-adapters/adapters/platformAdapter.test.js.map +1 -1
  1103. package/dist/tests/units/interface-adapters/controllers/http/cleanup.routes.test.js +1 -1
  1104. package/dist/tests/units/interface-adapters/controllers/http/cleanup.routes.test.js.map +1 -1
  1105. package/dist/tests/units/interface-adapters/controllers/http/health.routes.test.js +1 -1
  1106. package/dist/tests/units/interface-adapters/controllers/http/health.routes.test.js.map +1 -1
  1107. package/dist/tests/units/interface-adapters/controllers/http/insights.routes.test.js +1 -1
  1108. package/dist/tests/units/interface-adapters/controllers/http/insights.routes.test.js.map +1 -1
  1109. package/dist/tests/units/interface-adapters/controllers/http/settings.routes.test.js +1 -1
  1110. package/dist/tests/units/interface-adapters/controllers/http/settings.routes.test.js.map +1 -1
  1111. package/dist/tests/units/interface-adapters/controllers/http/statsRecalculate.routes.test.js +1 -1
  1112. package/dist/tests/units/interface-adapters/controllers/http/statsRecalculate.routes.test.js.map +1 -1
  1113. package/dist/tests/units/interface-adapters/controllers/http/tokenUsage.routes.test.d.ts +2 -0
  1114. package/dist/tests/units/interface-adapters/controllers/http/tokenUsage.routes.test.d.ts.map +1 -0
  1115. package/dist/tests/units/interface-adapters/controllers/http/tokenUsage.routes.test.js +107 -0
  1116. package/dist/tests/units/interface-adapters/controllers/http/tokenUsage.routes.test.js.map +1 -0
  1117. package/dist/tests/units/interface-adapters/controllers/http/version.routes.test.js +62 -3
  1118. package/dist/tests/units/interface-adapters/controllers/http/version.routes.test.js.map +1 -1
  1119. package/dist/tests/units/interface-adapters/controllers/mcp/addAction.handler.test.js +3 -3
  1120. package/dist/tests/units/interface-adapters/controllers/mcp/addAction.handler.test.js.map +1 -1
  1121. package/dist/tests/units/interface-adapters/controllers/mcp/completeAgent.handler.test.js +2 -2
  1122. package/dist/tests/units/interface-adapters/controllers/mcp/completeAgent.handler.test.js.map +1 -1
  1123. package/dist/tests/units/interface-adapters/controllers/mcp/getThreads.handler.test.js +3 -3
  1124. package/dist/tests/units/interface-adapters/controllers/mcp/getThreads.handler.test.js.map +1 -1
  1125. package/dist/tests/units/interface-adapters/controllers/mcp/getWorkflow.handler.test.js +2 -2
  1126. package/dist/tests/units/interface-adapters/controllers/mcp/getWorkflow.handler.test.js.map +1 -1
  1127. package/dist/tests/units/interface-adapters/controllers/mcp/setPhase.handler.test.js +2 -2
  1128. package/dist/tests/units/interface-adapters/controllers/mcp/setPhase.handler.test.js.map +1 -1
  1129. package/dist/tests/units/interface-adapters/controllers/mcp/startAgent.handler.test.js +2 -2
  1130. package/dist/tests/units/interface-adapters/controllers/mcp/startAgent.handler.test.js.map +1 -1
  1131. package/dist/tests/units/interface-adapters/controllers/webhook/eventFilter.test.js +48 -1
  1132. package/dist/tests/units/interface-adapters/controllers/webhook/eventFilter.test.js.map +1 -1
  1133. package/dist/tests/units/interface-adapters/controllers/webhook/extractBaseUrl.test.js +1 -1
  1134. package/dist/tests/units/interface-adapters/controllers/webhook/extractBaseUrl.test.js.map +1 -1
  1135. package/dist/tests/units/interface-adapters/controllers/webhook/github.controller.test.js +181 -1
  1136. package/dist/tests/units/interface-adapters/controllers/webhook/github.controller.test.js.map +1 -1
  1137. package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js +71 -10
  1138. package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js.map +1 -1
  1139. package/dist/tests/units/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.test.js +1 -1
  1140. package/dist/tests/units/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.test.js.map +1 -1
  1141. package/dist/tests/units/interface-adapters/gateways/cli/reviewAction.gitlab.cli.gateway.test.js +1 -1
  1142. package/dist/tests/units/interface-adapters/gateways/cli/reviewAction.gitlab.cli.gateway.test.js.map +1 -1
  1143. package/dist/tests/units/interface-adapters/gateways/diffMetadataFetch.github.gateway.test.js +1 -1
  1144. package/dist/tests/units/interface-adapters/gateways/diffMetadataFetch.github.gateway.test.js.map +1 -1
  1145. package/dist/tests/units/interface-adapters/gateways/diffMetadataFetch.gitlab.gateway.test.js +1 -1
  1146. package/dist/tests/units/interface-adapters/gateways/diffMetadataFetch.gitlab.gateway.test.js.map +1 -1
  1147. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.github.gateway.test.js +1 -1
  1148. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.github.gateway.test.js.map +1 -1
  1149. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.test.js +1 -1
  1150. package/dist/tests/units/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.test.js.map +1 -1
  1151. package/dist/tests/units/interface-adapters/gateways/insights.gateway.test.js +1 -1
  1152. package/dist/tests/units/interface-adapters/gateways/insights.gateway.test.js.map +1 -1
  1153. package/dist/tests/units/interface-adapters/gateways/installTypeDetector.fs.gateway.test.d.ts +2 -0
  1154. package/dist/tests/units/interface-adapters/gateways/installTypeDetector.fs.gateway.test.d.ts.map +1 -0
  1155. package/dist/tests/units/interface-adapters/gateways/installTypeDetector.fs.gateway.test.js +38 -0
  1156. package/dist/tests/units/interface-adapters/gateways/installTypeDetector.fs.gateway.test.js.map +1 -0
  1157. package/dist/tests/units/interface-adapters/gateways/packageVersion.npm.gateway.test.js +1 -1
  1158. package/dist/tests/units/interface-adapters/gateways/packageVersion.npm.gateway.test.js.map +1 -1
  1159. package/dist/tests/units/interface-adapters/gateways/projectConfig/routingPolicy.projectConfig.gateway.test.js +1 -1
  1160. package/dist/tests/units/interface-adapters/gateways/projectConfig/routingPolicy.projectConfig.gateway.test.js.map +1 -1
  1161. package/dist/tests/units/interface-adapters/gateways/reviewContext.fileSystem.gateway.test.js +1 -1
  1162. package/dist/tests/units/interface-adapters/gateways/reviewContext.fileSystem.gateway.test.js.map +1 -1
  1163. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.fileSystem.test.js +1 -1
  1164. package/dist/tests/units/interface-adapters/gateways/reviewLogFile.fileSystem.test.js.map +1 -1
  1165. package/dist/tests/units/interface-adapters/gateways/reviewProgress.memory.gateway.test.js +1 -1
  1166. package/dist/tests/units/interface-adapters/gateways/reviewProgress.memory.gateway.test.js.map +1 -1
  1167. package/dist/tests/units/interface-adapters/gateways/selfUpdate.cli.gateway.test.js +1 -1
  1168. package/dist/tests/units/interface-adapters/gateways/selfUpdate.cli.gateway.test.js.map +1 -1
  1169. package/dist/tests/units/interface-adapters/gateways/threadFetch.github.gateway.test.js +1 -1
  1170. package/dist/tests/units/interface-adapters/gateways/threadFetch.github.gateway.test.js.map +1 -1
  1171. package/dist/tests/units/interface-adapters/gateways/threadFetch.gitlab.gateway.test.js +1 -1
  1172. package/dist/tests/units/interface-adapters/gateways/threadFetch.gitlab.gateway.test.js.map +1 -1
  1173. package/dist/tests/units/interface-adapters/gateways/tokenUsage/tokenUsage.filesystem.gateway.test.js +1 -1
  1174. package/dist/tests/units/interface-adapters/gateways/tokenUsage/tokenUsage.filesystem.gateway.test.js.map +1 -1
  1175. package/dist/tests/units/interface-adapters/gateways/versionCache.memory.gateway.test.js +1 -1
  1176. package/dist/tests/units/interface-adapters/gateways/versionCache.memory.gateway.test.js.map +1 -1
  1177. package/dist/tests/units/interface-adapters/presenters/insights.presenter.test.js +1 -1
  1178. package/dist/tests/units/interface-adapters/presenters/insights.presenter.test.js.map +1 -1
  1179. package/dist/tests/units/interface-adapters/presenters/jobStatus.presenter.test.js +1 -1
  1180. package/dist/tests/units/interface-adapters/presenters/jobStatus.presenter.test.js.map +1 -1
  1181. package/dist/tests/units/interface-adapters/presenters/projectStats.calculator.test.js +1 -1
  1182. package/dist/tests/units/interface-adapters/presenters/projectStats.calculator.test.js.map +1 -1
  1183. package/dist/tests/units/interface-adapters/presenters/reviewContextProgress.presenter.test.js +1 -1
  1184. package/dist/tests/units/interface-adapters/presenters/reviewContextProgress.presenter.test.js.map +1 -1
  1185. package/dist/tests/units/interface-adapters/presenters/reviewList.presenter.test.js +2 -2
  1186. package/dist/tests/units/interface-adapters/presenters/reviewList.presenter.test.js.map +1 -1
  1187. package/dist/tests/units/interface-adapters/presenters/tokenUsageSummary.presenter.test.d.ts +2 -0
  1188. package/dist/tests/units/interface-adapters/presenters/tokenUsageSummary.presenter.test.d.ts.map +1 -0
  1189. package/dist/tests/units/interface-adapters/presenters/tokenUsageSummary.presenter.test.js +103 -0
  1190. package/dist/tests/units/interface-adapters/presenters/tokenUsageSummary.presenter.test.js.map +1 -0
  1191. package/dist/tests/units/main/budgetBroadcast.test.d.ts +2 -0
  1192. package/dist/tests/units/main/budgetBroadcast.test.d.ts.map +1 -0
  1193. package/dist/tests/units/main/budgetBroadcast.test.js +46 -0
  1194. package/dist/tests/units/main/budgetBroadcast.test.js.map +1 -0
  1195. package/dist/tests/units/main/dependencies.test.js +2 -2
  1196. package/dist/tests/units/main/dependencies.test.js.map +1 -1
  1197. package/dist/tests/units/main/mcpDependencies.test.js +1 -1
  1198. package/dist/tests/units/main/mcpDependencies.test.js.map +1 -1
  1199. package/dist/tests/units/modules/claude-invocation/entities/claudeSession/claudeSession.test.d.ts +2 -0
  1200. package/dist/tests/units/modules/claude-invocation/entities/claudeSession/claudeSession.test.d.ts.map +1 -0
  1201. package/dist/tests/units/modules/claude-invocation/entities/claudeSession/claudeSession.test.js +51 -0
  1202. package/dist/tests/units/modules/claude-invocation/entities/claudeSession/claudeSession.test.js.map +1 -0
  1203. package/dist/tests/units/modules/claude-invocation/entities/retrySchedule/retrySchedule.test.d.ts +2 -0
  1204. package/dist/tests/units/modules/claude-invocation/entities/retrySchedule/retrySchedule.test.d.ts.map +1 -0
  1205. package/dist/tests/units/modules/claude-invocation/entities/retrySchedule/retrySchedule.test.js +28 -0
  1206. package/dist/tests/units/modules/claude-invocation/entities/retrySchedule/retrySchedule.test.js.map +1 -0
  1207. package/dist/tests/units/modules/claude-invocation/entities/sessionCompletion/sessionCompletion.test.d.ts +2 -0
  1208. package/dist/tests/units/modules/claude-invocation/entities/sessionCompletion/sessionCompletion.test.d.ts.map +1 -0
  1209. package/dist/tests/units/modules/claude-invocation/entities/sessionCompletion/sessionCompletion.test.js +27 -0
  1210. package/dist/tests/units/modules/claude-invocation/entities/sessionCompletion/sessionCompletion.test.js.map +1 -0
  1211. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/billingState.memory.gateway.test.d.ts +2 -0
  1212. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/billingState.memory.gateway.test.d.ts.map +1 -0
  1213. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/billingState.memory.gateway.test.js +40 -0
  1214. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/billingState.memory.gateway.test.js.map +1 -0
  1215. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.test.d.ts +2 -0
  1216. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.test.d.ts.map +1 -0
  1217. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.test.js +188 -0
  1218. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/claudeSession.cli.gateway.test.js.map +1 -0
  1219. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/environment.process.gateway.test.d.ts +2 -0
  1220. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/environment.process.gateway.test.d.ts.map +1 -0
  1221. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/environment.process.gateway.test.js +17 -0
  1222. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/environment.process.gateway.test.js.map +1 -0
  1223. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.fileSystem.gateway.test.d.ts +2 -0
  1224. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.fileSystem.gateway.test.d.ts.map +1 -0
  1225. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.fileSystem.gateway.test.js +119 -0
  1226. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.fileSystem.gateway.test.js.map +1 -0
  1227. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.memory.gateway.test.d.ts +2 -0
  1228. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.memory.gateway.test.d.ts.map +1 -0
  1229. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.memory.gateway.test.js +39 -0
  1230. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/mcpCompletion.memory.gateway.test.js.map +1 -0
  1231. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.test.d.ts +2 -0
  1232. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.test.d.ts.map +1 -0
  1233. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.test.js +64 -0
  1234. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.test.js.map +1 -0
  1235. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/supervisorHealth.memory.gateway.test.d.ts +2 -0
  1236. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/supervisorHealth.memory.gateway.test.d.ts.map +1 -0
  1237. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/supervisorHealth.memory.gateway.test.js +32 -0
  1238. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/supervisorHealth.memory.gateway.test.js.map +1 -0
  1239. package/dist/tests/units/modules/claude-invocation/usecases/auditBilling.usecase.test.d.ts +2 -0
  1240. package/dist/tests/units/modules/claude-invocation/usecases/auditBilling.usecase.test.d.ts.map +1 -0
  1241. package/dist/tests/units/modules/claude-invocation/usecases/auditBilling.usecase.test.js +33 -0
  1242. package/dist/tests/units/modules/claude-invocation/usecases/auditBilling.usecase.test.js.map +1 -0
  1243. package/dist/tests/units/modules/claude-invocation/usecases/awaitSessionCompletion.usecase.test.d.ts +2 -0
  1244. package/dist/tests/units/modules/claude-invocation/usecases/awaitSessionCompletion.usecase.test.d.ts.map +1 -0
  1245. package/dist/tests/units/modules/claude-invocation/usecases/awaitSessionCompletion.usecase.test.js +53 -0
  1246. package/dist/tests/units/modules/claude-invocation/usecases/awaitSessionCompletion.usecase.test.js.map +1 -0
  1247. package/dist/tests/units/modules/claude-invocation/usecases/checkSupervisorHealth.usecase.test.d.ts +2 -0
  1248. package/dist/tests/units/modules/claude-invocation/usecases/checkSupervisorHealth.usecase.test.d.ts.map +1 -0
  1249. package/dist/tests/units/modules/claude-invocation/usecases/checkSupervisorHealth.usecase.test.js +31 -0
  1250. package/dist/tests/units/modules/claude-invocation/usecases/checkSupervisorHealth.usecase.test.js.map +1 -0
  1251. package/dist/tests/units/modules/claude-invocation/usecases/cleanupClaudeSession.usecase.test.d.ts +2 -0
  1252. package/dist/tests/units/modules/claude-invocation/usecases/cleanupClaudeSession.usecase.test.d.ts.map +1 -0
  1253. package/dist/tests/units/modules/claude-invocation/usecases/cleanupClaudeSession.usecase.test.js +17 -0
  1254. package/dist/tests/units/modules/claude-invocation/usecases/cleanupClaudeSession.usecase.test.js.map +1 -0
  1255. package/dist/tests/units/modules/claude-invocation/usecases/dispatchClaudeSession.usecase.test.d.ts +2 -0
  1256. package/dist/tests/units/modules/claude-invocation/usecases/dispatchClaudeSession.usecase.test.d.ts.map +1 -0
  1257. package/dist/tests/units/modules/claude-invocation/usecases/dispatchClaudeSession.usecase.test.js +97 -0
  1258. package/dist/tests/units/modules/claude-invocation/usecases/dispatchClaudeSession.usecase.test.js.map +1 -0
  1259. package/dist/tests/units/modules/claude-invocation/usecases/retrieveReviewReport.usecase.test.d.ts +2 -0
  1260. package/dist/tests/units/modules/claude-invocation/usecases/retrieveReviewReport.usecase.test.d.ts.map +1 -0
  1261. package/dist/tests/units/modules/claude-invocation/usecases/retrieveReviewReport.usecase.test.js +49 -0
  1262. package/dist/tests/units/modules/claude-invocation/usecases/retrieveReviewReport.usecase.test.js.map +1 -0
  1263. package/dist/tests/units/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.test.d.ts +2 -0
  1264. package/dist/tests/units/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.test.d.ts.map +1 -0
  1265. package/dist/tests/units/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.test.js +171 -0
  1266. package/dist/tests/units/modules/claude-invocation/usecases/runClaudeReviewJob.usecase.test.js.map +1 -0
  1267. package/dist/tests/units/modules/token-accounting/entities/budget/budgetConfig.guard.test.d.ts +2 -0
  1268. package/dist/tests/units/modules/token-accounting/entities/budget/budgetConfig.guard.test.d.ts.map +1 -0
  1269. package/dist/tests/units/modules/token-accounting/entities/budget/budgetConfig.guard.test.js +30 -0
  1270. package/dist/tests/units/modules/token-accounting/entities/budget/budgetConfig.guard.test.js.map +1 -0
  1271. package/dist/tests/units/modules/token-accounting/interface-adapters/controllers/http/budget.routes.test.d.ts +2 -0
  1272. package/dist/tests/units/modules/token-accounting/interface-adapters/controllers/http/budget.routes.test.d.ts.map +1 -0
  1273. package/dist/tests/units/modules/token-accounting/interface-adapters/controllers/http/budget.routes.test.js +116 -0
  1274. package/dist/tests/units/modules/token-accounting/interface-adapters/controllers/http/budget.routes.test.js.map +1 -0
  1275. package/dist/tests/units/modules/token-accounting/interface-adapters/gateways/budget/budget.filesystem.gateway.test.d.ts +2 -0
  1276. package/dist/tests/units/modules/token-accounting/interface-adapters/gateways/budget/budget.filesystem.gateway.test.d.ts.map +1 -0
  1277. package/dist/tests/units/modules/token-accounting/interface-adapters/gateways/budget/budget.filesystem.gateway.test.js +61 -0
  1278. package/dist/tests/units/modules/token-accounting/interface-adapters/gateways/budget/budget.filesystem.gateway.test.js.map +1 -0
  1279. package/dist/tests/units/modules/token-accounting/interface-adapters/presenters/budgetStatus.presenter.test.d.ts +2 -0
  1280. package/dist/tests/units/modules/token-accounting/interface-adapters/presenters/budgetStatus.presenter.test.d.ts.map +1 -0
  1281. package/dist/tests/units/modules/token-accounting/interface-adapters/presenters/budgetStatus.presenter.test.js +40 -0
  1282. package/dist/tests/units/modules/token-accounting/interface-adapters/presenters/budgetStatus.presenter.test.js.map +1 -0
  1283. package/dist/tests/units/modules/token-accounting/usecases/enforceBudget/enforceBudget.usecase.test.d.ts +2 -0
  1284. package/dist/tests/units/modules/token-accounting/usecases/enforceBudget/enforceBudget.usecase.test.d.ts.map +1 -0
  1285. package/dist/tests/units/modules/token-accounting/usecases/enforceBudget/enforceBudget.usecase.test.js +55 -0
  1286. package/dist/tests/units/modules/token-accounting/usecases/enforceBudget/enforceBudget.usecase.test.js.map +1 -0
  1287. package/dist/tests/units/modules/token-accounting/usecases/getBudgetStatus/getBudgetStatus.usecase.test.d.ts +2 -0
  1288. package/dist/tests/units/modules/token-accounting/usecases/getBudgetStatus/getBudgetStatus.usecase.test.d.ts.map +1 -0
  1289. package/dist/tests/units/modules/token-accounting/usecases/getBudgetStatus/getBudgetStatus.usecase.test.js +114 -0
  1290. package/dist/tests/units/modules/token-accounting/usecases/getBudgetStatus/getBudgetStatus.usecase.test.js.map +1 -0
  1291. package/dist/tests/units/modules/token-accounting/usecases/updateBudget/updateBudget.usecase.test.d.ts +2 -0
  1292. package/dist/tests/units/modules/token-accounting/usecases/updateBudget/updateBudget.usecase.test.d.ts.map +1 -0
  1293. package/dist/tests/units/modules/token-accounting/usecases/updateBudget/updateBudget.usecase.test.js +51 -0
  1294. package/dist/tests/units/modules/token-accounting/usecases/updateBudget/updateBudget.usecase.test.js.map +1 -0
  1295. package/dist/tests/units/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.test.d.ts +2 -0
  1296. package/dist/tests/units/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.test.d.ts.map +1 -0
  1297. package/dist/tests/units/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.test.js +128 -0
  1298. package/dist/tests/units/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.test.js.map +1 -0
  1299. package/dist/tests/units/services/commentLinkEnricher.test.js +1 -1
  1300. package/dist/tests/units/services/commentLinkEnricher.test.js.map +1 -1
  1301. package/dist/tests/units/services/contextActionsExecutor.test.js +1 -1
  1302. package/dist/tests/units/services/contextActionsExecutor.test.js.map +1 -1
  1303. package/dist/tests/units/services/reviewContextWatcher.service.test.js +1 -1
  1304. package/dist/tests/units/services/reviewContextWatcher.service.test.js.map +1 -1
  1305. package/dist/tests/units/services/statsService.addReview.test.js +1 -1
  1306. package/dist/tests/units/services/statsService.addReview.test.js.map +1 -1
  1307. package/dist/tests/units/services/threadActionsExecutor.test.js +1 -1
  1308. package/dist/tests/units/services/threadActionsExecutor.test.js.map +1 -1
  1309. package/dist/tests/units/services/threadActionsParser.test.js +1 -1
  1310. package/dist/tests/units/services/threadActionsParser.test.js.map +1 -1
  1311. package/dist/tests/units/shared/foundation/applicationRuleViolation.test.d.ts +2 -0
  1312. package/dist/tests/units/shared/foundation/applicationRuleViolation.test.d.ts.map +1 -0
  1313. package/dist/tests/units/shared/foundation/applicationRuleViolation.test.js +25 -0
  1314. package/dist/tests/units/shared/foundation/applicationRuleViolation.test.js.map +1 -0
  1315. package/dist/tests/units/shared/foundation/businessRuleViolation.test.d.ts +2 -0
  1316. package/dist/tests/units/shared/foundation/businessRuleViolation.test.d.ts.map +1 -0
  1317. package/dist/tests/units/shared/foundation/businessRuleViolation.test.js +28 -0
  1318. package/dist/tests/units/shared/foundation/businessRuleViolation.test.js.map +1 -0
  1319. package/dist/tests/units/shared/foundation/gatewayError.test.d.ts +2 -0
  1320. package/dist/tests/units/shared/foundation/gatewayError.test.d.ts.map +1 -0
  1321. package/dist/tests/units/shared/foundation/gatewayError.test.js +25 -0
  1322. package/dist/tests/units/shared/foundation/gatewayError.test.js.map +1 -0
  1323. package/dist/tests/units/shared/foundation/guard.base.test.js +4 -4
  1324. package/dist/tests/units/shared/foundation/guard.base.test.js.map +1 -1
  1325. package/dist/tests/units/usecases/cancelReview.usecase.test.js +1 -1
  1326. package/dist/tests/units/usecases/cancelReview.usecase.test.js.map +1 -1
  1327. package/dist/tests/units/usecases/cleanup/cleanupExpiredReviews.usecase.test.js +1 -1
  1328. package/dist/tests/units/usecases/cleanup/cleanupExpiredReviews.usecase.test.js.map +1 -1
  1329. package/dist/tests/units/usecases/cli/addRepositoriesToConfig.usecase.test.js +1 -1
  1330. package/dist/tests/units/usecases/cli/addRepositoriesToConfig.usecase.test.js.map +1 -1
  1331. package/dist/tests/units/usecases/cli/checkInitPrerequisites.test.js +1 -1
  1332. package/dist/tests/units/usecases/cli/checkInitPrerequisites.test.js.map +1 -1
  1333. package/dist/tests/units/usecases/cli/configureMcp.usecase.test.js +1 -1
  1334. package/dist/tests/units/usecases/cli/configureMcp.usecase.test.js.map +1 -1
  1335. package/dist/tests/units/usecases/cli/discoverRepositories.usecase.test.js +1 -1
  1336. package/dist/tests/units/usecases/cli/discoverRepositories.usecase.test.js.map +1 -1
  1337. package/dist/tests/units/usecases/cli/followupImportants.usecase.test.js +1 -1
  1338. package/dist/tests/units/usecases/cli/followupImportants.usecase.test.js.map +1 -1
  1339. package/dist/tests/units/usecases/cli/queryStatus.usecase.test.js +1 -1
  1340. package/dist/tests/units/usecases/cli/queryStatus.usecase.test.js.map +1 -1
  1341. package/dist/tests/units/usecases/cli/readLogs.usecase.test.js +1 -1
  1342. package/dist/tests/units/usecases/cli/readLogs.usecase.test.js.map +1 -1
  1343. package/dist/tests/units/usecases/cli/startDaemon.usecase.test.js +1 -1
  1344. package/dist/tests/units/usecases/cli/startDaemon.usecase.test.js.map +1 -1
  1345. package/dist/tests/units/usecases/cli/stopDaemon.usecase.test.js +1 -1
  1346. package/dist/tests/units/usecases/cli/stopDaemon.usecase.test.js.map +1 -1
  1347. package/dist/tests/units/usecases/cli/validateConfig.usecase.test.js +1 -1
  1348. package/dist/tests/units/usecases/cli/validateConfig.usecase.test.js.map +1 -1
  1349. package/dist/tests/units/usecases/cli/writeInitConfig.usecase.test.js +1 -1
  1350. package/dist/tests/units/usecases/cli/writeInitConfig.usecase.test.js.map +1 -1
  1351. package/dist/tests/units/usecases/handleReviewRequestPush.usecase.test.js +1 -1
  1352. package/dist/tests/units/usecases/handleReviewRequestPush.usecase.test.js.map +1 -1
  1353. package/dist/tests/units/usecases/insights/buildAiInsightsPrompt.test.js +1 -1
  1354. package/dist/tests/units/usecases/insights/buildAiInsightsPrompt.test.js.map +1 -1
  1355. package/dist/tests/units/usecases/insights/computeDeveloperInsights.usecase.test.js +1 -1
  1356. package/dist/tests/units/usecases/insights/computeDeveloperInsights.usecase.test.js.map +1 -1
  1357. package/dist/tests/units/usecases/insights/computeInsightsWithPersistence.usecase.test.js +3 -3
  1358. package/dist/tests/units/usecases/insights/computeInsightsWithPersistence.usecase.test.js.map +1 -1
  1359. package/dist/tests/units/usecases/insights/computeTeamInsights.usecase.test.js +1 -1
  1360. package/dist/tests/units/usecases/insights/computeTeamInsights.usecase.test.js.map +1 -1
  1361. package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.js +1 -1
  1362. package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.js.map +1 -1
  1363. package/dist/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.js +1 -1
  1364. package/dist/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.js.map +1 -1
  1365. package/dist/tests/units/usecases/insights/insightLevelComputation.service.test.js +1 -1
  1366. package/dist/tests/units/usecases/insights/insightLevelComputation.service.test.js.map +1 -1
  1367. package/dist/tests/units/usecases/mcp/addAction.usecase.test.js +3 -3
  1368. package/dist/tests/units/usecases/mcp/addAction.usecase.test.js.map +1 -1
  1369. package/dist/tests/units/usecases/mcp/completeAgent.usecase.test.js +2 -2
  1370. package/dist/tests/units/usecases/mcp/completeAgent.usecase.test.js.map +1 -1
  1371. package/dist/tests/units/usecases/mcp/getThreads.usecase.test.js +3 -3
  1372. package/dist/tests/units/usecases/mcp/getThreads.usecase.test.js.map +1 -1
  1373. package/dist/tests/units/usecases/mcp/getWorkflow.usecase.test.js +2 -2
  1374. package/dist/tests/units/usecases/mcp/getWorkflow.usecase.test.js.map +1 -1
  1375. package/dist/tests/units/usecases/mcp/setPhase.usecase.test.js +23 -2
  1376. package/dist/tests/units/usecases/mcp/setPhase.usecase.test.js.map +1 -1
  1377. package/dist/tests/units/usecases/mcp/startAgent.usecase.test.js +2 -2
  1378. package/dist/tests/units/usecases/mcp/startAgent.usecase.test.js.map +1 -1
  1379. package/dist/tests/units/usecases/selectModelForReview/selectModelForReview.usecase.test.js +1 -1
  1380. package/dist/tests/units/usecases/selectModelForReview/selectModelForReview.usecase.test.js.map +1 -1
  1381. package/dist/tests/units/usecases/stats/backfillDiffStats.usecase.test.js +1 -1
  1382. package/dist/tests/units/usecases/stats/backfillDiffStats.usecase.test.js.map +1 -1
  1383. package/dist/tests/units/usecases/stats/recalculateProjectStats.usecase.test.js +1 -1
  1384. package/dist/tests/units/usecases/stats/recalculateProjectStats.usecase.test.js.map +1 -1
  1385. package/dist/tests/units/usecases/stats/recalculateWithBackfill.usecase.test.js +1 -1
  1386. package/dist/tests/units/usecases/stats/recalculateWithBackfill.usecase.test.js.map +1 -1
  1387. package/dist/tests/units/usecases/summarizeTokenUsage/summarizeTokenUsage.usecase.test.js +1 -1
  1388. package/dist/tests/units/usecases/summarizeTokenUsage/summarizeTokenUsage.usecase.test.js.map +1 -1
  1389. package/dist/tests/units/usecases/trackTokenUsage/trackTokenUsage.usecase.test.js +1 -1
  1390. package/dist/tests/units/usecases/trackTokenUsage/trackTokenUsage.usecase.test.js.map +1 -1
  1391. package/dist/tests/units/usecases/tracking/checkFollowupNeeded.usecase.test.js +1 -1
  1392. package/dist/tests/units/usecases/tracking/checkFollowupNeeded.usecase.test.js.map +1 -1
  1393. package/dist/tests/units/usecases/tracking/recordPush.usecase.test.js +1 -1
  1394. package/dist/tests/units/usecases/tracking/recordPush.usecase.test.js.map +1 -1
  1395. package/dist/tests/units/usecases/tracking/recordReviewCompletion.usecase.test.js +1 -1
  1396. package/dist/tests/units/usecases/tracking/recordReviewCompletion.usecase.test.js.map +1 -1
  1397. package/dist/tests/units/usecases/tracking/syncThreads.usecase.test.js +1 -1
  1398. package/dist/tests/units/usecases/tracking/syncThreads.usecase.test.js.map +1 -1
  1399. package/dist/tests/units/usecases/tracking/trackAssignment.usecase.test.js +1 -1
  1400. package/dist/tests/units/usecases/tracking/trackAssignment.usecase.test.js.map +1 -1
  1401. package/dist/tests/units/usecases/tracking/transitionState.usecase.test.js +1 -1
  1402. package/dist/tests/units/usecases/tracking/transitionState.usecase.test.js.map +1 -1
  1403. package/dist/tests/units/usecases/triggerReview.usecase.test.js +1 -1
  1404. package/dist/tests/units/usecases/triggerReview.usecase.test.js.map +1 -1
  1405. package/dist/tests/units/usecases/version/checkVersion.usecase.test.js +17 -8
  1406. package/dist/tests/units/usecases/version/checkVersion.usecase.test.js.map +1 -1
  1407. package/dist/tests/units/usecases/version/triggerSelfUpdate.usecase.test.js +16 -5
  1408. package/dist/tests/units/usecases/version/triggerSelfUpdate.usecase.test.js.map +1 -1
  1409. package/package.json +1 -1
  1410. package/scripts/copyAssets.mjs +2 -2
  1411. package/scripts/hooks/protect-main-branch.sh +6 -1
  1412. package/scripts/hooks/protect-main-push.sh +4 -1
  1413. package/dist/entities/backfill/backfillProgress.d.ts.map +0 -1
  1414. package/dist/entities/backfill/backfillProgress.js.map +0 -1
  1415. package/dist/entities/cleanup/retentionPolicy.valueObject.d.ts.map +0 -1
  1416. package/dist/entities/cleanup/retentionPolicy.valueObject.js.map +0 -1
  1417. package/dist/entities/diffMetadata/diffMetadata.gateway.d.ts +0 -5
  1418. package/dist/entities/diffMetadata/diffMetadata.gateway.d.ts.map +0 -1
  1419. package/dist/entities/diffMetadata/diffMetadata.gateway.js.map +0 -1
  1420. package/dist/entities/diffStats/diffStats.d.ts.map +0 -1
  1421. package/dist/entities/diffStats/diffStats.js.map +0 -1
  1422. package/dist/entities/diffStats/diffStatsFetch.gateway.d.ts +0 -5
  1423. package/dist/entities/diffStats/diffStatsFetch.gateway.d.ts.map +0 -1
  1424. package/dist/entities/diffStats/diffStatsFetch.gateway.js.map +0 -1
  1425. package/dist/entities/github/githubPullRequestEvent.guard.d.ts +0 -199
  1426. package/dist/entities/github/githubPullRequestEvent.guard.d.ts.map +0 -1
  1427. package/dist/entities/github/githubPullRequestEvent.guard.js +0 -28
  1428. package/dist/entities/github/githubPullRequestEvent.guard.js.map +0 -1
  1429. package/dist/entities/gitlab/gitlabMergeRequestEvent.guard.d.ts +0 -231
  1430. package/dist/entities/gitlab/gitlabMergeRequestEvent.guard.d.ts.map +0 -1
  1431. package/dist/entities/gitlab/gitlabMergeRequestEvent.guard.js +0 -52
  1432. package/dist/entities/gitlab/gitlabMergeRequestEvent.guard.js.map +0 -1
  1433. package/dist/entities/insight/aiInsight.d.ts +0 -6
  1434. package/dist/entities/insight/aiInsight.d.ts.map +0 -1
  1435. package/dist/entities/insight/aiInsight.js.map +0 -1
  1436. package/dist/entities/insight/aiInsight.schema.d.ts.map +0 -1
  1437. package/dist/entities/insight/aiInsight.schema.js.map +0 -1
  1438. package/dist/entities/insight/developerInsight.d.ts +0 -8
  1439. package/dist/entities/insight/developerInsight.d.ts.map +0 -1
  1440. package/dist/entities/insight/developerInsight.guard.d.ts +0 -221
  1441. package/dist/entities/insight/developerInsight.guard.d.ts.map +0 -1
  1442. package/dist/entities/insight/developerInsight.guard.js +0 -13
  1443. package/dist/entities/insight/developerInsight.guard.js.map +0 -1
  1444. package/dist/entities/insight/developerInsight.js.map +0 -1
  1445. package/dist/entities/insight/developerInsight.schema.d.ts.map +0 -1
  1446. package/dist/entities/insight/developerInsight.schema.js +0 -43
  1447. package/dist/entities/insight/developerInsight.schema.js.map +0 -1
  1448. package/dist/entities/insight/developerTitle.d.ts.map +0 -1
  1449. package/dist/entities/insight/developerTitle.js.map +0 -1
  1450. package/dist/entities/insight/insightCategory.d.ts.map +0 -1
  1451. package/dist/entities/insight/insightCategory.js.map +0 -1
  1452. package/dist/entities/insight/insightTrend.d.ts.map +0 -1
  1453. package/dist/entities/insight/insightTrend.js.map +0 -1
  1454. package/dist/entities/insight/insights.gateway.d.ts +0 -6
  1455. package/dist/entities/insight/insights.gateway.d.ts.map +0 -1
  1456. package/dist/entities/insight/insights.gateway.js.map +0 -1
  1457. package/dist/entities/insight/persistedInsightsData.d.ts +0 -5
  1458. package/dist/entities/insight/persistedInsightsData.d.ts.map +0 -1
  1459. package/dist/entities/insight/persistedInsightsData.guard.d.ts +0 -271
  1460. package/dist/entities/insight/persistedInsightsData.guard.d.ts.map +0 -1
  1461. package/dist/entities/insight/persistedInsightsData.guard.js +0 -13
  1462. package/dist/entities/insight/persistedInsightsData.guard.js.map +0 -1
  1463. package/dist/entities/insight/persistedInsightsData.js.map +0 -1
  1464. package/dist/entities/insight/persistedInsightsData.schema.d.ts.map +0 -1
  1465. package/dist/entities/insight/persistedInsightsData.schema.js +0 -40
  1466. package/dist/entities/insight/persistedInsightsData.schema.js.map +0 -1
  1467. package/dist/entities/insight/teamInsight.d.ts +0 -5
  1468. package/dist/entities/insight/teamInsight.d.ts.map +0 -1
  1469. package/dist/entities/insight/teamInsight.guard.d.ts +0 -71
  1470. package/dist/entities/insight/teamInsight.guard.d.ts.map +0 -1
  1471. package/dist/entities/insight/teamInsight.guard.js +0 -13
  1472. package/dist/entities/insight/teamInsight.guard.js.map +0 -1
  1473. package/dist/entities/insight/teamInsight.js.map +0 -1
  1474. package/dist/entities/insight/teamInsight.schema.d.ts.map +0 -1
  1475. package/dist/entities/insight/teamInsight.schema.js +0 -17
  1476. package/dist/entities/insight/teamInsight.schema.js.map +0 -1
  1477. package/dist/entities/job/jobContext.gateway.d.ts.map +0 -1
  1478. package/dist/entities/job/jobContext.gateway.js.map +0 -1
  1479. package/dist/entities/language/language.schema.d.ts.map +0 -1
  1480. package/dist/entities/language/language.schema.js.map +0 -1
  1481. package/dist/entities/mcpSettings/mcpSettings.guard.d.ts +0 -12
  1482. package/dist/entities/mcpSettings/mcpSettings.guard.d.ts.map +0 -1
  1483. package/dist/entities/mcpSettings/mcpSettings.guard.js +0 -15
  1484. package/dist/entities/mcpSettings/mcpSettings.guard.js.map +0 -1
  1485. package/dist/entities/mcpSettings/mcpSettings.schema.d.ts.map +0 -1
  1486. package/dist/entities/mcpSettings/mcpSettings.schema.js.map +0 -1
  1487. package/dist/entities/modelRouting/modelRouting.gateway.d.ts +0 -5
  1488. package/dist/entities/modelRouting/modelRouting.gateway.d.ts.map +0 -1
  1489. package/dist/entities/modelRouting/modelRouting.gateway.js.map +0 -1
  1490. package/dist/entities/modelRouting/modelRouting.schema.d.ts.map +0 -1
  1491. package/dist/entities/modelRouting/modelRouting.schema.js.map +0 -1
  1492. package/dist/entities/packageVersion/packageVersion.d.ts +0 -21
  1493. package/dist/entities/packageVersion/packageVersion.d.ts.map +0 -1
  1494. package/dist/entities/packageVersion/packageVersion.gateway.d.ts.map +0 -1
  1495. package/dist/entities/packageVersion/packageVersion.gateway.js.map +0 -1
  1496. package/dist/entities/packageVersion/packageVersion.guard.d.ts +0 -7
  1497. package/dist/entities/packageVersion/packageVersion.guard.d.ts.map +0 -1
  1498. package/dist/entities/packageVersion/packageVersion.guard.js +0 -13
  1499. package/dist/entities/packageVersion/packageVersion.guard.js.map +0 -1
  1500. package/dist/entities/packageVersion/packageVersion.js.map +0 -1
  1501. package/dist/entities/packageVersion/packageVersion.schema.d.ts +0 -12
  1502. package/dist/entities/packageVersion/packageVersion.schema.d.ts.map +0 -1
  1503. package/dist/entities/packageVersion/packageVersion.schema.js +0 -11
  1504. package/dist/entities/packageVersion/packageVersion.schema.js.map +0 -1
  1505. package/dist/entities/packageVersion/selfUpdateCommand.gateway.d.ts.map +0 -1
  1506. package/dist/entities/packageVersion/selfUpdateCommand.gateway.js.map +0 -1
  1507. package/dist/entities/packageVersion/versionCache.gateway.d.ts +0 -7
  1508. package/dist/entities/packageVersion/versionCache.gateway.d.ts.map +0 -1
  1509. package/dist/entities/packageVersion/versionCache.gateway.js.map +0 -1
  1510. package/dist/entities/progress/agentDefinition.type.d.ts.map +0 -1
  1511. package/dist/entities/progress/agentDefinition.type.js.map +0 -1
  1512. package/dist/entities/progress/progress.calculator.d.ts.map +0 -1
  1513. package/dist/entities/progress/progress.calculator.js.map +0 -1
  1514. package/dist/entities/progress/progress.factory.d.ts.map +0 -1
  1515. package/dist/entities/progress/progress.factory.js.map +0 -1
  1516. package/dist/entities/progress/progress.gateway.d.ts.map +0 -1
  1517. package/dist/entities/progress/progress.gateway.js.map +0 -1
  1518. package/dist/entities/progress/progress.type.d.ts.map +0 -1
  1519. package/dist/entities/progress/progress.type.js.map +0 -1
  1520. package/dist/entities/review/reviewFile.gateway.d.ts.map +0 -1
  1521. package/dist/entities/review/reviewFile.gateway.js.map +0 -1
  1522. package/dist/entities/review/reviewScore.valueObject.d.ts.map +0 -1
  1523. package/dist/entities/review/reviewScore.valueObject.js.map +0 -1
  1524. package/dist/entities/reviewAction/reviewAction.d.ts.map +0 -1
  1525. package/dist/entities/reviewAction/reviewAction.gateway.d.ts.map +0 -1
  1526. package/dist/entities/reviewAction/reviewAction.gateway.js.map +0 -1
  1527. package/dist/entities/reviewAction/reviewAction.guard.d.ts +0 -27
  1528. package/dist/entities/reviewAction/reviewAction.guard.d.ts.map +0 -1
  1529. package/dist/entities/reviewAction/reviewAction.guard.js +0 -8
  1530. package/dist/entities/reviewAction/reviewAction.guard.js.map +0 -1
  1531. package/dist/entities/reviewAction/reviewAction.js.map +0 -1
  1532. package/dist/entities/reviewAction/reviewAction.schema.d.ts.map +0 -1
  1533. package/dist/entities/reviewAction/reviewAction.schema.js.map +0 -1
  1534. package/dist/entities/reviewContext/reviewContext.d.ts +0 -62
  1535. package/dist/entities/reviewContext/reviewContext.d.ts.map +0 -1
  1536. package/dist/entities/reviewContext/reviewContext.gateway.d.ts +0 -16
  1537. package/dist/entities/reviewContext/reviewContext.gateway.d.ts.map +0 -1
  1538. package/dist/entities/reviewContext/reviewContext.gateway.js.map +0 -1
  1539. package/dist/entities/reviewContext/reviewContext.js.map +0 -1
  1540. package/dist/entities/reviewContext/reviewContext.schema.d.ts.map +0 -1
  1541. package/dist/entities/reviewContext/reviewContext.schema.js +0 -42
  1542. package/dist/entities/reviewContext/reviewContext.schema.js.map +0 -1
  1543. package/dist/entities/reviewContext/reviewContextAction.guard.d.ts +0 -247
  1544. package/dist/entities/reviewContext/reviewContextAction.guard.d.ts.map +0 -1
  1545. package/dist/entities/reviewContext/reviewContextAction.guard.js +0 -28
  1546. package/dist/entities/reviewContext/reviewContextAction.guard.js.map +0 -1
  1547. package/dist/entities/reviewContext/reviewContextAction.schema.d.ts +0 -16
  1548. package/dist/entities/reviewContext/reviewContextAction.schema.d.ts.map +0 -1
  1549. package/dist/entities/reviewContext/reviewContextAction.schema.js +0 -13
  1550. package/dist/entities/reviewContext/reviewContextAction.schema.js.map +0 -1
  1551. package/dist/entities/reviewRequest/reviewRequest.entity.d.ts.map +0 -1
  1552. package/dist/entities/reviewRequest/reviewRequest.entity.js.map +0 -1
  1553. package/dist/entities/reviewRequest/reviewRequest.guard.d.ts.map +0 -1
  1554. package/dist/entities/reviewRequest/reviewRequest.guard.js.map +0 -1
  1555. package/dist/entities/reviewRequest/reviewRequestState.valueObject.d.ts.map +0 -1
  1556. package/dist/entities/reviewRequest/reviewRequestState.valueObject.js.map +0 -1
  1557. package/dist/entities/shared/duration.valueObject.d.ts.map +0 -1
  1558. package/dist/entities/shared/duration.valueObject.js.map +0 -1
  1559. package/dist/entities/stats/projectStats.d.ts +0 -39
  1560. package/dist/entities/stats/projectStats.d.ts.map +0 -1
  1561. package/dist/entities/stats/projectStats.js.map +0 -1
  1562. package/dist/entities/stats/recalculateBody.guard.d.ts +0 -11
  1563. package/dist/entities/stats/recalculateBody.guard.d.ts.map +0 -1
  1564. package/dist/entities/stats/recalculateBody.guard.js +0 -9
  1565. package/dist/entities/stats/recalculateBody.guard.js.map +0 -1
  1566. package/dist/entities/stats/stats.gateway.d.ts +0 -7
  1567. package/dist/entities/stats/stats.gateway.d.ts.map +0 -1
  1568. package/dist/entities/stats/stats.gateway.js.map +0 -1
  1569. package/dist/entities/threadFetch/threadFetch.gateway.d.ts +0 -5
  1570. package/dist/entities/threadFetch/threadFetch.gateway.d.ts.map +0 -1
  1571. package/dist/entities/threadFetch/threadFetch.gateway.js.map +0 -1
  1572. package/dist/entities/tokenUsage/tokenUsage.gateway.d.ts +0 -6
  1573. package/dist/entities/tokenUsage/tokenUsage.gateway.d.ts.map +0 -1
  1574. package/dist/entities/tokenUsage/tokenUsage.gateway.js.map +0 -1
  1575. package/dist/entities/tokenUsage/tokenUsage.schema.d.ts.map +0 -1
  1576. package/dist/entities/tokenUsage/tokenUsage.schema.js.map +0 -1
  1577. package/dist/entities/tracking/assignmentInfo.d.ts.map +0 -1
  1578. package/dist/entities/tracking/assignmentInfo.js.map +0 -1
  1579. package/dist/entities/tracking/mrTrackingData.d.ts.map +0 -1
  1580. package/dist/entities/tracking/mrTrackingData.js.map +0 -1
  1581. package/dist/entities/tracking/reviewEvent.d.ts +0 -14
  1582. package/dist/entities/tracking/reviewEvent.d.ts.map +0 -1
  1583. package/dist/entities/tracking/reviewEvent.js.map +0 -1
  1584. package/dist/entities/tracking/reviewRequestTracking.gateway.d.ts +0 -19
  1585. package/dist/entities/tracking/reviewRequestTracking.gateway.d.ts.map +0 -1
  1586. package/dist/entities/tracking/reviewRequestTracking.gateway.js.map +0 -1
  1587. package/dist/entities/tracking/trackedMr.d.ts.map +0 -1
  1588. package/dist/entities/tracking/trackedMr.js.map +0 -1
  1589. package/dist/interface-adapters/adapters/githubPullRequest.adapter.d.ts +0 -6
  1590. package/dist/interface-adapters/adapters/githubPullRequest.adapter.d.ts.map +0 -1
  1591. package/dist/interface-adapters/adapters/githubPullRequest.adapter.js.map +0 -1
  1592. package/dist/interface-adapters/adapters/gitlabMergeRequest.adapter.d.ts +0 -6
  1593. package/dist/interface-adapters/adapters/gitlabMergeRequest.adapter.d.ts.map +0 -1
  1594. package/dist/interface-adapters/adapters/gitlabMergeRequest.adapter.js.map +0 -1
  1595. package/dist/interface-adapters/adapters/platformAdapter.d.ts +0 -9
  1596. package/dist/interface-adapters/adapters/platformAdapter.d.ts.map +0 -1
  1597. package/dist/interface-adapters/adapters/platformAdapter.js +0 -16
  1598. package/dist/interface-adapters/adapters/platformAdapter.js.map +0 -1
  1599. package/dist/interface-adapters/controllers/http/cleanup.routes.d.ts +0 -16
  1600. package/dist/interface-adapters/controllers/http/cleanup.routes.d.ts.map +0 -1
  1601. package/dist/interface-adapters/controllers/http/cleanup.routes.js +0 -44
  1602. package/dist/interface-adapters/controllers/http/cleanup.routes.js.map +0 -1
  1603. package/dist/interface-adapters/controllers/http/cliStatus.routes.d.ts.map +0 -1
  1604. package/dist/interface-adapters/controllers/http/cliStatus.routes.js +0 -173
  1605. package/dist/interface-adapters/controllers/http/cliStatus.routes.js.map +0 -1
  1606. package/dist/interface-adapters/controllers/http/health.routes.d.ts +0 -11
  1607. package/dist/interface-adapters/controllers/http/health.routes.d.ts.map +0 -1
  1608. package/dist/interface-adapters/controllers/http/health.routes.js +0 -27
  1609. package/dist/interface-adapters/controllers/http/health.routes.js.map +0 -1
  1610. package/dist/interface-adapters/controllers/http/index.d.ts +0 -6
  1611. package/dist/interface-adapters/controllers/http/index.d.ts.map +0 -1
  1612. package/dist/interface-adapters/controllers/http/index.js +0 -6
  1613. package/dist/interface-adapters/controllers/http/index.js.map +0 -1
  1614. package/dist/interface-adapters/controllers/http/insights.routes.d.ts +0 -20
  1615. package/dist/interface-adapters/controllers/http/insights.routes.d.ts.map +0 -1
  1616. package/dist/interface-adapters/controllers/http/insights.routes.js +0 -73
  1617. package/dist/interface-adapters/controllers/http/insights.routes.js.map +0 -1
  1618. package/dist/interface-adapters/controllers/http/logs.routes.d.ts.map +0 -1
  1619. package/dist/interface-adapters/controllers/http/logs.routes.js +0 -12
  1620. package/dist/interface-adapters/controllers/http/logs.routes.js.map +0 -1
  1621. package/dist/interface-adapters/controllers/http/mrTracking.routes.d.ts.map +0 -1
  1622. package/dist/interface-adapters/controllers/http/mrTracking.routes.js +0 -63
  1623. package/dist/interface-adapters/controllers/http/mrTracking.routes.js.map +0 -1
  1624. package/dist/interface-adapters/controllers/http/mrTrackingAdvanced.routes.d.ts +0 -12
  1625. package/dist/interface-adapters/controllers/http/mrTrackingAdvanced.routes.d.ts.map +0 -1
  1626. package/dist/interface-adapters/controllers/http/mrTrackingAdvanced.routes.js +0 -336
  1627. package/dist/interface-adapters/controllers/http/mrTrackingAdvanced.routes.js.map +0 -1
  1628. package/dist/interface-adapters/controllers/http/projectConfig.routes.d.ts.map +0 -1
  1629. package/dist/interface-adapters/controllers/http/projectConfig.routes.js +0 -75
  1630. package/dist/interface-adapters/controllers/http/projectConfig.routes.js.map +0 -1
  1631. package/dist/interface-adapters/controllers/http/reviews.routes.d.ts +0 -18
  1632. package/dist/interface-adapters/controllers/http/reviews.routes.d.ts.map +0 -1
  1633. package/dist/interface-adapters/controllers/http/reviews.routes.js +0 -96
  1634. package/dist/interface-adapters/controllers/http/reviews.routes.js.map +0 -1
  1635. package/dist/interface-adapters/controllers/http/settings.routes.d.ts.map +0 -1
  1636. package/dist/interface-adapters/controllers/http/settings.routes.js +0 -35
  1637. package/dist/interface-adapters/controllers/http/settings.routes.js.map +0 -1
  1638. package/dist/interface-adapters/controllers/http/stats.routes.d.ts +0 -27
  1639. package/dist/interface-adapters/controllers/http/stats.routes.d.ts.map +0 -1
  1640. package/dist/interface-adapters/controllers/http/stats.routes.js +0 -70
  1641. package/dist/interface-adapters/controllers/http/stats.routes.js.map +0 -1
  1642. package/dist/interface-adapters/controllers/http/version.routes.d.ts +0 -19
  1643. package/dist/interface-adapters/controllers/http/version.routes.d.ts.map +0 -1
  1644. package/dist/interface-adapters/controllers/http/version.routes.js +0 -21
  1645. package/dist/interface-adapters/controllers/http/version.routes.js.map +0 -1
  1646. package/dist/interface-adapters/controllers/mcp/addAction.handler.d.ts +0 -4
  1647. package/dist/interface-adapters/controllers/mcp/addAction.handler.d.ts.map +0 -1
  1648. package/dist/interface-adapters/controllers/mcp/addAction.handler.js.map +0 -1
  1649. package/dist/interface-adapters/controllers/mcp/completeAgent.handler.d.ts +0 -4
  1650. package/dist/interface-adapters/controllers/mcp/completeAgent.handler.d.ts.map +0 -1
  1651. package/dist/interface-adapters/controllers/mcp/completeAgent.handler.js.map +0 -1
  1652. package/dist/interface-adapters/controllers/mcp/getThreads.handler.d.ts +0 -4
  1653. package/dist/interface-adapters/controllers/mcp/getThreads.handler.d.ts.map +0 -1
  1654. package/dist/interface-adapters/controllers/mcp/getThreads.handler.js.map +0 -1
  1655. package/dist/interface-adapters/controllers/mcp/getWorkflow.handler.d.ts +0 -4
  1656. package/dist/interface-adapters/controllers/mcp/getWorkflow.handler.d.ts.map +0 -1
  1657. package/dist/interface-adapters/controllers/mcp/getWorkflow.handler.js.map +0 -1
  1658. package/dist/interface-adapters/controllers/mcp/setPhase.handler.d.ts +0 -4
  1659. package/dist/interface-adapters/controllers/mcp/setPhase.handler.d.ts.map +0 -1
  1660. package/dist/interface-adapters/controllers/mcp/setPhase.handler.js.map +0 -1
  1661. package/dist/interface-adapters/controllers/mcp/startAgent.handler.d.ts +0 -4
  1662. package/dist/interface-adapters/controllers/mcp/startAgent.handler.d.ts.map +0 -1
  1663. package/dist/interface-adapters/controllers/mcp/startAgent.handler.js.map +0 -1
  1664. package/dist/interface-adapters/controllers/webhook/eventFilter.d.ts +0 -71
  1665. package/dist/interface-adapters/controllers/webhook/eventFilter.d.ts.map +0 -1
  1666. package/dist/interface-adapters/controllers/webhook/eventFilter.js +0 -252
  1667. package/dist/interface-adapters/controllers/webhook/eventFilter.js.map +0 -1
  1668. package/dist/interface-adapters/controllers/webhook/github.controller.d.ts +0 -19
  1669. package/dist/interface-adapters/controllers/webhook/github.controller.d.ts.map +0 -1
  1670. package/dist/interface-adapters/controllers/webhook/github.controller.js +0 -264
  1671. package/dist/interface-adapters/controllers/webhook/github.controller.js.map +0 -1
  1672. package/dist/interface-adapters/controllers/webhook/gitlab.controller.d.ts +0 -28
  1673. package/dist/interface-adapters/controllers/webhook/gitlab.controller.d.ts.map +0 -1
  1674. package/dist/interface-adapters/controllers/webhook/gitlab.controller.js +0 -480
  1675. package/dist/interface-adapters/controllers/webhook/gitlab.controller.js.map +0 -1
  1676. package/dist/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.d.ts +0 -7
  1677. package/dist/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.d.ts.map +0 -1
  1678. package/dist/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.js +0 -71
  1679. package/dist/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.js.map +0 -1
  1680. package/dist/interface-adapters/gateways/cli/reviewAction.gitlab.cli.gateway.d.ts +0 -7
  1681. package/dist/interface-adapters/gateways/cli/reviewAction.gitlab.cli.gateway.d.ts.map +0 -1
  1682. package/dist/interface-adapters/gateways/cli/reviewAction.gitlab.cli.gateway.js +0 -63
  1683. package/dist/interface-adapters/gateways/cli/reviewAction.gitlab.cli.gateway.js.map +0 -1
  1684. package/dist/interface-adapters/gateways/diffMetadataFetch.github.gateway.d.ts +0 -9
  1685. package/dist/interface-adapters/gateways/diffMetadataFetch.github.gateway.d.ts.map +0 -1
  1686. package/dist/interface-adapters/gateways/diffMetadataFetch.github.gateway.js.map +0 -1
  1687. package/dist/interface-adapters/gateways/diffMetadataFetch.gitlab.gateway.d.ts +0 -9
  1688. package/dist/interface-adapters/gateways/diffMetadataFetch.gitlab.gateway.d.ts.map +0 -1
  1689. package/dist/interface-adapters/gateways/diffMetadataFetch.gitlab.gateway.js.map +0 -1
  1690. package/dist/interface-adapters/gateways/diffStatsFetch.github.gateway.d.ts +0 -10
  1691. package/dist/interface-adapters/gateways/diffStatsFetch.github.gateway.d.ts.map +0 -1
  1692. package/dist/interface-adapters/gateways/diffStatsFetch.github.gateway.js.map +0 -1
  1693. package/dist/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.d.ts +0 -10
  1694. package/dist/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.d.ts.map +0 -1
  1695. package/dist/interface-adapters/gateways/diffStatsFetch.gitlab.gateway.js.map +0 -1
  1696. package/dist/interface-adapters/gateways/fileSystem/insights.fileSystem.d.ts +0 -7
  1697. package/dist/interface-adapters/gateways/fileSystem/insights.fileSystem.d.ts.map +0 -1
  1698. package/dist/interface-adapters/gateways/fileSystem/insights.fileSystem.js +0 -33
  1699. package/dist/interface-adapters/gateways/fileSystem/insights.fileSystem.js.map +0 -1
  1700. package/dist/interface-adapters/gateways/fileSystem/reviewFile.fileSystem.d.ts.map +0 -1
  1701. package/dist/interface-adapters/gateways/fileSystem/reviewFile.fileSystem.js.map +0 -1
  1702. package/dist/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.d.ts +0 -7
  1703. package/dist/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.d.ts.map +0 -1
  1704. package/dist/interface-adapters/gateways/fileSystem/reviewLogFile.fileSystem.gateway.js.map +0 -1
  1705. package/dist/interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.d.ts +0 -22
  1706. package/dist/interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.d.ts.map +0 -1
  1707. package/dist/interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.js +0 -142
  1708. package/dist/interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.js.map +0 -1
  1709. package/dist/interface-adapters/gateways/fileSystem/stats.fileSystem.d.ts +0 -8
  1710. package/dist/interface-adapters/gateways/fileSystem/stats.fileSystem.d.ts.map +0 -1
  1711. package/dist/interface-adapters/gateways/fileSystem/stats.fileSystem.js.map +0 -1
  1712. package/dist/interface-adapters/gateways/jobContext.memory.gateway.d.ts.map +0 -1
  1713. package/dist/interface-adapters/gateways/jobContext.memory.gateway.js.map +0 -1
  1714. package/dist/interface-adapters/gateways/packageVersion.npm.gateway.d.ts +0 -7
  1715. package/dist/interface-adapters/gateways/packageVersion.npm.gateway.d.ts.map +0 -1
  1716. package/dist/interface-adapters/gateways/packageVersion.npm.gateway.js +0 -25
  1717. package/dist/interface-adapters/gateways/packageVersion.npm.gateway.js.map +0 -1
  1718. package/dist/interface-adapters/gateways/projectConfig/routingPolicy.projectConfig.gateway.d.ts +0 -6
  1719. package/dist/interface-adapters/gateways/projectConfig/routingPolicy.projectConfig.gateway.d.ts.map +0 -1
  1720. package/dist/interface-adapters/gateways/projectConfig/routingPolicy.projectConfig.gateway.js +0 -8
  1721. package/dist/interface-adapters/gateways/projectConfig/routingPolicy.projectConfig.gateway.js.map +0 -1
  1722. package/dist/interface-adapters/gateways/reviewContext.fileSystem.gateway.d.ts +0 -14
  1723. package/dist/interface-adapters/gateways/reviewContext.fileSystem.gateway.d.ts.map +0 -1
  1724. package/dist/interface-adapters/gateways/reviewContext.fileSystem.gateway.js +0 -87
  1725. package/dist/interface-adapters/gateways/reviewContext.fileSystem.gateway.js.map +0 -1
  1726. package/dist/interface-adapters/gateways/reviewFile.gateway.d.ts +0 -2
  1727. package/dist/interface-adapters/gateways/reviewFile.gateway.d.ts.map +0 -1
  1728. package/dist/interface-adapters/gateways/reviewFile.gateway.js.map +0 -1
  1729. package/dist/interface-adapters/gateways/reviewLogFile.gateway.d.ts.map +0 -1
  1730. package/dist/interface-adapters/gateways/reviewLogFile.gateway.js.map +0 -1
  1731. package/dist/interface-adapters/gateways/reviewProgress.memory.gateway.d.ts.map +0 -1
  1732. package/dist/interface-adapters/gateways/reviewProgress.memory.gateway.js.map +0 -1
  1733. package/dist/interface-adapters/gateways/reviewRequestTracking.gateway.d.ts +0 -2
  1734. package/dist/interface-adapters/gateways/reviewRequestTracking.gateway.d.ts.map +0 -1
  1735. package/dist/interface-adapters/gateways/reviewRequestTracking.gateway.js.map +0 -1
  1736. package/dist/interface-adapters/gateways/selfUpdate.cli.gateway.d.ts +0 -20
  1737. package/dist/interface-adapters/gateways/selfUpdate.cli.gateway.d.ts.map +0 -1
  1738. package/dist/interface-adapters/gateways/selfUpdate.cli.gateway.js +0 -58
  1739. package/dist/interface-adapters/gateways/selfUpdate.cli.gateway.js.map +0 -1
  1740. package/dist/interface-adapters/gateways/stats.gateway.d.ts +0 -2
  1741. package/dist/interface-adapters/gateways/stats.gateway.d.ts.map +0 -1
  1742. package/dist/interface-adapters/gateways/stats.gateway.js.map +0 -1
  1743. package/dist/interface-adapters/gateways/threadFetch.github.gateway.d.ts +0 -10
  1744. package/dist/interface-adapters/gateways/threadFetch.github.gateway.d.ts.map +0 -1
  1745. package/dist/interface-adapters/gateways/threadFetch.github.gateway.js.map +0 -1
  1746. package/dist/interface-adapters/gateways/threadFetch.gitlab.gateway.d.ts +0 -10
  1747. package/dist/interface-adapters/gateways/threadFetch.gitlab.gateway.d.ts.map +0 -1
  1748. package/dist/interface-adapters/gateways/threadFetch.gitlab.gateway.js.map +0 -1
  1749. package/dist/interface-adapters/gateways/tokenUsage/tokenUsage.filesystem.gateway.d.ts +0 -7
  1750. package/dist/interface-adapters/gateways/tokenUsage/tokenUsage.filesystem.gateway.d.ts.map +0 -1
  1751. package/dist/interface-adapters/gateways/tokenUsage/tokenUsage.filesystem.gateway.js +0 -37
  1752. package/dist/interface-adapters/gateways/tokenUsage/tokenUsage.filesystem.gateway.js.map +0 -1
  1753. package/dist/interface-adapters/gateways/versionCache.memory.gateway.d.ts +0 -12
  1754. package/dist/interface-adapters/gateways/versionCache.memory.gateway.d.ts.map +0 -1
  1755. package/dist/interface-adapters/gateways/versionCache.memory.gateway.js.map +0 -1
  1756. package/dist/interface-adapters/presenters/insights.presenter.d.ts +0 -41
  1757. package/dist/interface-adapters/presenters/insights.presenter.d.ts.map +0 -1
  1758. package/dist/interface-adapters/presenters/insights.presenter.js.map +0 -1
  1759. package/dist/interface-adapters/presenters/jobStatus.presenter.d.ts +0 -29
  1760. package/dist/interface-adapters/presenters/jobStatus.presenter.d.ts.map +0 -1
  1761. package/dist/interface-adapters/presenters/jobStatus.presenter.js +0 -57
  1762. package/dist/interface-adapters/presenters/jobStatus.presenter.js.map +0 -1
  1763. package/dist/interface-adapters/presenters/projectStats.calculator.d.ts +0 -8
  1764. package/dist/interface-adapters/presenters/projectStats.calculator.d.ts.map +0 -1
  1765. package/dist/interface-adapters/presenters/projectStats.calculator.js.map +0 -1
  1766. package/dist/interface-adapters/presenters/reviewContextProgress.presenter.d.ts +0 -8
  1767. package/dist/interface-adapters/presenters/reviewContextProgress.presenter.d.ts.map +0 -1
  1768. package/dist/interface-adapters/presenters/reviewContextProgress.presenter.js +0 -45
  1769. package/dist/interface-adapters/presenters/reviewContextProgress.presenter.js.map +0 -1
  1770. package/dist/interface-adapters/presenters/reviewList.presenter.d.ts +0 -22
  1771. package/dist/interface-adapters/presenters/reviewList.presenter.d.ts.map +0 -1
  1772. package/dist/interface-adapters/presenters/reviewList.presenter.js.map +0 -1
  1773. package/dist/interface-adapters/views/dashboard/index.html +0 -2682
  1774. package/dist/interface-adapters/views/dashboard/modules/assignee.d.ts.map +0 -1
  1775. package/dist/interface-adapters/views/dashboard/modules/assignee.js.map +0 -1
  1776. package/dist/interface-adapters/views/dashboard/modules/cleanup.d.ts.map +0 -1
  1777. package/dist/interface-adapters/views/dashboard/modules/cleanup.js.map +0 -1
  1778. package/dist/interface-adapters/views/dashboard/modules/collapsibleList.d.ts.map +0 -1
  1779. package/dist/interface-adapters/views/dashboard/modules/collapsibleList.js.map +0 -1
  1780. package/dist/interface-adapters/views/dashboard/modules/constants.d.ts.map +0 -1
  1781. package/dist/interface-adapters/views/dashboard/modules/constants.js.map +0 -1
  1782. package/dist/interface-adapters/views/dashboard/modules/desktopNotifications.d.ts.map +0 -1
  1783. package/dist/interface-adapters/views/dashboard/modules/desktopNotifications.js.map +0 -1
  1784. package/dist/interface-adapters/views/dashboard/modules/developerSheet.d.ts.map +0 -1
  1785. package/dist/interface-adapters/views/dashboard/modules/developerSheet.js.map +0 -1
  1786. package/dist/interface-adapters/views/dashboard/modules/formatting.d.ts.map +0 -1
  1787. package/dist/interface-adapters/views/dashboard/modules/formatting.js.map +0 -1
  1788. package/dist/interface-adapters/views/dashboard/modules/html.d.ts.map +0 -1
  1789. package/dist/interface-adapters/views/dashboard/modules/html.js.map +0 -1
  1790. package/dist/interface-adapters/views/dashboard/modules/i18n.d.ts.map +0 -1
  1791. package/dist/interface-adapters/views/dashboard/modules/i18n.js +0 -796
  1792. package/dist/interface-adapters/views/dashboard/modules/i18n.js.map +0 -1
  1793. package/dist/interface-adapters/views/dashboard/modules/icons.d.ts.map +0 -1
  1794. package/dist/interface-adapters/views/dashboard/modules/icons.js.map +0 -1
  1795. package/dist/interface-adapters/views/dashboard/modules/insightsReport.d.ts.map +0 -1
  1796. package/dist/interface-adapters/views/dashboard/modules/insightsReport.js.map +0 -1
  1797. package/dist/interface-adapters/views/dashboard/modules/loading.d.ts.map +0 -1
  1798. package/dist/interface-adapters/views/dashboard/modules/loading.js.map +0 -1
  1799. package/dist/interface-adapters/views/dashboard/modules/mrSheet.d.ts.map +0 -1
  1800. package/dist/interface-adapters/views/dashboard/modules/mrSheet.js.map +0 -1
  1801. package/dist/interface-adapters/views/dashboard/modules/notifications.d.ts.map +0 -1
  1802. package/dist/interface-adapters/views/dashboard/modules/notifications.js.map +0 -1
  1803. package/dist/interface-adapters/views/dashboard/modules/priority.d.ts.map +0 -1
  1804. package/dist/interface-adapters/views/dashboard/modules/priority.js.map +0 -1
  1805. package/dist/interface-adapters/views/dashboard/modules/quality.d.ts.map +0 -1
  1806. package/dist/interface-adapters/views/dashboard/modules/quality.js.map +0 -1
  1807. package/dist/interface-adapters/views/dashboard/modules/queueLanes.d.ts.map +0 -1
  1808. package/dist/interface-adapters/views/dashboard/modules/queueLanes.js.map +0 -1
  1809. package/dist/interface-adapters/views/dashboard/modules/sessionMetrics.d.ts.map +0 -1
  1810. package/dist/interface-adapters/views/dashboard/modules/sessionMetrics.js.map +0 -1
  1811. package/dist/interface-adapters/views/dashboard/modules/sharedViewHelpers.d.ts.map +0 -1
  1812. package/dist/interface-adapters/views/dashboard/modules/sharedViewHelpers.js.map +0 -1
  1813. package/dist/interface-adapters/views/dashboard/modules/statsCharts.d.ts.map +0 -1
  1814. package/dist/interface-adapters/views/dashboard/modules/statsCharts.js.map +0 -1
  1815. package/dist/interface-adapters/views/dashboard/modules/teamTab.d.ts.map +0 -1
  1816. package/dist/interface-adapters/views/dashboard/modules/teamTab.js.map +0 -1
  1817. package/dist/interface-adapters/views/dashboard/modules/versionUpdate.d.ts +0 -16
  1818. package/dist/interface-adapters/views/dashboard/modules/versionUpdate.d.ts.map +0 -1
  1819. package/dist/interface-adapters/views/dashboard/modules/versionUpdate.js +0 -54
  1820. package/dist/interface-adapters/views/dashboard/modules/versionUpdate.js.map +0 -1
  1821. package/dist/interface-adapters/views/dashboard/styles.css +0 -3973
  1822. package/dist/services/agentInstructionsBuilder.d.ts +0 -4
  1823. package/dist/services/agentInstructionsBuilder.d.ts.map +0 -1
  1824. package/dist/services/agentInstructionsBuilder.js.map +0 -1
  1825. package/dist/services/commentLinkEnricher.d.ts.map +0 -1
  1826. package/dist/services/commentLinkEnricher.js.map +0 -1
  1827. package/dist/services/contextActionsExecutor.d.ts +0 -19
  1828. package/dist/services/contextActionsExecutor.d.ts.map +0 -1
  1829. package/dist/services/contextActionsExecutor.js +0 -19
  1830. package/dist/services/contextActionsExecutor.js.map +0 -1
  1831. package/dist/services/reviewContextWatcher.service.d.ts +0 -15
  1832. package/dist/services/reviewContextWatcher.service.d.ts.map +0 -1
  1833. package/dist/services/reviewContextWatcher.service.js.map +0 -1
  1834. package/dist/services/statsService.d.ts +0 -52
  1835. package/dist/services/statsService.d.ts.map +0 -1
  1836. package/dist/services/statsService.js.map +0 -1
  1837. package/dist/services/threadActionsExecutor.d.ts +0 -26
  1838. package/dist/services/threadActionsExecutor.d.ts.map +0 -1
  1839. package/dist/services/threadActionsExecutor.js +0 -28
  1840. package/dist/services/threadActionsExecutor.js.map +0 -1
  1841. package/dist/services/threadActionsParser.d.ts +0 -4
  1842. package/dist/services/threadActionsParser.d.ts.map +0 -1
  1843. package/dist/services/threadActionsParser.js.map +0 -1
  1844. package/dist/tests/units/entities/reviewContext/reviewContextAction.guard.test.d.ts +0 -2
  1845. package/dist/tests/units/entities/reviewContext/reviewContextAction.guard.test.d.ts.map +0 -1
  1846. package/dist/tests/units/entities/reviewContext/reviewContextAction.guard.test.js +0 -88
  1847. package/dist/tests/units/entities/reviewContext/reviewContextAction.guard.test.js.map +0 -1
  1848. package/dist/tests/units/entities/reviewContext/reviewContextAction.schema.test.d.ts +0 -2
  1849. package/dist/tests/units/entities/reviewContext/reviewContextAction.schema.test.d.ts.map +0 -1
  1850. package/dist/tests/units/entities/reviewContext/reviewContextAction.schema.test.js +0 -132
  1851. package/dist/tests/units/entities/reviewContext/reviewContextAction.schema.test.js.map +0 -1
  1852. package/dist/tests/units/interface-adapters/views/dashboard/modules/assignee.test.d.ts.map +0 -1
  1853. package/dist/tests/units/interface-adapters/views/dashboard/modules/assignee.test.js +0 -35
  1854. package/dist/tests/units/interface-adapters/views/dashboard/modules/assignee.test.js.map +0 -1
  1855. package/dist/tests/units/interface-adapters/views/dashboard/modules/constants.test.d.ts.map +0 -1
  1856. package/dist/tests/units/interface-adapters/views/dashboard/modules/constants.test.js +0 -17
  1857. package/dist/tests/units/interface-adapters/views/dashboard/modules/constants.test.js.map +0 -1
  1858. package/dist/tests/units/interface-adapters/views/dashboard/modules/desktopNotifications.test.d.ts.map +0 -1
  1859. package/dist/tests/units/interface-adapters/views/dashboard/modules/desktopNotifications.test.js +0 -54
  1860. package/dist/tests/units/interface-adapters/views/dashboard/modules/desktopNotifications.test.js.map +0 -1
  1861. package/dist/tests/units/interface-adapters/views/dashboard/modules/developerSheet.test.d.ts.map +0 -1
  1862. package/dist/tests/units/interface-adapters/views/dashboard/modules/developerSheet.test.js +0 -224
  1863. package/dist/tests/units/interface-adapters/views/dashboard/modules/developerSheet.test.js.map +0 -1
  1864. package/dist/tests/units/interface-adapters/views/dashboard/modules/formatting.test.d.ts.map +0 -1
  1865. package/dist/tests/units/interface-adapters/views/dashboard/modules/formatting.test.js +0 -95
  1866. package/dist/tests/units/interface-adapters/views/dashboard/modules/formatting.test.js.map +0 -1
  1867. package/dist/tests/units/interface-adapters/views/dashboard/modules/html.test.d.ts.map +0 -1
  1868. package/dist/tests/units/interface-adapters/views/dashboard/modules/html.test.js +0 -55
  1869. package/dist/tests/units/interface-adapters/views/dashboard/modules/html.test.js.map +0 -1
  1870. package/dist/tests/units/interface-adapters/views/dashboard/modules/i18n.test.d.ts.map +0 -1
  1871. package/dist/tests/units/interface-adapters/views/dashboard/modules/i18n.test.js +0 -127
  1872. package/dist/tests/units/interface-adapters/views/dashboard/modules/i18n.test.js.map +0 -1
  1873. package/dist/tests/units/interface-adapters/views/dashboard/modules/icons.test.d.ts.map +0 -1
  1874. package/dist/tests/units/interface-adapters/views/dashboard/modules/icons.test.js +0 -28
  1875. package/dist/tests/units/interface-adapters/views/dashboard/modules/icons.test.js.map +0 -1
  1876. package/dist/tests/units/interface-adapters/views/dashboard/modules/insightsReport.test.d.ts.map +0 -1
  1877. package/dist/tests/units/interface-adapters/views/dashboard/modules/insightsReport.test.js +0 -326
  1878. package/dist/tests/units/interface-adapters/views/dashboard/modules/insightsReport.test.js.map +0 -1
  1879. package/dist/tests/units/interface-adapters/views/dashboard/modules/loading.test.d.ts.map +0 -1
  1880. package/dist/tests/units/interface-adapters/views/dashboard/modules/loading.test.js +0 -51
  1881. package/dist/tests/units/interface-adapters/views/dashboard/modules/loading.test.js.map +0 -1
  1882. package/dist/tests/units/interface-adapters/views/dashboard/modules/notifications.test.d.ts.map +0 -1
  1883. package/dist/tests/units/interface-adapters/views/dashboard/modules/notifications.test.js +0 -43
  1884. package/dist/tests/units/interface-adapters/views/dashboard/modules/notifications.test.js.map +0 -1
  1885. package/dist/tests/units/interface-adapters/views/dashboard/modules/priority.test.d.ts.map +0 -1
  1886. package/dist/tests/units/interface-adapters/views/dashboard/modules/priority.test.js +0 -78
  1887. package/dist/tests/units/interface-adapters/views/dashboard/modules/priority.test.js.map +0 -1
  1888. package/dist/tests/units/interface-adapters/views/dashboard/modules/quality.test.d.ts.map +0 -1
  1889. package/dist/tests/units/interface-adapters/views/dashboard/modules/quality.test.js +0 -87
  1890. package/dist/tests/units/interface-adapters/views/dashboard/modules/quality.test.js.map +0 -1
  1891. package/dist/tests/units/interface-adapters/views/dashboard/modules/queueLanes.test.d.ts.map +0 -1
  1892. package/dist/tests/units/interface-adapters/views/dashboard/modules/queueLanes.test.js +0 -29
  1893. package/dist/tests/units/interface-adapters/views/dashboard/modules/queueLanes.test.js.map +0 -1
  1894. package/dist/tests/units/interface-adapters/views/dashboard/modules/sessionMetrics.test.d.ts.map +0 -1
  1895. package/dist/tests/units/interface-adapters/views/dashboard/modules/sessionMetrics.test.js +0 -60
  1896. package/dist/tests/units/interface-adapters/views/dashboard/modules/sessionMetrics.test.js.map +0 -1
  1897. package/dist/tests/units/interface-adapters/views/dashboard/modules/teamTab.test.d.ts.map +0 -1
  1898. package/dist/tests/units/interface-adapters/views/dashboard/modules/teamTab.test.js +0 -336
  1899. package/dist/tests/units/interface-adapters/views/dashboard/modules/teamTab.test.js.map +0 -1
  1900. package/dist/usecases/cancelReview.usecase.d.ts.map +0 -1
  1901. package/dist/usecases/cancelReview.usecase.js.map +0 -1
  1902. package/dist/usecases/cleanup/cleanupExpiredReviews.usecase.d.ts +0 -13
  1903. package/dist/usecases/cleanup/cleanupExpiredReviews.usecase.d.ts.map +0 -1
  1904. package/dist/usecases/cleanup/cleanupExpiredReviews.usecase.js +0 -41
  1905. package/dist/usecases/cleanup/cleanupExpiredReviews.usecase.js.map +0 -1
  1906. package/dist/usecases/cli/addRepositoriesToConfig.usecase.d.ts +0 -27
  1907. package/dist/usecases/cli/addRepositoriesToConfig.usecase.d.ts.map +0 -1
  1908. package/dist/usecases/cli/addRepositoriesToConfig.usecase.js.map +0 -1
  1909. package/dist/usecases/cli/checkInitPrerequisites.d.ts.map +0 -1
  1910. package/dist/usecases/cli/checkInitPrerequisites.js.map +0 -1
  1911. package/dist/usecases/cli/configureMcp.usecase.d.ts.map +0 -1
  1912. package/dist/usecases/cli/configureMcp.usecase.js +0 -49
  1913. package/dist/usecases/cli/configureMcp.usecase.js.map +0 -1
  1914. package/dist/usecases/cli/discoverRepositories.usecase.d.ts +0 -34
  1915. package/dist/usecases/cli/discoverRepositories.usecase.d.ts.map +0 -1
  1916. package/dist/usecases/cli/discoverRepositories.usecase.js.map +0 -1
  1917. package/dist/usecases/cli/followupImportants.usecase.d.ts.map +0 -1
  1918. package/dist/usecases/cli/followupImportants.usecase.js.map +0 -1
  1919. package/dist/usecases/cli/queryStatus.usecase.d.ts +0 -21
  1920. package/dist/usecases/cli/queryStatus.usecase.d.ts.map +0 -1
  1921. package/dist/usecases/cli/queryStatus.usecase.js.map +0 -1
  1922. package/dist/usecases/cli/readLogs.usecase.d.ts +0 -29
  1923. package/dist/usecases/cli/readLogs.usecase.d.ts.map +0 -1
  1924. package/dist/usecases/cli/readLogs.usecase.js.map +0 -1
  1925. package/dist/usecases/cli/startDaemon.usecase.d.ts +0 -28
  1926. package/dist/usecases/cli/startDaemon.usecase.d.ts.map +0 -1
  1927. package/dist/usecases/cli/startDaemon.usecase.js.map +0 -1
  1928. package/dist/usecases/cli/stopDaemon.usecase.d.ts +0 -26
  1929. package/dist/usecases/cli/stopDaemon.usecase.d.ts.map +0 -1
  1930. package/dist/usecases/cli/stopDaemon.usecase.js.map +0 -1
  1931. package/dist/usecases/cli/validateConfig.usecase.d.ts.map +0 -1
  1932. package/dist/usecases/cli/validateConfig.usecase.js.map +0 -1
  1933. package/dist/usecases/cli/writeInitConfig.usecase.d.ts.map +0 -1
  1934. package/dist/usecases/cli/writeInitConfig.usecase.js.map +0 -1
  1935. package/dist/usecases/handleReviewRequestPush.usecase.d.ts +0 -26
  1936. package/dist/usecases/handleReviewRequestPush.usecase.d.ts.map +0 -1
  1937. package/dist/usecases/handleReviewRequestPush.usecase.js.map +0 -1
  1938. package/dist/usecases/insights/buildAiInsightsPrompt.d.ts +0 -12
  1939. package/dist/usecases/insights/buildAiInsightsPrompt.d.ts.map +0 -1
  1940. package/dist/usecases/insights/buildAiInsightsPrompt.js.map +0 -1
  1941. package/dist/usecases/insights/computeDeveloperInsights.usecase.d.ts +0 -4
  1942. package/dist/usecases/insights/computeDeveloperInsights.usecase.d.ts.map +0 -1
  1943. package/dist/usecases/insights/computeDeveloperInsights.usecase.js +0 -226
  1944. package/dist/usecases/insights/computeDeveloperInsights.usecase.js.map +0 -1
  1945. package/dist/usecases/insights/computeInsightsWithPersistence.usecase.d.ts +0 -12
  1946. package/dist/usecases/insights/computeInsightsWithPersistence.usecase.d.ts.map +0 -1
  1947. package/dist/usecases/insights/computeInsightsWithPersistence.usecase.js +0 -340
  1948. package/dist/usecases/insights/computeInsightsWithPersistence.usecase.js.map +0 -1
  1949. package/dist/usecases/insights/computeTeamInsights.usecase.d.ts +0 -4
  1950. package/dist/usecases/insights/computeTeamInsights.usecase.d.ts.map +0 -1
  1951. package/dist/usecases/insights/computeTeamInsights.usecase.js +0 -111
  1952. package/dist/usecases/insights/computeTeamInsights.usecase.js.map +0 -1
  1953. package/dist/usecases/insights/generateAiInsights.usecase.d.ts +0 -27
  1954. package/dist/usecases/insights/generateAiInsights.usecase.d.ts.map +0 -1
  1955. package/dist/usecases/insights/generateAiInsights.usecase.js +0 -65
  1956. package/dist/usecases/insights/generateAiInsights.usecase.js.map +0 -1
  1957. package/dist/usecases/insights/getInsightsWithAiStatus.usecase.d.ts +0 -18
  1958. package/dist/usecases/insights/getInsightsWithAiStatus.usecase.d.ts.map +0 -1
  1959. package/dist/usecases/insights/getInsightsWithAiStatus.usecase.js +0 -56
  1960. package/dist/usecases/insights/getInsightsWithAiStatus.usecase.js.map +0 -1
  1961. package/dist/usecases/insights/insightLevelComputation.service.d.ts +0 -41
  1962. package/dist/usecases/insights/insightLevelComputation.service.d.ts.map +0 -1
  1963. package/dist/usecases/insights/insightLevelComputation.service.js +0 -313
  1964. package/dist/usecases/insights/insightLevelComputation.service.js.map +0 -1
  1965. package/dist/usecases/mcp/addAction.usecase.d.ts.map +0 -1
  1966. package/dist/usecases/mcp/addAction.usecase.js.map +0 -1
  1967. package/dist/usecases/mcp/completeAgent.usecase.d.ts.map +0 -1
  1968. package/dist/usecases/mcp/completeAgent.usecase.js.map +0 -1
  1969. package/dist/usecases/mcp/getThreads.usecase.d.ts.map +0 -1
  1970. package/dist/usecases/mcp/getThreads.usecase.js.map +0 -1
  1971. package/dist/usecases/mcp/getWorkflow.usecase.d.ts.map +0 -1
  1972. package/dist/usecases/mcp/getWorkflow.usecase.js.map +0 -1
  1973. package/dist/usecases/mcp/setPhase.usecase.d.ts +0 -15
  1974. package/dist/usecases/mcp/setPhase.usecase.d.ts.map +0 -1
  1975. package/dist/usecases/mcp/setPhase.usecase.js +0 -16
  1976. package/dist/usecases/mcp/setPhase.usecase.js.map +0 -1
  1977. package/dist/usecases/mcp/startAgent.usecase.d.ts.map +0 -1
  1978. package/dist/usecases/mcp/startAgent.usecase.js.map +0 -1
  1979. package/dist/usecases/selectModelForReview/selectModelForReview.usecase.d.ts +0 -15
  1980. package/dist/usecases/selectModelForReview/selectModelForReview.usecase.d.ts.map +0 -1
  1981. package/dist/usecases/selectModelForReview/selectModelForReview.usecase.js.map +0 -1
  1982. package/dist/usecases/stats/backfillDiffStats.usecase.d.ts +0 -18
  1983. package/dist/usecases/stats/backfillDiffStats.usecase.d.ts.map +0 -1
  1984. package/dist/usecases/stats/backfillDiffStats.usecase.js.map +0 -1
  1985. package/dist/usecases/stats/recalculateProjectStats.usecase.d.ts +0 -7
  1986. package/dist/usecases/stats/recalculateProjectStats.usecase.d.ts.map +0 -1
  1987. package/dist/usecases/stats/recalculateProjectStats.usecase.js.map +0 -1
  1988. package/dist/usecases/stats/recalculateWithBackfill.usecase.d.ts +0 -22
  1989. package/dist/usecases/stats/recalculateWithBackfill.usecase.d.ts.map +0 -1
  1990. package/dist/usecases/stats/recalculateWithBackfill.usecase.js +0 -33
  1991. package/dist/usecases/stats/recalculateWithBackfill.usecase.js.map +0 -1
  1992. package/dist/usecases/summarizeTokenUsage/summarizeTokenUsage.usecase.d.ts +0 -23
  1993. package/dist/usecases/summarizeTokenUsage/summarizeTokenUsage.usecase.d.ts.map +0 -1
  1994. package/dist/usecases/summarizeTokenUsage/summarizeTokenUsage.usecase.js.map +0 -1
  1995. package/dist/usecases/trackTokenUsage/trackTokenUsage.usecase.d.ts +0 -8
  1996. package/dist/usecases/trackTokenUsage/trackTokenUsage.usecase.d.ts.map +0 -1
  1997. package/dist/usecases/trackTokenUsage/trackTokenUsage.usecase.js.map +0 -1
  1998. package/dist/usecases/tracking/checkFollowupNeeded.usecase.d.ts +0 -14
  1999. package/dist/usecases/tracking/checkFollowupNeeded.usecase.d.ts.map +0 -1
  2000. package/dist/usecases/tracking/checkFollowupNeeded.usecase.js.map +0 -1
  2001. package/dist/usecases/tracking/recordPush.usecase.d.ts +0 -15
  2002. package/dist/usecases/tracking/recordPush.usecase.d.ts.map +0 -1
  2003. package/dist/usecases/tracking/recordPush.usecase.js.map +0 -1
  2004. package/dist/usecases/tracking/recordReviewCompletion.usecase.d.ts +0 -26
  2005. package/dist/usecases/tracking/recordReviewCompletion.usecase.d.ts.map +0 -1
  2006. package/dist/usecases/tracking/recordReviewCompletion.usecase.js.map +0 -1
  2007. package/dist/usecases/tracking/syncThreads.usecase.d.ts +0 -16
  2008. package/dist/usecases/tracking/syncThreads.usecase.d.ts.map +0 -1
  2009. package/dist/usecases/tracking/syncThreads.usecase.js.map +0 -1
  2010. package/dist/usecases/tracking/trackAssignment.usecase.d.ts +0 -28
  2011. package/dist/usecases/tracking/trackAssignment.usecase.d.ts.map +0 -1
  2012. package/dist/usecases/tracking/trackAssignment.usecase.js +0 -68
  2013. package/dist/usecases/tracking/trackAssignment.usecase.js.map +0 -1
  2014. package/dist/usecases/tracking/transitionState.usecase.d.ts +0 -14
  2015. package/dist/usecases/tracking/transitionState.usecase.d.ts.map +0 -1
  2016. package/dist/usecases/tracking/transitionState.usecase.js.map +0 -1
  2017. package/dist/usecases/triggerReview.usecase.d.ts +0 -43
  2018. package/dist/usecases/triggerReview.usecase.d.ts.map +0 -1
  2019. package/dist/usecases/triggerReview.usecase.js.map +0 -1
  2020. package/dist/usecases/version/checkVersion.usecase.d.ts +0 -13
  2021. package/dist/usecases/version/checkVersion.usecase.d.ts.map +0 -1
  2022. package/dist/usecases/version/checkVersion.usecase.js +0 -20
  2023. package/dist/usecases/version/checkVersion.usecase.js.map +0 -1
  2024. package/dist/usecases/version/triggerSelfUpdate.usecase.d.ts +0 -7
  2025. package/dist/usecases/version/triggerSelfUpdate.usecase.d.ts.map +0 -1
  2026. package/dist/usecases/version/triggerSelfUpdate.usecase.js +0 -12
  2027. package/dist/usecases/version/triggerSelfUpdate.usecase.js.map +0 -1
  2028. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/assignee.d.ts +0 -0
  2029. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/assignee.js +0 -0
  2030. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/cleanup.d.ts +0 -0
  2031. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/cleanup.js +0 -0
  2032. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/collapsibleList.d.ts +0 -0
  2033. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/collapsibleList.js +0 -0
  2034. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/constants.d.ts +0 -0
  2035. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/constants.js +0 -0
  2036. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/desktopNotifications.d.ts +0 -0
  2037. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/desktopNotifications.js +0 -0
  2038. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/developerSheet.d.ts +0 -0
  2039. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/developerSheet.js +0 -0
  2040. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/formatting.d.ts +0 -0
  2041. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/formatting.js +0 -0
  2042. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/html.d.ts +0 -0
  2043. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/html.js +0 -0
  2044. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/i18n.d.ts +0 -0
  2045. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/icons.d.ts +0 -0
  2046. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/icons.js +0 -0
  2047. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/insightsReport.d.ts +0 -0
  2048. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/insightsReport.js +0 -0
  2049. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/loading.d.ts +0 -0
  2050. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/loading.js +0 -0
  2051. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/mrSheet.d.ts +0 -0
  2052. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/mrSheet.js +0 -0
  2053. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/notifications.d.ts +0 -0
  2054. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/notifications.js +0 -0
  2055. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/priority.d.ts +0 -0
  2056. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/priority.js +0 -0
  2057. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/quality.d.ts +0 -0
  2058. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/quality.js +0 -0
  2059. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/queueLanes.d.ts +0 -0
  2060. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/queueLanes.js +0 -0
  2061. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/sessionMetrics.d.ts +0 -0
  2062. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/sessionMetrics.js +0 -0
  2063. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/sharedViewHelpers.d.ts +0 -0
  2064. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/sharedViewHelpers.js +0 -0
  2065. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/statsCharts.d.ts +0 -0
  2066. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/statsCharts.js +0 -0
  2067. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/teamTab.d.ts +0 -0
  2068. /package/dist/{interface-adapters/views/dashboard → dashboard}/modules/teamTab.js +0 -0
  2069. /package/dist/{entities → modules/cli-configuration/entities}/mcpSettings/mcpSettings.schema.d.ts +0 -0
  2070. /package/dist/{entities → modules/cli-configuration/entities}/mcpSettings/mcpSettings.schema.js +0 -0
  2071. /package/dist/{entities → modules/cli-configuration/entities}/packageVersion/packageVersion.gateway.d.ts +0 -0
  2072. /package/dist/{entities → modules/cli-configuration/entities}/packageVersion/packageVersion.gateway.js +0 -0
  2073. /package/dist/{entities → modules/cli-configuration/entities}/packageVersion/packageVersion.js +0 -0
  2074. /package/dist/{entities → modules/cli-configuration/entities}/packageVersion/selfUpdateCommand.gateway.d.ts +0 -0
  2075. /package/dist/{entities → modules/cli-configuration/entities}/packageVersion/selfUpdateCommand.gateway.js +0 -0
  2076. /package/dist/{entities → modules/cli-configuration/entities}/packageVersion/versionCache.gateway.js +0 -0
  2077. /package/dist/{interface-adapters → modules/cli-configuration/interface-adapters}/controllers/http/cliStatus.routes.d.ts +0 -0
  2078. /package/dist/{interface-adapters → modules/cli-configuration/interface-adapters}/controllers/http/logs.routes.d.ts +0 -0
  2079. /package/dist/{interface-adapters → modules/cli-configuration/interface-adapters}/controllers/http/projectConfig.routes.d.ts +0 -0
  2080. /package/dist/{interface-adapters → modules/cli-configuration/interface-adapters}/controllers/http/settings.routes.d.ts +0 -0
  2081. /package/dist/{interface-adapters → modules/cli-configuration/interface-adapters}/gateways/versionCache.memory.gateway.js +0 -0
  2082. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/addRepositoriesToConfig.usecase.js +0 -0
  2083. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/checkInitPrerequisites.d.ts +0 -0
  2084. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/checkInitPrerequisites.js +0 -0
  2085. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/configureMcp.usecase.d.ts +0 -0
  2086. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/discoverRepositories.usecase.js +0 -0
  2087. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/followupImportants.usecase.d.ts +0 -0
  2088. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/followupImportants.usecase.js +0 -0
  2089. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/queryStatus.usecase.js +0 -0
  2090. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/readLogs.usecase.js +0 -0
  2091. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/startDaemon.usecase.js +0 -0
  2092. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/stopDaemon.usecase.js +0 -0
  2093. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/validateConfig.usecase.d.ts +0 -0
  2094. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/validateConfig.usecase.js +0 -0
  2095. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/writeInitConfig.usecase.d.ts +0 -0
  2096. /package/dist/{usecases → modules/cli-configuration/usecases}/cli/writeInitConfig.usecase.js +0 -0
  2097. /package/dist/{entities → modules/data-lifecycle/entities}/cleanup/retentionPolicy.valueObject.d.ts +0 -0
  2098. /package/dist/{entities → modules/data-lifecycle/entities}/cleanup/retentionPolicy.valueObject.js +0 -0
  2099. /package/dist/{interface-adapters → modules/data-lifecycle/interface-adapters}/gateways/fileSystem/reviewLogFile.fileSystem.gateway.js +0 -0
  2100. /package/dist/{interface-adapters → modules/data-lifecycle/interface-adapters}/gateways/reviewLogFile.gateway.d.ts +0 -0
  2101. /package/dist/{interface-adapters → modules/data-lifecycle/interface-adapters}/gateways/reviewLogFile.gateway.js +0 -0
  2102. /package/dist/{entities → modules/platform-integration/entities}/diffMetadata/diffMetadata.gateway.js +0 -0
  2103. /package/dist/{entities → modules/platform-integration/entities}/threadFetch/threadFetch.gateway.js +0 -0
  2104. /package/dist/{interface-adapters → modules/platform-integration/interface-adapters}/adapters/githubPullRequest.adapter.js +0 -0
  2105. /package/dist/{interface-adapters → modules/platform-integration/interface-adapters}/adapters/gitlabMergeRequest.adapter.js +0 -0
  2106. /package/dist/{interface-adapters → modules/platform-integration/interface-adapters}/gateways/diffMetadataFetch.github.gateway.js +0 -0
  2107. /package/dist/{interface-adapters → modules/platform-integration/interface-adapters}/gateways/diffMetadataFetch.gitlab.gateway.js +0 -0
  2108. /package/dist/{interface-adapters → modules/platform-integration/interface-adapters}/gateways/threadFetch.github.gateway.js +0 -0
  2109. /package/dist/{interface-adapters → modules/platform-integration/interface-adapters}/gateways/threadFetch.gitlab.gateway.js +0 -0
  2110. /package/dist/{entities → modules/review-execution/entities}/job/jobContext.gateway.d.ts +0 -0
  2111. /package/dist/{entities → modules/review-execution/entities}/job/jobContext.gateway.js +0 -0
  2112. /package/dist/{entities → modules/review-execution/entities}/modelRouting/modelRouting.gateway.js +0 -0
  2113. /package/dist/{entities → modules/review-execution/entities}/modelRouting/modelRouting.schema.d.ts +0 -0
  2114. /package/dist/{entities → modules/review-execution/entities}/modelRouting/modelRouting.schema.js +0 -0
  2115. /package/dist/{entities → modules/review-execution/entities}/progress/agentDefinition.type.d.ts +0 -0
  2116. /package/dist/{entities → modules/review-execution/entities}/progress/agentDefinition.type.js +0 -0
  2117. /package/dist/{entities → modules/review-execution/entities}/progress/progress.calculator.d.ts +0 -0
  2118. /package/dist/{entities → modules/review-execution/entities}/progress/progress.calculator.js +0 -0
  2119. /package/dist/{entities → modules/review-execution/entities}/progress/progress.factory.d.ts +0 -0
  2120. /package/dist/{entities → modules/review-execution/entities}/progress/progress.factory.js +0 -0
  2121. /package/dist/{entities → modules/review-execution/entities}/progress/progress.gateway.d.ts +0 -0
  2122. /package/dist/{entities → modules/review-execution/entities}/progress/progress.gateway.js +0 -0
  2123. /package/dist/{entities → modules/review-execution/entities}/progress/progress.type.d.ts +0 -0
  2124. /package/dist/{entities → modules/review-execution/entities}/progress/progress.type.js +0 -0
  2125. /package/dist/{entities → modules/review-execution/entities}/review/reviewFile.gateway.d.ts +0 -0
  2126. /package/dist/{entities → modules/review-execution/entities}/review/reviewFile.gateway.js +0 -0
  2127. /package/dist/{entities → modules/review-execution/entities}/review/reviewScore.valueObject.d.ts +0 -0
  2128. /package/dist/{entities → modules/review-execution/entities}/review/reviewScore.valueObject.js +0 -0
  2129. /package/dist/{entities → modules/review-execution/entities}/reviewAction/reviewAction.d.ts +0 -0
  2130. /package/dist/{entities → modules/review-execution/entities}/reviewAction/reviewAction.gateway.d.ts +0 -0
  2131. /package/dist/{entities → modules/review-execution/entities}/reviewAction/reviewAction.gateway.js +0 -0
  2132. /package/dist/{entities → modules/review-execution/entities}/reviewAction/reviewAction.js +0 -0
  2133. /package/dist/{entities → modules/review-execution/entities}/reviewAction/reviewAction.schema.d.ts +0 -0
  2134. /package/dist/{entities → modules/review-execution/entities}/reviewAction/reviewAction.schema.js +0 -0
  2135. /package/dist/{entities → modules/review-execution/entities}/reviewContext/reviewContext.gateway.js +0 -0
  2136. /package/dist/{entities → modules/review-execution/entities}/reviewContext/reviewContext.js +0 -0
  2137. /package/dist/{entities → modules/review-execution/entities}/reviewContext/reviewContext.schema.d.ts +0 -0
  2138. /package/dist/{entities → modules/review-execution/entities}/reviewRequest/reviewRequest.entity.d.ts +0 -0
  2139. /package/dist/{entities → modules/review-execution/entities}/reviewRequest/reviewRequest.entity.js +0 -0
  2140. /package/dist/{entities → modules/review-execution/entities}/reviewRequest/reviewRequest.guard.d.ts +0 -0
  2141. /package/dist/{entities → modules/review-execution/entities}/reviewRequest/reviewRequest.guard.js +0 -0
  2142. /package/dist/{entities → modules/review-execution/entities}/reviewRequest/reviewRequestState.valueObject.d.ts +0 -0
  2143. /package/dist/{entities → modules/review-execution/entities}/reviewRequest/reviewRequestState.valueObject.js +0 -0
  2144. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/controllers/mcp/addAction.handler.js +0 -0
  2145. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/controllers/mcp/completeAgent.handler.js +0 -0
  2146. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/controllers/mcp/getThreads.handler.js +0 -0
  2147. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/controllers/mcp/getWorkflow.handler.js +0 -0
  2148. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/controllers/mcp/setPhase.handler.js +0 -0
  2149. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/controllers/mcp/startAgent.handler.js +0 -0
  2150. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/gateways/fileSystem/reviewFile.fileSystem.d.ts +0 -0
  2151. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/gateways/fileSystem/reviewFile.fileSystem.js +0 -0
  2152. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/gateways/jobContext.memory.gateway.d.ts +0 -0
  2153. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/gateways/jobContext.memory.gateway.js +0 -0
  2154. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/gateways/reviewFile.gateway.js +0 -0
  2155. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/gateways/reviewProgress.memory.gateway.d.ts +0 -0
  2156. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/gateways/reviewProgress.memory.gateway.js +0 -0
  2157. /package/dist/{interface-adapters → modules/review-execution/interface-adapters}/presenters/reviewList.presenter.js +0 -0
  2158. /package/dist/{services → modules/review-execution/services}/agentInstructionsBuilder.js +0 -0
  2159. /package/dist/{services → modules/review-execution/services}/commentLinkEnricher.d.ts +0 -0
  2160. /package/dist/{services → modules/review-execution/services}/commentLinkEnricher.js +0 -0
  2161. /package/dist/{services → modules/review-execution/services}/reviewContextWatcher.service.js +0 -0
  2162. /package/dist/{services → modules/review-execution/services}/threadActionsParser.js +0 -0
  2163. /package/dist/{usecases → modules/review-execution/usecases}/cancelReview.usecase.d.ts +0 -0
  2164. /package/dist/{usecases → modules/review-execution/usecases}/cancelReview.usecase.js +0 -0
  2165. /package/dist/{usecases → modules/review-execution/usecases}/handleReviewRequestPush.usecase.js +0 -0
  2166. /package/dist/{usecases → modules/review-execution/usecases}/mcp/addAction.usecase.d.ts +0 -0
  2167. /package/dist/{usecases → modules/review-execution/usecases}/mcp/addAction.usecase.js +0 -0
  2168. /package/dist/{usecases → modules/review-execution/usecases}/mcp/completeAgent.usecase.d.ts +0 -0
  2169. /package/dist/{usecases → modules/review-execution/usecases}/mcp/completeAgent.usecase.js +0 -0
  2170. /package/dist/{usecases → modules/review-execution/usecases}/mcp/getThreads.usecase.d.ts +0 -0
  2171. /package/dist/{usecases → modules/review-execution/usecases}/mcp/getThreads.usecase.js +0 -0
  2172. /package/dist/{usecases → modules/review-execution/usecases}/mcp/getWorkflow.usecase.d.ts +0 -0
  2173. /package/dist/{usecases → modules/review-execution/usecases}/mcp/getWorkflow.usecase.js +0 -0
  2174. /package/dist/{usecases → modules/review-execution/usecases}/mcp/startAgent.usecase.d.ts +0 -0
  2175. /package/dist/{usecases → modules/review-execution/usecases}/mcp/startAgent.usecase.js +0 -0
  2176. /package/dist/{usecases → modules/review-execution/usecases}/selectModelForReview/selectModelForReview.usecase.js +0 -0
  2177. /package/dist/{usecases → modules/review-execution/usecases}/triggerReview.usecase.js +0 -0
  2178. /package/dist/{entities → modules/shared-kernel/entities}/diffStats/diffStats.d.ts +0 -0
  2179. /package/dist/{entities → modules/shared-kernel/entities}/diffStats/diffStats.js +0 -0
  2180. /package/dist/{entities → modules/shared-kernel/entities}/diffStats/diffStatsFetch.gateway.js +0 -0
  2181. /package/dist/{entities → modules/shared-kernel/entities}/language/language.schema.d.ts +0 -0
  2182. /package/dist/{entities → modules/shared-kernel/entities}/language/language.schema.js +0 -0
  2183. /package/dist/{entities → modules/shared-kernel/entities}/shared/duration.valueObject.d.ts +0 -0
  2184. /package/dist/{entities → modules/shared-kernel/entities}/shared/duration.valueObject.js +0 -0
  2185. /package/dist/{entities → modules/statistics-insights/entities}/backfill/backfillProgress.d.ts +0 -0
  2186. /package/dist/{entities → modules/statistics-insights/entities}/backfill/backfillProgress.js +0 -0
  2187. /package/dist/{entities → modules/statistics-insights/entities}/insight/aiInsight.js +0 -0
  2188. /package/dist/{entities → modules/statistics-insights/entities}/insight/aiInsight.schema.d.ts +0 -0
  2189. /package/dist/{entities → modules/statistics-insights/entities}/insight/aiInsight.schema.js +0 -0
  2190. /package/dist/{entities → modules/statistics-insights/entities}/insight/developerInsight.js +0 -0
  2191. /package/dist/{entities → modules/statistics-insights/entities}/insight/developerInsight.schema.d.ts +0 -0
  2192. /package/dist/{entities → modules/statistics-insights/entities}/insight/developerTitle.d.ts +0 -0
  2193. /package/dist/{entities → modules/statistics-insights/entities}/insight/developerTitle.js +0 -0
  2194. /package/dist/{entities → modules/statistics-insights/entities}/insight/insightCategory.d.ts +0 -0
  2195. /package/dist/{entities → modules/statistics-insights/entities}/insight/insightCategory.js +0 -0
  2196. /package/dist/{entities → modules/statistics-insights/entities}/insight/insightTrend.d.ts +0 -0
  2197. /package/dist/{entities → modules/statistics-insights/entities}/insight/insightTrend.js +0 -0
  2198. /package/dist/{entities → modules/statistics-insights/entities}/insight/insights.gateway.js +0 -0
  2199. /package/dist/{entities → modules/statistics-insights/entities}/insight/persistedInsightsData.js +0 -0
  2200. /package/dist/{entities → modules/statistics-insights/entities}/insight/persistedInsightsData.schema.d.ts +0 -0
  2201. /package/dist/{entities → modules/statistics-insights/entities}/insight/teamInsight.js +0 -0
  2202. /package/dist/{entities → modules/statistics-insights/entities}/insight/teamInsight.schema.d.ts +0 -0
  2203. /package/dist/{entities → modules/statistics-insights/entities}/stats/projectStats.js +0 -0
  2204. /package/dist/{entities → modules/statistics-insights/entities}/stats/stats.gateway.js +0 -0
  2205. /package/dist/{interface-adapters → modules/statistics-insights/interface-adapters}/gateways/diffStatsFetch.github.gateway.js +0 -0
  2206. /package/dist/{interface-adapters → modules/statistics-insights/interface-adapters}/gateways/diffStatsFetch.gitlab.gateway.js +0 -0
  2207. /package/dist/{interface-adapters → modules/statistics-insights/interface-adapters}/gateways/fileSystem/stats.fileSystem.js +0 -0
  2208. /package/dist/{interface-adapters → modules/statistics-insights/interface-adapters}/gateways/stats.gateway.js +0 -0
  2209. /package/dist/{interface-adapters → modules/statistics-insights/interface-adapters}/presenters/insights.presenter.js +0 -0
  2210. /package/dist/{interface-adapters → modules/statistics-insights/interface-adapters}/presenters/projectStats.calculator.js +0 -0
  2211. /package/dist/{services → modules/statistics-insights/services}/statsService.js +0 -0
  2212. /package/dist/{usecases → modules/statistics-insights/usecases}/insights/buildAiInsightsPrompt.js +0 -0
  2213. /package/dist/{usecases → modules/statistics-insights/usecases}/stats/backfillDiffStats.usecase.js +0 -0
  2214. /package/dist/{usecases → modules/statistics-insights/usecases}/stats/recalculateProjectStats.usecase.js +0 -0
  2215. /package/dist/{entities → modules/token-accounting/entities}/tokenUsage/tokenUsage.gateway.js +0 -0
  2216. /package/dist/{entities → modules/token-accounting/entities}/tokenUsage/tokenUsage.schema.d.ts +0 -0
  2217. /package/dist/{entities → modules/token-accounting/entities}/tokenUsage/tokenUsage.schema.js +0 -0
  2218. /package/dist/{usecases → modules/token-accounting/usecases}/summarizeTokenUsage/summarizeTokenUsage.usecase.js +0 -0
  2219. /package/dist/{usecases → modules/token-accounting/usecases}/trackTokenUsage/trackTokenUsage.usecase.js +0 -0
  2220. /package/dist/{entities → modules/tracking/entities}/tracking/assignmentInfo.d.ts +0 -0
  2221. /package/dist/{entities → modules/tracking/entities}/tracking/assignmentInfo.js +0 -0
  2222. /package/dist/{entities → modules/tracking/entities}/tracking/mrTrackingData.d.ts +0 -0
  2223. /package/dist/{entities → modules/tracking/entities}/tracking/mrTrackingData.js +0 -0
  2224. /package/dist/{entities → modules/tracking/entities}/tracking/reviewEvent.js +0 -0
  2225. /package/dist/{entities → modules/tracking/entities}/tracking/reviewRequestTracking.gateway.js +0 -0
  2226. /package/dist/{entities → modules/tracking/entities}/tracking/trackedMr.d.ts +0 -0
  2227. /package/dist/{entities → modules/tracking/entities}/tracking/trackedMr.js +0 -0
  2228. /package/dist/{interface-adapters → modules/tracking/interface-adapters}/controllers/http/mrTracking.routes.d.ts +0 -0
  2229. /package/dist/{interface-adapters → modules/tracking/interface-adapters}/gateways/reviewRequestTracking.gateway.js +0 -0
  2230. /package/dist/{usecases → modules/tracking/usecases}/tracking/checkFollowupNeeded.usecase.js +0 -0
  2231. /package/dist/{usecases → modules/tracking/usecases}/tracking/recordPush.usecase.js +0 -0
  2232. /package/dist/{usecases → modules/tracking/usecases}/tracking/recordReviewCompletion.usecase.js +0 -0
  2233. /package/dist/{usecases → modules/tracking/usecases}/tracking/syncThreads.usecase.js +0 -0
  2234. /package/dist/{usecases → modules/tracking/usecases}/tracking/transitionState.usecase.js +0 -0
  2235. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/assignee.test.d.ts +0 -0
  2236. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/constants.test.d.ts +0 -0
  2237. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/desktopNotifications.test.d.ts +0 -0
  2238. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/developerSheet.test.d.ts +0 -0
  2239. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/formatting.test.d.ts +0 -0
  2240. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/html.test.d.ts +0 -0
  2241. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/i18n.test.d.ts +0 -0
  2242. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/icons.test.d.ts +0 -0
  2243. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/insightsReport.test.d.ts +0 -0
  2244. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/loading.test.d.ts +0 -0
  2245. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/notifications.test.d.ts +0 -0
  2246. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/priority.test.d.ts +0 -0
  2247. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/quality.test.d.ts +0 -0
  2248. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/queueLanes.test.d.ts +0 -0
  2249. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/sessionMetrics.test.d.ts +0 -0
  2250. /package/dist/tests/units/{interface-adapters/views/dashboard → dashboard}/modules/teamTab.test.d.ts +0 -0
@@ -0,0 +1,2826 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Reviewflow Dashboard</title>
7
+ <link rel="stylesheet" href="styles.css">
8
+ <script src="https://unpkg.com/lucide@latest"></script>
9
+ </head>
10
+ <body>
11
+ <div class="container">
12
+ <header>
13
+ <div class="logo"><i data-lucide="bot"></i></div>
14
+ <h1>Reviewflow</h1>
15
+ <div class="header-actions">
16
+ <div class="version-update-wrapper">
17
+ <div id="version-update-area" class="version-update-area"></div>
18
+ <div id="version-manual-update-container"></div>
19
+ </div>
20
+ <button id="check-claude-btn" class="btn btn-primary" onclick="checkClaudeStatus()">
21
+ <i data-lucide="search"></i> <span id="i18n-check-claude"></span>
22
+ </button>
23
+ <button id="toggle-logs-btn" class="btn btn-secondary" onclick="toggleLogs()">
24
+ <i data-lucide="scroll-text"></i> <span id="i18n-logs-btn"></span>
25
+ </button>
26
+ <div id="server-status" class="status-indicator connecting">
27
+ <span class="status-dot"></span>
28
+ <span id="i18n-server-status"></span>
29
+ </div>
30
+ </div>
31
+ </header>
32
+
33
+ <div class="cards">
34
+ <div class="card card-priority">
35
+ <div class="card-label" id="i18n-card-running"></div>
36
+ <div id="running-count" class="card-value running">-</div>
37
+ </div>
38
+ <div class="card card-priority">
39
+ <div class="card-label" id="i18n-card-queued"></div>
40
+ <div id="queued-count" class="card-value queued">-</div>
41
+ </div>
42
+ <div class="card">
43
+ <div class="card-label" id="i18n-card-completed"></div>
44
+ <div id="completed-count" class="card-value">-</div>
45
+ </div>
46
+ <div class="card">
47
+ <div class="card-label" id="i18n-card-claude-cli"></div>
48
+ <div id="claude-status" class="card-claude checking">
49
+ <span class="status" id="i18n-claude-checking"></span>
50
+ <span class="version"></span>
51
+ </div>
52
+ </div>
53
+ <div class="card" id="git-cli-card">
54
+ <div class="card-label" id="git-cli-label"></div>
55
+ <div id="git-cli-status" class="card-claude checking">
56
+ <span class="status" id="i18n-git-load-project"></span>
57
+ <span class="version"></span>
58
+ </div>
59
+ </div>
60
+ <div class="card">
61
+ <div class="card-label" id="i18n-card-model"></div>
62
+ <div class="card-model">
63
+ <select id="model-select" class="model-select" onchange="changeModel(this.value)">
64
+ <option value="opus" id="i18n-model-opus"></option>
65
+ <option value="sonnet" id="i18n-model-sonnet"></option>
66
+ </select>
67
+ </div>
68
+ </div>
69
+ <div class="card">
70
+ <div class="card-label" id="i18n-card-language"></div>
71
+ <div class="card-model">
72
+ <select id="language-select" class="model-select" onchange="changeLanguage(this.value)">
73
+ <option value="en">English</option>
74
+ <option value="fr">Français</option>
75
+ </select>
76
+ </div>
77
+ </div>
78
+ </div>
79
+
80
+ <div class="focus-strip">
81
+ <div class="focus-chip focus-now">
82
+ <div class="focus-copy">
83
+ <span class="focus-label" id="i18n-strip-now"></span>
84
+ <span class="focus-meta" id="i18n-strip-now-meta"></span>
85
+ </div>
86
+ <span class="focus-value" id="focus-now-count">-</span>
87
+ </div>
88
+ <div class="focus-chip focus-next">
89
+ <div class="focus-copy">
90
+ <span class="focus-label" id="i18n-strip-next"></span>
91
+ <span class="focus-meta" id="i18n-strip-next-meta"></span>
92
+ </div>
93
+ <span class="focus-value" id="focus-next-count">-</span>
94
+ </div>
95
+ <div class="focus-chip focus-blocked">
96
+ <div class="focus-copy">
97
+ <span class="focus-label" id="i18n-strip-blocked"></span>
98
+ <span class="focus-meta" id="i18n-strip-blocked-meta"></span>
99
+ </div>
100
+ <span class="focus-value" id="focus-blocked-count">-</span>
101
+ </div>
102
+ <button id="focus-strip-toggle" class="focus-toggle-btn" onclick="toggleFocusStripMode()"></button>
103
+ </div>
104
+
105
+ <div id="data-loading-state" class="data-loading hidden" role="status" aria-live="polite">
106
+ <i data-lucide="loader-circle"></i>
107
+ <span id="i18n-loading-data"></span>
108
+ </div>
109
+
110
+ <div class="project-loader">
111
+ <select id="project-select" class="project-input" style="min-width: 350px;" onchange="onProjectSelect(this.value)">
112
+ <option value="" id="i18n-project-placeholder"></option>
113
+ </select>
114
+ <input type="text" id="project-path-input" class="project-input" style="min-width: 250px;"
115
+ value="">
116
+ <button class="btn btn-primary" onclick="loadProjectConfig()">
117
+ <i data-lucide="folder-open"></i> <span id="i18n-project-load"></span>
118
+ </button>
119
+ <button id="remove-project-btn" class="btn btn-secondary" onclick="removeCurrentProject()">
120
+ <i data-lucide="trash-2"></i>
121
+ </button>
122
+ <span id="config-status" class="config-status hidden"></span>
123
+ </div>
124
+ <div id="config-info" class="config-info hidden"></div>
125
+
126
+ <div id="claude-login-section" class="login-instructions hidden">
127
+ <strong><i data-lucide="alert-triangle"></i> <span id="i18n-claude-login-title"></span></strong>
128
+ <p style="margin-top: 0.5rem;" id="i18n-claude-login-instruction"></p>
129
+ <p style="margin-top: 0.5rem;"><code>claude login</code></p>
130
+ <p style="margin-top: 0.5rem; font-size: 0.875rem; color: #a1a1aa;" id="i18n-claude-login-reload"></p>
131
+ </div>
132
+
133
+ <div id="git-login-section" class="login-instructions hidden">
134
+ <strong id="git-login-title"><i data-lucide="alert-triangle"></i> <span id="i18n-git-login-title"></span></strong>
135
+ <div style="margin-top: 0.75rem;" id="git-login-instructions"></div>
136
+ </div>
137
+
138
+ <div id="logs-section" class="section hidden">
139
+ <div class="section-header">
140
+ <i data-lucide="scroll-text"></i> <span id="i18n-section-logs"></span>
141
+ <span id="error-count" class="badge-count hidden"></span>
142
+ </div>
143
+ <div id="logs-content" class="section-content logs">
144
+ <div class="empty-state" id="i18n-empty-logs"></div>
145
+ </div>
146
+ </div>
147
+
148
+ <div id="stats-section" class="section hidden">
149
+ <div class="section-header clickable" onclick="toggleStats()" role="button" tabindex="0" onkeydown="activateOnKeydown(event)">
150
+ <i data-lucide="bar-chart-3"></i> <span id="i18n-section-stats"></span>
151
+ <span id="stats-toggle" class="toggle-icon collapsed"><i data-lucide="chevron-down"></i></span>
152
+ <button id="recalculate-btn" class="btn btn-sm btn-secondary" onclick="event.stopPropagation(); recalculateStats()" style="margin-left: auto; font-size: 0.75rem; padding: 2px 8px;">
153
+ <i data-lucide="refresh-cw" style="width: 12px; height: 12px;"></i>
154
+ <span id="recalculate-label"></span>
155
+ </button>
156
+ <span id="backfill-progress" class="badge-count hidden" style="margin-left: 4px;"></span>
157
+ </div>
158
+ <div id="project-stats" class="section-content stats-grid hidden">
159
+ <div class="empty-state" id="i18n-empty-stats"></div>
160
+ </div>
161
+ </div>
162
+
163
+ <div id="team-section" class="section hidden">
164
+ <div class="section-header clickable" onclick="toggleTeamSection()" role="button" tabindex="0" onkeydown="activateOnKeydown(event)">
165
+ <i data-lucide="users"></i> <span id="i18n-section-team"></span>
166
+ <span id="team-toggle" class="toggle-icon collapsed"><i data-lucide="chevron-down"></i></span>
167
+ </div>
168
+ <div id="team-tab-content" class="section-content hidden">
169
+ <div class="empty-state" id="i18n-empty-team"></div>
170
+ </div>
171
+ </div>
172
+
173
+ <div id="token-usage-section" class="section hidden">
174
+ <div class="section-header">
175
+ <i data-lucide="coins"></i> <span>Claude token usage</span>
176
+ </div>
177
+ <div id="token-usage-content" class="section-content">
178
+ <div class="empty-state">Loading…</div>
179
+ </div>
180
+ </div>
181
+
182
+ <div id="budget-section" class="section">
183
+ <div class="section-header">
184
+ <i data-lucide="wallet"></i> <span>Monthly Claude budget</span>
185
+ </div>
186
+ <div class="section-content">
187
+ <div id="budget-tile">
188
+ <div class="empty-state">Loading…</div>
189
+ </div>
190
+ <div class="budget-slider-row">
191
+ <label for="budget-slider" id="budget-slider-label">Cap: <span id="budget-slider-value">$200</span></label>
192
+ <input type="range" id="budget-slider" min="0" max="600" step="10" value="200" />
193
+ <button id="budget-slider-submit" type="button">Apply</button>
194
+ <span id="budget-slider-status" class="budget-slider-status"></span>
195
+ </div>
196
+ </div>
197
+ </div>
198
+
199
+ <div class="section" id="active-reviews-section">
200
+ <div class="section-header">
201
+ <i data-lucide="file-search"></i> <span id="i18n-section-active-reviews"></span>
202
+ <span id="active-reviews-count" class="badge-count hidden">0</span>
203
+ </div>
204
+ <div id="active-reviews" class="section-content">
205
+ <div class="empty-state" id="i18n-empty-active-reviews"></div>
206
+ </div>
207
+ </div>
208
+
209
+ <div class="section hidden" id="active-followups-section">
210
+ <div class="section-header clickable" onclick="toggleSection('active-followups-section')" role="button" tabindex="0" onkeydown="activateOnKeydown(event)">
211
+ <i data-lucide="refresh-cw"></i> <span id="i18n-section-active-followups"></span>
212
+ <span id="active-followups-count" class="badge-count hidden">0</span>
213
+ <span class="section-toggle collapsed"><i data-lucide="chevron-down"></i></span>
214
+ </div>
215
+ <div id="active-followups" class="section-content">
216
+ <div class="empty-state" id="i18n-empty-active-followups"></div>
217
+ </div>
218
+ </div>
219
+
220
+ <div class="section hidden" id="pending-fix-section">
221
+ <div class="section-header">
222
+ <i data-lucide="wrench"></i> <span id="i18n-section-pending-fix"></span>
223
+ <span id="pending-fix-count" class="badge-count hidden">0</span>
224
+ <button id="sync-threads-btn" class="btn-icon btn-sync" onclick="syncGitLabThreads()">
225
+ <i data-lucide="refresh-cw"></i>
226
+ </button>
227
+ </div>
228
+ <div id="pending-fix-reviews" class="section-content">
229
+ <div class="empty-state" id="i18n-empty-pending-fix"></div>
230
+ </div>
231
+ </div>
232
+
233
+ <div class="section hidden" id="pending-approval-section">
234
+ <div class="section-header clickable" onclick="toggleSection('pending-approval-section')" role="button" tabindex="0" onkeydown="activateOnKeydown(event)">
235
+ <i data-lucide="circle-check"></i> <span id="i18n-section-pending-approval"></span>
236
+ <span id="pending-approval-count" class="badge-count hidden">0</span>
237
+ <span class="section-toggle collapsed"><i data-lucide="chevron-down"></i></span>
238
+ </div>
239
+ <div id="pending-approval-reviews" class="section-content">
240
+ <div class="empty-state" id="i18n-empty-pending-approval"></div>
241
+ </div>
242
+ </div>
243
+
244
+ <div class="section" id="completed-reviews-section">
245
+ <div class="section-header clickable" onclick="toggleSection('completed-reviews-section')" role="button" tabindex="0" onkeydown="activateOnKeydown(event)">
246
+ <i data-lucide="file-check"></i> <span id="i18n-section-completed-reviews"></span>
247
+ <span class="section-toggle collapsed"><i data-lucide="chevron-down"></i></span>
248
+ </div>
249
+ <div id="recent-reviews" class="section-content">
250
+ <div class="empty-state" id="i18n-empty-loading"></div>
251
+ </div>
252
+ </div>
253
+
254
+ <div class="section" id="cleanup-section">
255
+ <div class="section-header">
256
+ <i data-lucide="trash-2"></i> <span>Nettoyage</span>
257
+ </div>
258
+ <div class="section-content" id="cleanup-content"></div>
259
+ </div>
260
+
261
+ <div class="refresh-info">
262
+ <span id="connection-mode"></span> • <span id="i18n-connection-fallback"></span>
263
+ <span class="refresh-separator"> • </span>
264
+ <span id="session-metrics"></span>
265
+ </div>
266
+ </div>
267
+
268
+ <div id="cancel-modal" class="modal-overlay hidden" onclick="closeCancelModal(event)">
269
+ <div class="modal-content" onclick="event.stopPropagation()">
270
+ <div class="modal-title" id="cancel-modal-title"></div>
271
+ <div class="modal-message" id="i18n-modal-message"></div>
272
+ <div class="modal-actions">
273
+ <button class="btn-modal-back" onclick="closeCancelModal()" id="i18n-modal-back"></button>
274
+ <button class="btn-modal-confirm" id="cancel-modal-confirm" onclick="confirmCancelReview()"></button>
275
+ </div>
276
+ </div>
277
+ </div>
278
+
279
+ <div id="toast-container" class="toast-container"></div>
280
+
281
+ <div id="mr-sheet-overlay" class="sheet-overlay" onclick="closeMrSheet()"></div>
282
+ <div id="mr-sheet" class="sheet-panel">
283
+ <div id="mr-sheet-content" class="sheet-content"></div>
284
+ </div>
285
+
286
+ <div id="dev-sheet-overlay" class="sheet-overlay" onclick="closeDevSheet()"></div>
287
+ <div id="dev-sheet" class="sheet-panel">
288
+ <div id="dev-sheet-content" class="sheet-content"></div>
289
+ </div>
290
+
291
+ <script type="module">
292
+ import { t, setLanguage, getLanguage } from './modules/i18n.js';
293
+ import { formatTime, formatDuration, formatPhase, formatLogTime } from './modules/formatting.js';
294
+ import { escapeHtml, markdownToHtml, sanitizeHttpUrl } from './modules/html.js';
295
+ import { getAgentIcon, icon, refreshIcons } from './modules/icons.js';
296
+ import { MAX_RECONNECT_ATTEMPTS, RECONNECT_DELAY, STORAGE_KEY_PROJECTS, STORAGE_KEY_CURRENT, STORAGE_KEY_FOCUS_STRIP_MODE, QUALITY_TARGET_SCORE } from './modules/constants.js';
297
+ import { getDesktopNotificationPayload, shouldNotifyDesktop } from './modules/desktopNotifications.js';
298
+ import { getLoadingPresentation, getQuietRefreshSectionIdentifiers } from './modules/loading.js';
299
+ import { collectReviewNotifications, createReviewNotificationState } from './modules/notifications.js';
300
+ import { resolveReviewAssigneeDisplay } from './modules/assignee.js';
301
+ import { buildQueueLanesModel } from './modules/queueLanes.js';
302
+ import { rankPendingFixForNowLane } from './modules/priority.js';
303
+ import { getQualityProgress, getQualityTrend } from './modules/quality.js';
304
+ import { createSessionMetricsState, trackSessionAction, updatePriorityItemTracking, getSessionMetricsSnapshot } from './modules/sessionMetrics.js';
305
+ import { renderCleanupSection, handleCleanupClick } from './modules/cleanup.js';
306
+ import { renderVersionUpdateArea, setVersionCheckState } from './modules/versionUpdate.js';
307
+ import { renderCollapsibleList, toggleCollapsibleList } from './modules/collapsibleList.js';
308
+ import { renderMrSheetContent, drawScoreTimeline, drawIssuesBreakdown } from './modules/mrSheet.js';
309
+ import { drawScoreTrendChart, drawReviewActivityChart, drawScoreDistributionChart, animateCounter } from './modules/statsCharts.js';
310
+ import { renderTeamTab, fetchAndRenderTeamTab } from './modules/teamTab.js';
311
+ import { renderDeveloperSheetContent, drawRadarChart } from './modules/developerSheet.js';
312
+ import { buildInsightsReport } from './modules/insightsReport.js';
313
+ import { fetchTokenUsageSummary, renderTokenUsageTile } from './modules/tokenUsage.js';
314
+ import {
315
+ parseBudgetStatusMessage,
316
+ parseBudgetExceededMessage,
317
+ renderBudgetTile,
318
+ fetchBudget,
319
+ fetchBudgetStatus,
320
+ submitBudget,
321
+ } from './modules/budgetSettings.js';
322
+
323
+ const API_URL = window.location.origin;
324
+ const WS_URL = `ws://${window.location.host}/ws`;
325
+
326
+ let ws = null;
327
+ let wsConnected = false;
328
+ let reconnectAttempts = 0;
329
+ let logsVisible = false;
330
+
331
+ let currentData = { activeReviews: [], recentReviews: [], logs: [], reviewFiles: [], pendingFix: [], pendingApproval: [] };
332
+ const mrDataStore = new Map();
333
+ let loadedReviews = {};
334
+ let statsCollapsed = true;
335
+ let currentStatsReviews = [];
336
+ let currentDevFilter = 'all';
337
+ let focusStripCompact = false;
338
+ let teamCollapsed = true;
339
+ let currentInsightsData = null;
340
+ const loadingState = { status: 0, reviewFiles: 0, stats: 0, mrTracking: 0 };
341
+ let hasLoadedStatusOnce = false;
342
+ const secondarySections = ['active-followups-section', 'pending-approval-section', 'completed-reviews-section'];
343
+ const sectionExpandedState = Object.fromEntries(secondarySections.map((sectionIdentifier) => [sectionIdentifier, false]));
344
+ const quietRefreshSections = [
345
+ 'active-reviews-section',
346
+ 'active-followups-section',
347
+ 'completed-reviews-section',
348
+ 'pending-fix-section',
349
+ ];
350
+ const loadingLabelBySource = {
351
+ status: 'loading.status',
352
+ reviewFiles: 'loading.reviewFiles',
353
+ stats: 'loading.stats',
354
+ mrTracking: 'loading.mrTracking',
355
+ };
356
+ let loadingShowTimeout = null;
357
+ let loadingHideTimeout = null;
358
+ let loadingVisibleSince = null;
359
+ const loadingDelayMs = 260;
360
+ const loadingMinimumVisibleMs = 420;
361
+
362
+ let sessionMetrics = createSessionMetricsState(Date.now());
363
+ let reviewNotificationState = createReviewNotificationState();
364
+
365
+ function applyFocusStripMode() {
366
+ const strip = document.querySelector('.focus-strip');
367
+ if (strip) {
368
+ strip.classList.toggle('compact', focusStripCompact);
369
+ }
370
+ document.body.classList.toggle('compact-density', focusStripCompact);
371
+ const toggleBtn = document.getElementById('focus-strip-toggle');
372
+ if (toggleBtn) {
373
+ toggleBtn.textContent = focusStripCompact ? t('strip.modeDetailed') : t('strip.modeCompact');
374
+ toggleBtn.setAttribute('aria-pressed', focusStripCompact ? 'true' : 'false');
375
+ }
376
+ }
377
+
378
+ function loadFocusStripMode() {
379
+ const mode = localStorage.getItem(STORAGE_KEY_FOCUS_STRIP_MODE);
380
+ focusStripCompact = mode === 'compact';
381
+ applyFocusStripMode();
382
+ }
383
+
384
+ function toggleFocusStripMode() {
385
+ focusStripCompact = !focusStripCompact;
386
+ localStorage.setItem(STORAGE_KEY_FOCUS_STRIP_MODE, focusStripCompact ? 'compact' : 'detailed');
387
+ applyFocusStripMode();
388
+ }
389
+
390
+ function applySectionExpansion(sectionIdentifier) {
391
+ const section = document.getElementById(sectionIdentifier);
392
+ if (!section) return;
393
+ const content = section.querySelector('.section-content');
394
+ const toggle = section.querySelector('.section-toggle');
395
+ if (!content) return;
396
+
397
+ const expanded = sectionExpandedState[sectionIdentifier] === true;
398
+ content.classList.toggle('hidden', !expanded);
399
+ section.classList.toggle('section-collapsed', !expanded);
400
+ if (toggle) {
401
+ toggle.classList.toggle('collapsed', !expanded);
402
+ }
403
+ }
404
+
405
+ function toggleSection(sectionIdentifier) {
406
+ if (!(sectionIdentifier in sectionExpandedState)) return;
407
+ sectionExpandedState[sectionIdentifier] = !sectionExpandedState[sectionIdentifier];
408
+ applySectionExpansion(sectionIdentifier);
409
+ refreshIcons();
410
+ }
411
+
412
+ function setLoadingFlag(source, isLoading) {
413
+ if (!(source in loadingState)) return;
414
+ const nextValue = isLoading
415
+ ? loadingState[source] + 1
416
+ : Math.max(0, loadingState[source] - 1);
417
+ loadingState[source] = nextValue;
418
+ updateLoadingStateUI();
419
+ }
420
+
421
+ function applyQuietRefreshSectionIndicators(sectionIdentifiers) {
422
+ quietRefreshSections.forEach((sectionIdentifier) => {
423
+ const section = document.getElementById(sectionIdentifier);
424
+ if (!section) return;
425
+ section.classList.toggle('is-refreshing', sectionIdentifiers.includes(sectionIdentifier));
426
+ });
427
+ }
428
+
429
+ function getLoadingMessageKey() {
430
+ const activeSource = Object.entries(loadingState).find(([, value]) => value > 0)?.[0];
431
+ return activeSource ? loadingLabelBySource[activeSource] : 'loading.data';
432
+ }
433
+
434
+ function updateLoadingStateUI() {
435
+ const isLoading = Object.values(loadingState).some((value) => value > 0);
436
+ const loadingPresentation = getLoadingPresentation(loadingState, { hasLoadedStatusOnce });
437
+ const loadingElement = document.getElementById('data-loading-state');
438
+ if (!loadingElement) return;
439
+
440
+ const loadingLabel = document.getElementById('i18n-loading-data');
441
+ if (loadingLabel) {
442
+ loadingLabel.textContent = t(getLoadingMessageKey());
443
+ }
444
+
445
+ if (isLoading) {
446
+ document.body.classList.toggle('is-quiet-refresh', loadingPresentation.isQuietRefresh);
447
+ const quietSectionIdentifiers = getQuietRefreshSectionIdentifiers(loadingState, { hasLoadedStatusOnce });
448
+ applyQuietRefreshSectionIndicators(quietSectionIdentifiers);
449
+ if (!loadingPresentation.showGlobalLoading) {
450
+ if (loadingShowTimeout) {
451
+ clearTimeout(loadingShowTimeout);
452
+ loadingShowTimeout = null;
453
+ }
454
+ if (loadingHideTimeout) {
455
+ clearTimeout(loadingHideTimeout);
456
+ loadingHideTimeout = null;
457
+ }
458
+ loadingVisibleSince = null;
459
+ loadingElement.classList.add('hidden');
460
+ document.body.classList.remove('is-loading-data');
461
+ return;
462
+ }
463
+
464
+ if (loadingHideTimeout) {
465
+ clearTimeout(loadingHideTimeout);
466
+ loadingHideTimeout = null;
467
+ }
468
+ if (!loadingVisibleSince && !loadingShowTimeout) {
469
+ loadingShowTimeout = setTimeout(() => {
470
+ loadingElement.classList.remove('hidden');
471
+ document.body.classList.add('is-loading-data');
472
+ loadingVisibleSince = Date.now();
473
+ loadingShowTimeout = null;
474
+ refreshIcons();
475
+ }, loadingDelayMs);
476
+ }
477
+ } else {
478
+ document.body.classList.remove('is-quiet-refresh');
479
+ applyQuietRefreshSectionIndicators([]);
480
+ if (loadingShowTimeout) {
481
+ clearTimeout(loadingShowTimeout);
482
+ loadingShowTimeout = null;
483
+ }
484
+ if (!loadingVisibleSince) {
485
+ loadingElement.classList.add('hidden');
486
+ document.body.classList.remove('is-loading-data');
487
+ return;
488
+ }
489
+ const elapsed = Date.now() - loadingVisibleSince;
490
+ const remaining = Math.max(0, loadingMinimumVisibleMs - elapsed);
491
+ loadingHideTimeout = setTimeout(() => {
492
+ loadingElement.classList.add('hidden');
493
+ document.body.classList.remove('is-loading-data');
494
+ loadingVisibleSince = null;
495
+ loadingHideTimeout = null;
496
+ updateUI();
497
+ }, remaining);
498
+ }
499
+ }
500
+
501
+ function formatSessionDuration(milliseconds) {
502
+ const seconds = Math.max(0, Math.floor(milliseconds / 1000));
503
+ if (seconds < 60) return `${seconds}s`;
504
+ const minutes = Math.floor(seconds / 60);
505
+ const remainingSeconds = seconds % 60;
506
+ return `${minutes}m ${remainingSeconds}s`;
507
+ }
508
+
509
+ function formatActionBreakdown(actionBreakdown) {
510
+ return `${t('metrics.action.followup')} ${actionBreakdown.followup}, ${t('metrics.action.open')} ${actionBreakdown.open}, ${t('metrics.action.approve')} ${actionBreakdown.approve}, ${t('metrics.action.cancelReview')} ${actionBreakdown.cancelReview}, ${t('metrics.action.syncThreads')} ${actionBreakdown.syncThreads}`;
511
+ }
512
+
513
+ function updateSessionMetricsUI() {
514
+ const metricsElement = document.getElementById('session-metrics');
515
+ if (!metricsElement) return;
516
+
517
+ const metricsSnapshot = getSessionMetricsSnapshot(sessionMetrics);
518
+ const firstActionLabel = metricsSnapshot.firstUsefulActionDelayMs === null
519
+ ? t('metrics.pending')
520
+ : formatSessionDuration(metricsSnapshot.firstUsefulActionDelayMs);
521
+ const priorityResolutionLabel = metricsSnapshot.averagePriorityResolutionMs === null
522
+ ? t('metrics.pending')
523
+ : formatSessionDuration(metricsSnapshot.averagePriorityResolutionMs);
524
+ const actionBreakdownLabel = formatActionBreakdown(metricsSnapshot.actionBreakdown);
525
+ metricsElement.textContent = `${t('metrics.session')}: ${t('metrics.firstAction')} ${firstActionLabel} • ${metricsSnapshot.actionCount} ${t('metrics.actions')} • ${t('metrics.priorityResolution')} ${priorityResolutionLabel} • ${t('metrics.breakdown')} ${actionBreakdownLabel}`;
526
+ }
527
+
528
+ function trackUsefulAction(actionType = 'other') {
529
+ sessionMetrics = trackSessionAction(sessionMetrics, actionType, Date.now());
530
+ updateSessionMetricsUI();
531
+ }
532
+
533
+ function onUsefulLinkAction() {
534
+ trackUsefulAction('open');
535
+ return true;
536
+ }
537
+
538
+ function activateOnKeydown(event) {
539
+ if (event.key !== 'Enter' && event.key !== ' ') return;
540
+ event.preventDefault();
541
+ event.currentTarget.click();
542
+ }
543
+
544
+ function safeDecodeURIComponent(value) {
545
+ try {
546
+ return decodeURIComponent(String(value ?? ''));
547
+ } catch {
548
+ return String(value ?? '');
549
+ }
550
+ }
551
+
552
+ function getNotificationMrNumber(review) {
553
+ return typeof review.mrNumber === 'number' ? String(review.mrNumber) : '?';
554
+ }
555
+
556
+ function mapNotificationToToast(notification) {
557
+ const mrNumber = getNotificationMrNumber(notification.review);
558
+ switch (notification.kind) {
559
+ case 'reviewStarted':
560
+ return { message: t('notify.reviewStarted', { mrNumber }), type: 'info' };
561
+ case 'followupStarted':
562
+ return { message: t('notify.followupStarted', { mrNumber }), type: 'info' };
563
+ case 'reviewCompleted':
564
+ return { message: t('notify.reviewCompleted', { mrNumber }), type: 'success' };
565
+ case 'followupCompleted':
566
+ return { message: t('notify.followupCompleted', { mrNumber }), type: 'success' };
567
+ case 'reviewFailed':
568
+ return { message: t('notify.reviewFailed', { mrNumber }), type: 'error' };
569
+ default:
570
+ return null;
571
+ }
572
+ }
573
+
574
+ function maybeShowDesktopNotification(notification) {
575
+ if (typeof Notification === 'undefined') return;
576
+
577
+ const shouldNotify = shouldNotifyDesktop({
578
+ permission: Notification.permission,
579
+ isDocumentHidden: document.visibilityState !== 'visible',
580
+ });
581
+ if (!shouldNotify) return;
582
+
583
+ const desktopPayload = getDesktopNotificationPayload(notification, t);
584
+ if (!desktopPayload) return;
585
+ new Notification(desktopPayload.title, {
586
+ body: desktopPayload.body,
587
+ tag: desktopPayload.tag,
588
+ });
589
+ }
590
+
591
+ function dispatchReviewNotifications(activeReviews, recentReviews) {
592
+ const result = collectReviewNotifications(reviewNotificationState, activeReviews, recentReviews);
593
+ reviewNotificationState = result.nextState;
594
+ result.notifications.forEach((notification) => {
595
+ const toastPayload = mapNotificationToToast(notification);
596
+ if (!toastPayload) return;
597
+ showToast(toastPayload.message, toastPayload.type);
598
+ maybeShowDesktopNotification(notification);
599
+ });
600
+ }
601
+
602
+ function renderAgentTimeline(progress) {
603
+ if (!progress?.agents?.length) return '';
604
+ const allowedAgentStatuses = new Set(['running', 'completed', 'failed', 'pending', 'queued']);
605
+ const agentsHtml = progress.agents.map(agent => `
606
+ <div class="agent-box ${allowedAgentStatuses.has(agent.status) ? agent.status : 'queued'}" title="${escapeHtml(agent.displayName)}: ${escapeHtml(agent.status)}">
607
+ <span class="agent-icon">${getAgentIcon(agent.status)}</span>
608
+ <span class="agent-name">${escapeHtml(agent.displayName)}</span>
609
+ </div>
610
+ `).join('');
611
+ return `<div class="agent-timeline">${agentsHtml}</div>`;
612
+ }
613
+
614
+ function renderProgressBar(progress) {
615
+ if (!progress) return '';
616
+ const overallProgress = typeof progress.overallProgress === 'number'
617
+ ? Math.max(0, Math.min(100, progress.overallProgress))
618
+ : 0;
619
+ return `
620
+ <div class="progress-container">
621
+ <div class="progress-bar-wrapper">
622
+ <div class="progress-bar">
623
+ <div class="progress-bar-fill" style="width: ${overallProgress}%"></div>
624
+ </div>
625
+ <span class="progress-percent">${overallProgress}%</span>
626
+ </div>
627
+ <div class="progress-phase">${formatPhase(progress.currentPhase)}</div>
628
+ </div>
629
+ `;
630
+ }
631
+
632
+ function getReviewStatusPresentation(status) {
633
+ const statusMap = {
634
+ running: { icon: 'activity', label: t('review.status.running') },
635
+ queued: { icon: 'clock-3', label: t('review.status.queued') },
636
+ completed: { icon: 'check-circle-2', label: t('review.status.completed') },
637
+ failed: { icon: 'triangle-alert', label: t('review.status.failed') },
638
+ };
639
+ return statusMap[status] || { icon: 'circle-help', label: status };
640
+ }
641
+
642
+ function renderReview(review, isActive) {
643
+ const statusClass = typeof review.status === 'string' ? review.status : 'queued';
644
+ const safeStatusClass = ['running', 'queued', 'completed', 'failed'].includes(statusClass) ? statusClass : 'queued';
645
+ const statusPresentation = getReviewStatusPresentation(statusClass);
646
+ const mrNumber = review.mrNumber;
647
+ const project = typeof review.project === 'string' ? review.project.split('/').pop() : '';
648
+ const reviewId = typeof review.id === 'string' ? review.id : '';
649
+ const reviewIsGitHub = reviewId.startsWith('github');
650
+ const mrPrefix = reviewIsGitHub ? '#' : '!';
651
+ const mrLabel = getMrLabel(reviewIsGitHub ? 'github' : 'gitlab');
652
+ const safeMrUrl = sanitizeHttpUrl(typeof review.mrUrl === 'string' ? review.mrUrl : null);
653
+
654
+ const progressHtml = isActive && review.progress ? `
655
+ ${renderAgentTimeline(review.progress)}
656
+ ${renderProgressBar(review.progress)}
657
+ ` : '';
658
+
659
+ const trackedMergeRequests = [...currentData.pendingFix, ...currentData.pendingApproval];
660
+ const assignerDisplay = resolveReviewAssigneeDisplay(review, trackedMergeRequests);
661
+ const assignerInitial = assignerDisplay.charAt(0).toUpperCase();
662
+ const safeReviewAccordionId = reviewId.replace(/[^a-zA-Z0-9-]/g, '-');
663
+ const safeJobType = review.jobType === 'followup' ? 'followup' : 'review';
664
+
665
+ const descriptionHtml = isActive && review.description ? `
666
+ <div class="review-description-accordion">
667
+ <div class="review-description-toggle" onclick="toggleReviewDescription('${safeReviewAccordionId}')" role="button" tabindex="0" onkeydown="activateOnKeydown(event)">
668
+ <i data-lucide="chevron-right"></i> ${t('review.description')}
669
+ </div>
670
+ <div class="review-description-content" id="review-desc-${safeReviewAccordionId}">
671
+ <div class="review-description-text">${escapeHtml(review.description)}</div>
672
+ </div>
673
+ </div>
674
+ ` : '';
675
+
676
+ const displayTitle = review.title || project;
677
+
678
+ return `
679
+ <div class="review-item" data-job-id="${escapeHtml(reviewId)}">
680
+ <div class="review-header">
681
+ <div class="review-status ${safeStatusClass}" title="${escapeHtml(statusPresentation.label)}"></div>
682
+ <div class="review-info">
683
+ <div class="review-title">
684
+ <a href="${safeMrUrl}" target="_blank" rel="noopener noreferrer">${mrPrefix}${mrNumber}</a> - ${escapeHtml(displayTitle)}
685
+ </div>
686
+ <div class="review-meta">
687
+ <span class="badge ${safeStatusClass}"><i data-lucide="${statusPresentation.icon}"></i> ${escapeHtml(statusPresentation.label)}</span>
688
+ ${isActive ? `<i data-lucide="clock"></i> ${formatDuration(review.startedAt)}` : ''}
689
+ </div>
690
+ ${review.error ? `<div class="error-message">${escapeHtml(review.error)}</div>` : ''}
691
+ </div>
692
+ ${isActive ? `<button class="btn-cancel-review" onclick="event.stopPropagation(); showCancelModal('${encodeURIComponent(reviewId)}', ${mrNumber}, '${safeJobType}')" title="${t('button.cancel')}"><i data-lucide="x"></i> ${t('button.cancel')}</button>` : ''}
693
+ <div class="review-assigner">
694
+ <div class="review-assigner-info">
695
+ <span class="review-assigner-name">${escapeHtml(assignerDisplay)}</span>
696
+ <span class="review-assigner-time">${isActive ? formatTime(review.startedAt) : formatTime(review.completedAt)}</span>
697
+ </div>
698
+ <div class="review-avatar" title="${escapeHtml(assignerDisplay)}">${escapeHtml(assignerInitial)}</div>
699
+ </div>
700
+ </div>
701
+ ${descriptionHtml}
702
+ ${progressHtml}
703
+ </div>
704
+ `;
705
+ }
706
+
707
+ function toggleReviewDescription(reviewId) {
708
+ const safeId = reviewId.replace(/[^a-zA-Z0-9-]/g, '-');
709
+ const content = document.getElementById(`review-desc-${safeId}`);
710
+ const toggle = content?.previousElementSibling;
711
+ if (!content || !toggle) return;
712
+
713
+ const isOpen = content.classList.contains('open');
714
+ if (isOpen) {
715
+ content.classList.remove('open');
716
+ toggle.classList.remove('open');
717
+ } else {
718
+ content.classList.add('open');
719
+ toggle.classList.add('open');
720
+ refreshIcons();
721
+ }
722
+ }
723
+
724
+ function renderLog(log) {
725
+ const dataStr = log.data ? escapeHtml(JSON.stringify(log.data, null, 2)) : '';
726
+ const logLevel = typeof log.level === 'string' ? log.level : 'info';
727
+ const safeLogLevelClass = logLevel.replace(/[^a-zA-Z0-9-]/g, '-');
728
+ return `
729
+ <div class="log-entry">
730
+ <span class="log-time">${formatLogTime(log.timestamp)}</span>
731
+ <span class="log-level ${safeLogLevelClass}">${escapeHtml(logLevel.toUpperCase())}</span>
732
+ <div class="log-message">
733
+ ${escapeHtml(String(log.message ?? ''))}
734
+ ${dataStr ? `<div class="log-data">${dataStr}</div>` : ''}
735
+ </div>
736
+ </div>
737
+ `;
738
+ }
739
+
740
+ function updateUI() {
741
+ const reviews = currentData.activeReviews.filter(r => r.jobType !== 'followup');
742
+ const followups = currentData.activeReviews.filter(r => r.jobType === 'followup');
743
+
744
+ const running = currentData.activeReviews.filter(r => r.status === 'running').length;
745
+ const queued = currentData.activeReviews.filter(r => r.status === 'queued').length;
746
+ const blocked = currentData.pendingFix.length;
747
+ const nowCount = running + blocked;
748
+ const nextCount = queued + currentData.pendingApproval.length;
749
+ document.getElementById('running-count').textContent = running;
750
+ document.getElementById('queued-count').textContent = queued;
751
+ document.getElementById('completed-count').textContent = currentData.reviewFiles.length;
752
+ document.getElementById('focus-now-count').textContent = String(nowCount);
753
+ document.getElementById('focus-next-count').textContent = String(nextCount);
754
+ document.getElementById('focus-blocked-count').textContent = String(blocked);
755
+
756
+ const activeReviewsSection = document.getElementById('active-reviews-section');
757
+ const activeReviewsEl = document.getElementById('active-reviews');
758
+ const activeReviewsCount = document.getElementById('active-reviews-count');
759
+
760
+ activeReviewsSection.classList.remove('hidden');
761
+ if (reviews.length === 0) {
762
+ const showInitialLoadingState = !hasLoadedStatusOnce && loadingState.status > 0;
763
+ activeReviewsEl.innerHTML = `<div class="empty-state">${showInitialLoadingState ? t('loading.section') : t('empty.activeReviews')}</div>`;
764
+ activeReviewsCount.classList.add('hidden');
765
+ } else {
766
+ activeReviewsEl.innerHTML = reviews.map(r => renderReview(r, true)).join('');
767
+ activeReviewsCount.textContent = reviews.length;
768
+ activeReviewsCount.classList.remove('hidden');
769
+ }
770
+
771
+ const activeFollowupsSection = document.getElementById('active-followups-section');
772
+ const activeFollowupsEl = document.getElementById('active-followups');
773
+ const activeFollowupsCount = document.getElementById('active-followups-count');
774
+
775
+ if (followups.length === 0) {
776
+ activeFollowupsSection.classList.add('hidden');
777
+ } else {
778
+ activeFollowupsSection.classList.remove('hidden');
779
+ activeFollowupsEl.innerHTML = followups.map(r => renderReview(r, true)).join('');
780
+ activeFollowupsCount.textContent = followups.length;
781
+ activeFollowupsCount.classList.remove('hidden');
782
+ applySectionExpansion('active-followups-section');
783
+ }
784
+
785
+ refreshIcons();
786
+ }
787
+
788
+ function updateLogs() {
789
+ const sheetLogsEl = document.querySelector('.sheet-logs-content');
790
+ if (sheetLogsEl && logsVisible) {
791
+ if (currentData.logs.length === 0) {
792
+ sheetLogsEl.innerHTML = `<div class="empty-state">${t('empty.logs')}</div>`;
793
+ } else {
794
+ sheetLogsEl.innerHTML = currentData.logs.slice().reverse().map(renderLog).join('');
795
+ }
796
+ }
797
+ }
798
+
799
+ function updateConnectionStatus(status, textKey, textFallback) {
800
+ const statusEl = document.getElementById('server-status');
801
+ statusEl.className = `status-indicator ${status}`;
802
+ const displayText = textKey ? t(textKey) : textFallback;
803
+ statusEl.innerHTML = `<span class="status-dot"></span><span>${escapeHtml(String(displayText ?? ''))}</span>`;
804
+
805
+ const modeEl = document.getElementById('connection-mode');
806
+ modeEl.textContent = status === 'online' && wsConnected
807
+ ? t('connection.websocket')
808
+ : status === 'online' ? t('connection.polling') : t('connection.disconnected');
809
+ }
810
+
811
+ function renderReviewFile(review) {
812
+ const typeIcon = review.type === 'review' ? 'file-text' : review.type === 'followup' ? 'refresh-cw' : 'file';
813
+ const typeLabel = review.type === 'review' ? t('review.type.review') : review.type === 'followup' ? t('review.type.followup') : review.type;
814
+ const sizeKb = (review.size / 1024).toFixed(1);
815
+ const mrLabel = getMrLabel();
816
+ const encodedFilename = encodeURIComponent(String(review.filename ?? ''));
817
+ const filenameDomId = encodedFilename.replace(/[^a-zA-Z0-9-]/g, '-');
818
+
819
+ return `
820
+ <div class="review-accordion" data-filename="${encodedFilename}">
821
+ <div class="review-accordion-header">
822
+ <div class="review-accordion-toggle" onclick="toggleReviewAccordion('${encodedFilename}')" role="button" tabindex="0" onkeydown="activateOnKeydown(event)"><i data-lucide="chevron-right"></i></div>
823
+ <div class="review-status completed" onclick="toggleReviewAccordion('${encodedFilename}')" role="button" tabindex="0" onkeydown="activateOnKeydown(event)"></div>
824
+ <div class="review-info" onclick="toggleReviewAccordion('${encodedFilename}')" role="button" tabindex="0" onkeydown="activateOnKeydown(event)" style="cursor: pointer;">
825
+ <div class="review-title">${mrLabel} ${review.mrNumber}${review.title ? ` - ${escapeHtml(String(review.title))}` : ''}</div>
826
+ <div class="review-meta">
827
+ <span class="badge completed"><i data-lucide="${typeIcon}"></i> ${typeLabel}</span>
828
+ <span style="margin-left: 0.5rem; color: #71717a;">${sizeKb} KB</span>
829
+ </div>
830
+ </div>
831
+ <div class="review-time" onclick="toggleReviewAccordion('${encodedFilename}')" role="button" tabindex="0" onkeydown="activateOnKeydown(event)" style="cursor: pointer;">${escapeHtml(String(review.date ?? ''))}</div>
832
+ <button class="btn-delete" onclick="deleteReviewFile('${encodedFilename}')" title="${t('button.delete')}"><i data-lucide="trash-2"></i></button>
833
+ </div>
834
+ <div class="review-accordion-content">
835
+ <div class="markdown-content" id="review-content-${filenameDomId}">
836
+ <div class="empty-state">${t('status.loading')}</div>
837
+ </div>
838
+ </div>
839
+ </div>
840
+ `;
841
+ }
842
+
843
+ async function toggleReviewAccordion(encodedFilename) {
844
+ const filename = safeDecodeURIComponent(encodedFilename);
845
+ const accordion = document.querySelector(`.review-accordion[data-filename="${encodedFilename}"]`);
846
+ const isOpen = accordion.classList.contains('open');
847
+
848
+ document.querySelectorAll('.review-accordion.open').forEach(el => {
849
+ if (el !== accordion) el.classList.remove('open');
850
+ });
851
+
852
+ if (isOpen) {
853
+ accordion.classList.remove('open');
854
+ return;
855
+ }
856
+
857
+ accordion.classList.add('open');
858
+ const contentId = `review-content-${encodedFilename.replace(/[^a-zA-Z0-9-]/g, '-')}`;
859
+ const contentEl = document.getElementById(contentId);
860
+
861
+ if (!loadedReviews[filename]) {
862
+ try {
863
+ const response = await fetch(`${API_URL}/api/reviews/${filename}`);
864
+ const data = await response.json();
865
+ loadedReviews[filename] = data.content;
866
+ } catch (error) {
867
+ contentEl.innerHTML = `<div class="empty-state">${t('error.loading')}</div>`;
868
+ return;
869
+ }
870
+ }
871
+
872
+ contentEl.innerHTML = markdownToHtml(loadedReviews[filename]);
873
+ }
874
+
875
+ async function fetchReviewFiles() {
876
+ setLoadingFlag('reviewFiles', true);
877
+ try {
878
+ const url = currentProjectPath
879
+ ? `${API_URL}/api/reviews?path=${encodeURIComponent(currentProjectPath)}`
880
+ : `${API_URL}/api/reviews`;
881
+ const response = await fetch(url);
882
+ const data = await response.json();
883
+ currentData.reviewFiles = data.reviews || [];
884
+ updateReviewFilesUI();
885
+ } catch (error) {
886
+ console.error('Error fetching review files:', error);
887
+ } finally {
888
+ setLoadingFlag('reviewFiles', false);
889
+ }
890
+ }
891
+
892
+ async function fetchProjectStats() {
893
+ const statsEl = document.getElementById('project-stats');
894
+ setLoadingFlag('stats', true);
895
+
896
+ if (!currentProjectPath) {
897
+ statsEl.innerHTML = `<div class="empty-state">${t('empty.statsNoProject')}</div>`;
898
+ setLoadingFlag('stats', false);
899
+ return;
900
+ }
901
+
902
+ try {
903
+ const response = await fetch(`${API_URL}/api/stats?path=${encodeURIComponent(currentProjectPath)}`);
904
+ const data = await response.json();
905
+
906
+ if (data.summary) {
907
+ const s = data.summary;
908
+ const reviews = data.stats?.reviews || [];
909
+ const trendIcon = (trend) => trend === 'up'
910
+ ? '<span class="stat-trend up"><i data-lucide="trending-up"></i></span>'
911
+ : trend === 'down'
912
+ ? '<span class="stat-trend down"><i data-lucide="trending-down"></i></span>'
913
+ : '<span class="stat-trend flat"><i data-lucide="minus"></i></span>';
914
+
915
+ const numericScore = parseFloat(s.averageScore);
916
+ const isScoreNumeric = !isNaN(numericScore);
917
+
918
+ statsEl.innerHTML = `
919
+ <div class="stat-card metric-reviews">
920
+ <div class="stat-value"><span class="stat-main" data-target="${s.totalReviews}">0</span></div>
921
+ <div class="stat-label"><i data-lucide="file-search"></i> ${t('stats.reviews')}</div>
922
+ </div>
923
+ <div class="stat-card metric-score">
924
+ <div class="stat-value"><span class="stat-main" ${isScoreNumeric ? `data-target="${numericScore}" data-suffix="/10"` : ''}>${isScoreNumeric ? '0' : s.averageScore}</span>${!isScoreNumeric ? '<span class="stat-denominator">/10</span>' : ''}${trendIcon(s.trend.score)}</div>
925
+ <div class="stat-label"><i data-lucide="star"></i> ${t('stats.averageScore')}</div>
926
+ </div>
927
+ <div class="stat-card metric-time">
928
+ <div class="stat-value"><span class="stat-main">${s.totalTime}</span></div>
929
+ <div class="stat-label"><i data-lucide="timer"></i> ${t('stats.totalTime')}</div>
930
+ </div>
931
+ <div class="stat-card metric-average-time">
932
+ <div class="stat-value"><span class="stat-main">${s.averageTime}</span></div>
933
+ <div class="stat-label"><i data-lucide="clock"></i> ${t('stats.averageTime')}</div>
934
+ </div>
935
+ <div class="stat-card warning metric-blocking">
936
+ <div class="stat-value"><span class="stat-main" data-target="${s.totalBlocking}">0</span>${trendIcon(s.trend.blocking)}</div>
937
+ <div class="stat-label"><i data-lucide="octagon-alert"></i> ${t('stats.blocking')}</div>
938
+ </div>
939
+ <div class="stat-card metric-warnings">
940
+ <div class="stat-value"><span class="stat-main" data-target="${s.totalWarnings}">0</span></div>
941
+ <div class="stat-label"><i data-lucide="alert-triangle"></i> ${t('stats.warnings')}</div>
942
+ </div>
943
+ <div class="stats-charts-row">
944
+ <div class="stats-chart-card">
945
+ <div class="stats-chart-title"><i data-lucide="trending-up"></i> ${t('stats.scoreTrend')}</div>
946
+ <div class="dev-filter" id="dev-filter-container">
947
+ <button class="dev-filter-btn ${currentDevFilter === 'all' ? 'active' : ''}" data-dev="all" onclick="filterScoreTrend('all')">${t('stats.allDevs')}</button>
948
+ ${[...new Set(reviews.map(r => r.assignedBy).filter(Boolean))].map(dev =>
949
+ '<button class="dev-filter-btn ' + (currentDevFilter === dev ? 'active' : '') + '" data-dev="' + dev + '" onclick="filterScoreTrend(\'' + dev + '\')">' + dev + '</button>'
950
+ ).join('')}
951
+ </div>
952
+ <canvas id="stats-score-trend" class="stats-canvas"></canvas>
953
+ </div>
954
+ <div class="stats-chart-card">
955
+ <div class="stats-chart-title"><i data-lucide="bar-chart-3"></i> ${t('stats.reviewActivity')}</div>
956
+ <canvas id="stats-activity" class="stats-canvas"></canvas>
957
+ </div>
958
+ </div>
959
+ <div class="stats-charts-row">
960
+ <div class="stats-chart-card full-width">
961
+ <div class="stats-chart-title"><i data-lucide="pie-chart"></i> ${t('stats.scoreDistribution')}</div>
962
+ <canvas id="stats-distribution" class="stats-canvas-wide"></canvas>
963
+ </div>
964
+ </div>
965
+ `;
966
+ refreshIcons();
967
+
968
+ statsEl.querySelectorAll('.stat-main[data-target]').forEach(element => {
969
+ const target = parseFloat(element.dataset.target);
970
+ if (!isNaN(target)) {
971
+ animateCounter(element, target, 800, element.dataset.suffix || '');
972
+ }
973
+ });
974
+
975
+ currentStatsReviews = reviews;
976
+
977
+ requestAnimationFrame(() => {
978
+ if (reviews.length) {
979
+ const trendReviews = currentDevFilter === 'all'
980
+ ? reviews
981
+ : reviews.filter(r => r.assignedBy === currentDevFilter);
982
+ drawScoreTrendChart('stats-score-trend', trendReviews);
983
+ drawReviewActivityChart('stats-activity', reviews);
984
+ drawScoreDistributionChart('stats-distribution', reviews);
985
+ }
986
+ });
987
+ } else {
988
+ statsEl.innerHTML = `<div class="empty-state">${t('empty.statsNoData')}</div>`;
989
+ }
990
+ } catch (error) {
991
+ console.error('Error fetching stats:', error);
992
+ statsEl.innerHTML = `<div class="empty-state">${t('error.loadingStats')}</div>`;
993
+ } finally {
994
+ setLoadingFlag('stats', false);
995
+ }
996
+ }
997
+
998
+ function updateReviewFilesUI() {
999
+ const recentEl = document.getElementById('recent-reviews');
1000
+ const completedSection = document.getElementById('completed-reviews-section');
1001
+
1002
+ if (currentData.reviewFiles.length === 0) {
1003
+ completedSection?.classList.remove('hidden');
1004
+ recentEl.innerHTML = `<div class="empty-state">${loadingState.reviewFiles ? t('loading.section') : t('empty.reviewFiles')}</div>`;
1005
+ applySectionExpansion('completed-reviews-section');
1006
+ return;
1007
+ }
1008
+
1009
+ completedSection?.classList.remove('hidden');
1010
+ recentEl.innerHTML = renderCollapsibleList(
1011
+ currentData.reviewFiles.map(renderReviewFile),
1012
+ 'completed-reviews', t
1013
+ );
1014
+ applySectionExpansion('completed-reviews-section');
1015
+ refreshIcons();
1016
+ }
1017
+
1018
+ async function deleteReviewFile(encodedFilename) {
1019
+ const filename = safeDecodeURIComponent(encodedFilename);
1020
+ if (!confirm(t('confirm.deleteReview', { filename }))) return;
1021
+
1022
+ try {
1023
+ const response = await fetch(`${API_URL}/api/reviews/${filename}`, {
1024
+ method: 'DELETE'
1025
+ });
1026
+ const data = await response.json();
1027
+
1028
+ if (data.success) {
1029
+ delete loadedReviews[filename];
1030
+ currentData.reviewFiles = currentData.reviewFiles.filter(r => r.filename !== filename);
1031
+ updateReviewFilesUI();
1032
+ updateUI();
1033
+ } else {
1034
+ alert(t('error.deleteReview') + ': ' + data.error);
1035
+ }
1036
+ } catch (error) {
1037
+ console.error('Error deleting review:', error);
1038
+ alert(t('error.deleteReview'));
1039
+ }
1040
+ }
1041
+
1042
+ async function checkClaudeStatus() {
1043
+ const claudeEl = document.getElementById('claude-status');
1044
+ const loginSection = document.getElementById('claude-login-section');
1045
+
1046
+ claudeEl.className = 'card-claude checking';
1047
+ claudeEl.innerHTML = `<span class="status">${t('status.checking')}</span>`;
1048
+
1049
+ try {
1050
+ const response = await fetch(`${API_URL}/api/claude/status`);
1051
+ const data = await response.json();
1052
+
1053
+ if (data.available) {
1054
+ claudeEl.className = 'card-claude available';
1055
+ claudeEl.innerHTML = `
1056
+ <span class="status"><i data-lucide="check-circle"></i> ${t('status.operational')}</span>
1057
+ <span class="version">${escapeHtml(String(data.version ?? ''))}</span>
1058
+ `;
1059
+ loginSection.classList.add('hidden');
1060
+ refreshIcons();
1061
+ } else {
1062
+ claudeEl.className = 'card-claude unavailable';
1063
+ claudeEl.innerHTML = `
1064
+ <span class="status"><i data-lucide="x-circle"></i> ${escapeHtml(String(data.message ?? ''))}</span>
1065
+ `;
1066
+ refreshIcons();
1067
+ if (data.message.includes('authentifié') || data.message.includes('login') || data.message.includes('authenticated')) {
1068
+ loginSection.classList.remove('hidden');
1069
+ }
1070
+ }
1071
+ } catch (error) {
1072
+ claudeEl.className = 'card-claude unavailable';
1073
+ claudeEl.innerHTML = `<span class="status"><i data-lucide="x-circle"></i> ${t('error.checkStatus')}</span>`;
1074
+ refreshIcons();
1075
+ }
1076
+ }
1077
+
1078
+ let activePlatform = null;
1079
+
1080
+ function updateGitCliUI() {
1081
+ const labelEl = document.getElementById('git-cli-label');
1082
+ const statusEl = document.getElementById('git-cli-status');
1083
+ const loginSection = document.getElementById('git-login-section');
1084
+
1085
+ if (!activePlatform) {
1086
+ labelEl.textContent = t('card.gitCli');
1087
+ statusEl.className = 'card-claude checking';
1088
+ statusEl.innerHTML = `<span class="status">${t('status.loadProject')}</span>`;
1089
+ loginSection.classList.add('hidden');
1090
+ return;
1091
+ }
1092
+
1093
+ const isGitlab = activePlatform === 'gitlab';
1094
+ labelEl.textContent = isGitlab ? t('card.gitlabCli') : t('card.githubCli');
1095
+
1096
+ const titleEl = document.getElementById('git-login-title');
1097
+ const instructionsEl = document.getElementById('git-login-instructions');
1098
+
1099
+ if (isGitlab) {
1100
+ titleEl.innerHTML = `<i data-lucide="alert-triangle"></i> ${t('login.gitlab.title')}`;
1101
+ instructionsEl.innerHTML = `
1102
+ <p><strong>${t('setup.installAndAuth', { cli: 'glab' })}</strong></p>
1103
+ <p style="margin: 0.5rem 0;"><code>sudo apt install glab</code></p>
1104
+ <p style="margin: 0.5rem 0;"><code>glab auth login</code></p>
1105
+ <p style="margin-top: 1rem;"><strong>${t('setup.configureWebhook', { platform: 'GitLab' })}</strong></p>
1106
+ <p style="margin: 0.5rem 0; font-size: 0.8rem;">${t('setup.webhookPath')}</p>
1107
+ <p style="margin: 0.25rem 0; font-size: 0.8rem;">URL: <code>http://&lt;your-server&gt;:3847/webhooks/gitlab</code></p>
1108
+ <p style="margin: 0.25rem 0; font-size: 0.8rem;">${t('setup.gitlab.trigger')}</p>
1109
+ <p style="margin-top: 0.75rem; font-size: 0.75rem; color: #a1a1aa;">${t('setup.reload')}</p>
1110
+ `;
1111
+ } else {
1112
+ titleEl.innerHTML = `<i data-lucide="alert-triangle"></i> ${t('login.github.title')}`;
1113
+ instructionsEl.innerHTML = `
1114
+ <p><strong>${t('setup.installAndAuth', { cli: 'gh' })}</strong></p>
1115
+ <p style="margin: 0.5rem 0;"><code>sudo apt install gh</code></p>
1116
+ <p style="margin: 0.5rem 0;"><code>gh auth login</code></p>
1117
+ <p style="margin-top: 1rem;"><strong>${t('setup.configureWebhook', { platform: 'GitHub' })}</strong></p>
1118
+ <p style="margin: 0.5rem 0; font-size: 0.8rem;">${t('setup.webhookPath')}</p>
1119
+ <p style="margin: 0.25rem 0; font-size: 0.8rem;">Payload URL: <code>http://&lt;your-server&gt;:3847/webhooks/github</code></p>
1120
+ <p style="margin: 0.25rem 0; font-size: 0.8rem;">${t('setup.github.contentType')}</p>
1121
+ <p style="margin: 0.25rem 0; font-size: 0.8rem;">${t('setup.github.events')}</p>
1122
+ <p style="margin-top: 0.75rem; font-size: 0.75rem; color: #a1a1aa;">${t('setup.reload')}</p>
1123
+ `;
1124
+ }
1125
+
1126
+ refreshIcons();
1127
+ checkGitCliStatus();
1128
+ }
1129
+
1130
+ async function checkGitCliStatus() {
1131
+ if (!activePlatform) return;
1132
+
1133
+ const statusEl = document.getElementById('git-cli-status');
1134
+ const loginSection = document.getElementById('git-login-section');
1135
+ const isGitlab = activePlatform === 'gitlab';
1136
+ const endpoint = isGitlab ? '/api/gitlab/status' : '/api/github/status';
1137
+
1138
+ statusEl.className = 'card-claude checking';
1139
+ statusEl.innerHTML = `<span class="status">${t('status.checking')}</span>`;
1140
+
1141
+ try {
1142
+ const response = await fetch(`${API_URL}${endpoint}`);
1143
+ const data = await response.json();
1144
+
1145
+ if (data.available && data.authenticated) {
1146
+ statusEl.className = 'card-claude available';
1147
+ statusEl.innerHTML = `
1148
+ <span class="status"><i data-lucide="check-circle"></i> ${t('status.operational')}</span>
1149
+ <span class="version">@${escapeHtml(String(data.username ?? ''))}</span>
1150
+ `;
1151
+ loginSection.classList.add('hidden');
1152
+ refreshIcons();
1153
+ } else if (data.available && !data.authenticated) {
1154
+ statusEl.className = 'card-claude unavailable';
1155
+ statusEl.innerHTML = `<span class="status"><i data-lucide="x-circle"></i> ${escapeHtml(String(data.message ?? ''))}</span>`;
1156
+ loginSection.classList.remove('hidden');
1157
+ refreshIcons();
1158
+ } else {
1159
+ statusEl.className = 'card-claude unavailable';
1160
+ statusEl.innerHTML = `<span class="status"><i data-lucide="x-circle"></i> ${escapeHtml(String(data.message ?? ''))}</span>`;
1161
+ loginSection.classList.remove('hidden');
1162
+ refreshIcons();
1163
+ }
1164
+ } catch (error) {
1165
+ statusEl.className = 'card-claude unavailable';
1166
+ statusEl.innerHTML = `<span class="status"><i data-lucide="x-circle"></i> ${t('error.checkStatus')}</span>`;
1167
+ refreshIcons();
1168
+ }
1169
+ }
1170
+
1171
+ function toggleLogs() {
1172
+ const sheetPanel = document.getElementById('mr-sheet');
1173
+ const isOpen = sheetPanel.classList.contains('open') && logsVisible;
1174
+
1175
+ if (isOpen) {
1176
+ closeMrSheet();
1177
+ logsVisible = false;
1178
+ return;
1179
+ }
1180
+
1181
+ logsVisible = true;
1182
+ const openLogsSheet = () => {
1183
+ const contentEl = document.getElementById('mr-sheet-content');
1184
+ contentEl.innerHTML = renderLogsSheetContent();
1185
+ document.getElementById('mr-sheet-overlay').classList.add('open');
1186
+ sheetPanel.classList.add('open');
1187
+ document.body.style.overflow = 'hidden';
1188
+ refreshIcons();
1189
+ };
1190
+ fetchLogs().then(openLogsSheet).catch(openLogsSheet);
1191
+ }
1192
+
1193
+ function renderLogsSheetContent() {
1194
+ const errorCount = currentData.logs.filter(l => l.level === 'error' || l.level === 'warn').length;
1195
+ const errorBadge = errorCount > 0
1196
+ ? ` <span class="section-header badge-count">${t('logs.errorCount', { count: errorCount })}</span>`
1197
+ : '';
1198
+
1199
+ const logsHtml = currentData.logs.length === 0
1200
+ ? `<div class="empty-state">${t('empty.logs')}</div>`
1201
+ : currentData.logs.slice().reverse().map(renderLog).join('');
1202
+
1203
+ return `
1204
+ <button class="sheet-close" onclick="closeMrSheet()"><i data-lucide="x"></i></button>
1205
+ <div class="sheet-mr-header">
1206
+ <div>
1207
+ <div class="sheet-mr-title"><i data-lucide="scroll-text"></i> ${t('section.logs')}${errorBadge}</div>
1208
+ </div>
1209
+ </div>
1210
+ <div class="sheet-logs-body">
1211
+ <div class="sheet-logs-content section-content logs">${logsHtml}</div>
1212
+ </div>
1213
+ <div class="sheet-logs-footer">
1214
+ <button class="btn btn-secondary sheet-clear-btn" onclick="clearLogs()">
1215
+ <i data-lucide="trash-2"></i> ${t('logs.clear')}
1216
+ </button>
1217
+ </div>
1218
+ `;
1219
+ }
1220
+
1221
+ function clearLogs() {
1222
+ currentData.logs = [];
1223
+ updateLogs();
1224
+ }
1225
+
1226
+ function toggleStats() {
1227
+ statsCollapsed = !statsCollapsed;
1228
+ const content = document.getElementById('project-stats');
1229
+ const toggle = document.getElementById('stats-toggle');
1230
+
1231
+ if (statsCollapsed) {
1232
+ content.classList.add('hidden');
1233
+ toggle.classList.add('collapsed');
1234
+ } else {
1235
+ content.classList.remove('hidden');
1236
+ toggle.classList.remove('collapsed');
1237
+ }
1238
+ }
1239
+
1240
+ function toggleTeamSection() {
1241
+ teamCollapsed = !teamCollapsed;
1242
+ const content = document.getElementById('team-tab-content');
1243
+ const toggle = document.getElementById('team-toggle');
1244
+
1245
+ if (teamCollapsed) {
1246
+ content.classList.add('hidden');
1247
+ toggle.classList.add('collapsed');
1248
+ } else {
1249
+ content.classList.remove('hidden');
1250
+ toggle.classList.remove('collapsed');
1251
+ }
1252
+ }
1253
+
1254
+ let teamAnalysisCollapsed = false;
1255
+
1256
+ function toggleTeamAnalysis() {
1257
+ teamAnalysisCollapsed = !teamAnalysisCollapsed;
1258
+ const body = document.getElementById('team-analysis-body');
1259
+ const toggle = document.getElementById('team-analysis-toggle');
1260
+ if (body) {
1261
+ body.classList.toggle('hidden', teamAnalysisCollapsed);
1262
+ }
1263
+ if (toggle) {
1264
+ toggle.classList.toggle('collapsed', teamAnalysisCollapsed);
1265
+ }
1266
+ refreshIcons();
1267
+ }
1268
+
1269
+ let aiGenerationInProgress = false;
1270
+
1271
+ async function fetchTeamInsights() {
1272
+ if (!currentProjectPath) return;
1273
+ if (aiGenerationInProgress) return;
1274
+ const container = document.getElementById('team-tab-content');
1275
+ if (!container) return;
1276
+
1277
+ container.innerHTML = `<div class="empty-state team-loading">${icon('loader-circle', 'spinning')} ${t('team.loading')}</div>`;
1278
+ refreshIcons();
1279
+
1280
+ try {
1281
+ const response = await fetch(`${API_URL}/api/insights?path=${encodeURIComponent(currentProjectPath)}`);
1282
+ const data = await response.json();
1283
+ currentInsightsData = data;
1284
+
1285
+ container.innerHTML = renderTeamTab(data, t);
1286
+ refreshIcons();
1287
+
1288
+ setTimeout(() => {
1289
+ container.querySelectorAll('.stat-bar-fill[data-target-width]').forEach((bar) => {
1290
+ bar.style.width = bar.dataset.targetWidth;
1291
+ });
1292
+ }, 50);
1293
+ } catch (error) {
1294
+ console.error('Error fetching team insights:', error);
1295
+ container.innerHTML = `<div class="empty-state">${t('team.noData')}</div>`;
1296
+ }
1297
+ }
1298
+
1299
+ async function refreshTokenUsageTile() {
1300
+ if (!currentProjectPath) return;
1301
+ const container = document.getElementById('token-usage-content');
1302
+ if (!container) return;
1303
+
1304
+ try {
1305
+ const viewModel = await fetchTokenUsageSummary(currentProjectPath);
1306
+ container.innerHTML = renderTokenUsageTile(viewModel);
1307
+ } catch (error) {
1308
+ console.error('Error fetching token usage summary:', error);
1309
+ container.innerHTML = `<div class="empty-state">Unable to load token usage.</div>`;
1310
+ }
1311
+ }
1312
+
1313
+ async function refreshBudgetTile() {
1314
+ const tile = document.getElementById('budget-tile');
1315
+ if (!tile) return;
1316
+ try {
1317
+ const viewModel = await fetchBudgetStatus();
1318
+ tile.innerHTML = renderBudgetTile(viewModel);
1319
+ } catch (error) {
1320
+ console.error('Error fetching budget status:', error);
1321
+ tile.innerHTML = `<div class="empty-state">Unable to load budget status.</div>`;
1322
+ }
1323
+ }
1324
+
1325
+ async function initBudgetSlider() {
1326
+ const slider = document.getElementById('budget-slider');
1327
+ const valueLabel = document.getElementById('budget-slider-value');
1328
+ const submitButton = document.getElementById('budget-slider-submit');
1329
+ const statusLabel = document.getElementById('budget-slider-status');
1330
+ if (!slider || !valueLabel || !submitButton || !statusLabel) return;
1331
+
1332
+ try {
1333
+ const config = await fetchBudget();
1334
+ slider.value = String(config.limitUsd);
1335
+ valueLabel.textContent = `$${config.limitUsd}`;
1336
+ } catch (error) {
1337
+ console.error('Error fetching budget:', error);
1338
+ }
1339
+
1340
+ slider.addEventListener('input', () => {
1341
+ valueLabel.textContent = `$${slider.value}`;
1342
+ });
1343
+
1344
+ submitButton.addEventListener('click', async () => {
1345
+ statusLabel.textContent = '';
1346
+ const limitUsd = Number(slider.value);
1347
+ try {
1348
+ const result = await submitBudget(limitUsd);
1349
+ if (result.success) {
1350
+ statusLabel.textContent = 'Saved';
1351
+ statusLabel.className = 'budget-slider-status budget-slider-status--ok';
1352
+ await refreshBudgetTile();
1353
+ } else {
1354
+ statusLabel.textContent = result.error || 'Failed';
1355
+ statusLabel.className = 'budget-slider-status budget-slider-status--error';
1356
+ }
1357
+ } catch (error) {
1358
+ console.error('Error submitting budget:', error);
1359
+ statusLabel.textContent = 'Network error';
1360
+ statusLabel.className = 'budget-slider-status budget-slider-status--error';
1361
+ }
1362
+ });
1363
+ }
1364
+
1365
+ async function generateAiInsights() {
1366
+ if (!currentProjectPath || aiGenerationInProgress) return;
1367
+ aiGenerationInProgress = true;
1368
+ const button = document.querySelector('.ai-generate-btn');
1369
+ if (button) {
1370
+ button.disabled = true;
1371
+ button.classList.add('loading');
1372
+ button.innerHTML = `${icon('loader-circle', 'spinning')} ${t('ai.generating')}`;
1373
+ refreshIcons();
1374
+ }
1375
+ try {
1376
+ const response = await fetch(`${API_URL}/api/insights/generate`, {
1377
+ method: 'POST',
1378
+ headers: { 'Content-Type': 'application/json' },
1379
+ body: JSON.stringify({ path: currentProjectPath, language: getLanguage() }),
1380
+ });
1381
+ if (!response.ok) {
1382
+ const errorData = await response.json().catch(() => ({}));
1383
+ throw new Error(errorData.error || t('ai.error'));
1384
+ }
1385
+ aiGenerationInProgress = false;
1386
+ await fetchTeamInsights();
1387
+ } catch (error) {
1388
+ aiGenerationInProgress = false;
1389
+ console.error('Error generating AI insights:', error);
1390
+ showToast(error.message || t('ai.error'), 'error');
1391
+ if (button) {
1392
+ button.disabled = false;
1393
+ button.classList.remove('loading');
1394
+ button.innerHTML = `${icon('sparkles')} ${t('ai.generate')}`;
1395
+ refreshIcons();
1396
+ }
1397
+ }
1398
+ }
1399
+
1400
+ function openDevSheet(encodedName) {
1401
+ const developerName = decodeURIComponent(encodedName);
1402
+ if (!currentInsightsData || !currentInsightsData.developers) return;
1403
+ const developer = currentInsightsData.developers.find(
1404
+ (dev) => dev.developerName === developerName
1405
+ );
1406
+ if (!developer) return;
1407
+
1408
+ const aiDevelopers = currentInsightsData.aiInsights?.developers || [];
1409
+ const aiDeveloper = aiDevelopers.find(
1410
+ (aiDev) => aiDev.developerName === developerName
1411
+ ) || null;
1412
+
1413
+ const contentEl = document.getElementById('dev-sheet-content');
1414
+ contentEl.innerHTML = renderDeveloperSheetContent(developer, t, aiDeveloper);
1415
+
1416
+ document.getElementById('dev-sheet-overlay').classList.add('open');
1417
+ document.getElementById('dev-sheet').classList.add('open');
1418
+ document.body.style.overflow = 'hidden';
1419
+
1420
+ refreshIcons();
1421
+
1422
+ requestAnimationFrame(() => {
1423
+ drawRadarChart('dev-radar-canvas', developer.categoryLevels, t);
1424
+ const developerReviews = currentStatsReviews.filter(
1425
+ (review) => review.assignedBy === developerName
1426
+ );
1427
+ drawScoreTrendChart('dev-score-trend-canvas', developerReviews);
1428
+ contentEl.querySelectorAll('.stat-bar-fill[data-target-width]').forEach((bar) => {
1429
+ setTimeout(() => { bar.style.width = bar.dataset.targetWidth; }, 50);
1430
+ });
1431
+ });
1432
+ }
1433
+
1434
+ function closeDevSheet() {
1435
+ document.getElementById('dev-sheet-overlay').classList.remove('open');
1436
+ document.getElementById('dev-sheet').classList.remove('open');
1437
+ document.body.style.overflow = '';
1438
+ }
1439
+
1440
+ function exportInsightsPdf() {
1441
+ if (!currentInsightsData || currentInsightsData.isEmpty) return;
1442
+
1443
+ const reportHtml = buildInsightsReport(currentInsightsData, t);
1444
+
1445
+ const iframe = document.createElement('iframe');
1446
+ iframe.style.position = 'fixed';
1447
+ iframe.style.right = '0';
1448
+ iframe.style.bottom = '0';
1449
+ iframe.style.width = '0';
1450
+ iframe.style.height = '0';
1451
+ iframe.style.border = 'none';
1452
+ document.body.appendChild(iframe);
1453
+
1454
+ const document_ = iframe.contentDocument || iframe.contentWindow.document;
1455
+ document_.open();
1456
+ document_.write(reportHtml);
1457
+ document_.close();
1458
+
1459
+ iframe.contentWindow.addEventListener('afterprint', () => {
1460
+ if (iframe.parentNode) document.body.removeChild(iframe);
1461
+ });
1462
+
1463
+ setTimeout(() => {
1464
+ iframe.contentWindow.print();
1465
+ setTimeout(() => {
1466
+ if (iframe.parentNode) document.body.removeChild(iframe);
1467
+ }, 60000);
1468
+ }, 250);
1469
+ }
1470
+
1471
+ async function recalculateStats() {
1472
+ if (!currentProjectPath) return;
1473
+ const button = document.getElementById('recalculate-btn');
1474
+ const progressBadge = document.getElementById('backfill-progress');
1475
+ if (button) button.disabled = true;
1476
+
1477
+ try {
1478
+ const response = await fetch(`${API_URL}/api/stats/recalculate`, {
1479
+ method: 'POST',
1480
+ headers: { 'Content-Type': 'application/json' },
1481
+ body: JSON.stringify({ path: currentProjectPath, backfill: true }),
1482
+ });
1483
+
1484
+ if (!response.ok) {
1485
+ throw new Error('Recalculation failed');
1486
+ }
1487
+
1488
+ if (progressBadge) {
1489
+ progressBadge.textContent = '...';
1490
+ progressBadge.classList.remove('hidden');
1491
+ }
1492
+ } catch (error) {
1493
+ console.error('Error recalculating stats:', error);
1494
+ if (button) button.disabled = false;
1495
+ if (progressBadge) progressBadge.classList.add('hidden');
1496
+ }
1497
+ }
1498
+ window.recalculateStats = recalculateStats;
1499
+
1500
+ function filterScoreTrend(selectedDev) {
1501
+ currentDevFilter = selectedDev;
1502
+ document.querySelectorAll('.dev-filter-btn').forEach(btn => {
1503
+ btn.classList.toggle('active', btn.dataset.dev === selectedDev);
1504
+ });
1505
+
1506
+ const filtered = selectedDev === 'all'
1507
+ ? currentStatsReviews
1508
+ : currentStatsReviews.filter(r => r.assignedBy === selectedDev);
1509
+
1510
+ drawScoreTrendChart('stats-score-trend', filtered);
1511
+ }
1512
+ window.filterScoreTrend = filterScoreTrend;
1513
+
1514
+ function renderMrItem(mr, type) {
1515
+ const mrPrefix = mr.platform === 'github' ? '#' : '!';
1516
+ const encodedMrId = encodeURIComponent(String(mr.id ?? ''));
1517
+ const threadInfo = type === 'pending-fix'
1518
+ ? `<span class="mr-threads has-open"><i data-lucide="message-circle"></i> ${t('mr.threads.openAction', { count: mr.openThreads })}</span>`
1519
+ : (type === 'pending-approval' && mr.totalWarnings > 0)
1520
+ ? `<span class="mr-threads has-warnings"><i data-lucide="alert-triangle"></i> ${t('mr.threads.warningAction', { count: mr.totalWarnings })}</span>`
1521
+ : `<span class="mr-threads all-resolved"><i data-lucide="check-circle"></i> ${t('mr.threads.resolvedAction')}</span>`;
1522
+
1523
+ const openBtn = `<a href="${sanitizeHttpUrl(mr.url)}" target="_blank" rel="noopener noreferrer" class="btn-action open" onclick="return onUsefulLinkAction()"><i data-lucide="external-link"></i> ${t('button.open')}</a>`;
1524
+ const autoFollowupChecked = mr.autoFollowup !== false ? 'checked' : '';
1525
+ const showFollowupActions = type === 'pending-fix' ||
1526
+ (type === 'pending-approval' && mr.totalWarnings > 0);
1527
+
1528
+ const actions = showFollowupActions
1529
+ ? `<label class="auto-followup-toggle" onclick="event.stopPropagation()" title="${t('button.autoFollowup')}">
1530
+ <input type="checkbox" ${autoFollowupChecked} onchange="toggleAutoFollowup('${encodedMrId}', this.checked)">
1531
+ ${t('button.autoFollowup')}
1532
+ </label>
1533
+ <button class="btn-action" onclick="triggerFollowup('${encodedMrId}')"><i data-lucide="refresh-cw"></i> ${t('button.followup')}</button>${openBtn}`
1534
+ : openBtn;
1535
+
1536
+ const statsBadges = [];
1537
+ if (mr.totalBlocking > 0) statsBadges.push(`<span class="stat-badge blocking"><i data-lucide="octagon-alert"></i> ${mr.totalBlocking}</span>`);
1538
+ if (mr.totalWarnings > 0) statsBadges.push(`<span class="stat-badge warning"><i data-lucide="alert-triangle"></i> ${mr.totalWarnings}</span>`);
1539
+ if (mr.totalFollowups > 0) statsBadges.push(`<span class="stat-badge followup"><i data-lucide="refresh-cw"></i> ${mr.totalFollowups}</span>`);
1540
+ if (mr.latestScore !== null) statsBadges.push(`<span class="stat-badge score"><i data-lucide="star"></i> ${mr.latestScore.toFixed(1)}/10</span>`);
1541
+
1542
+ const durationFormatted = mr.totalDurationMs ? formatDuration(null, null, mr.totalDurationMs) : '';
1543
+
1544
+ const assignerUsername = mr.assignment?.username || 'unknown';
1545
+ const assignerDisplay = mr.assignment?.displayName || assignerUsername;
1546
+ const assignerInitial = assignerDisplay.charAt(0).toUpperCase();
1547
+ const assignedAt = mr.assignment?.assignedAt ? formatTime(mr.assignment.assignedAt) : '';
1548
+
1549
+ const accordionId = mr.id.replace(/[^a-zA-Z0-9-]/g, '-');
1550
+
1551
+ return `
1552
+ <div class="mr-item-accordion" data-mr-id="${mr.id}">
1553
+ <div class="mr-item-header" onclick="openMrSheet('${encodedMrId}')" role="button" tabindex="0" onkeydown="activateOnKeydown(event)">
1554
+ <div class="review-status ${type === 'pending-fix' ? 'running' : (type === 'pending-approval' && mr.totalWarnings > 0) ? 'warnings' : 'completed'}"></div>
1555
+ <div class="mr-info">
1556
+ <div class="mr-title">
1557
+ <a href="${sanitizeHttpUrl(mr.url)}" target="_blank" rel="noopener noreferrer" onclick="event.stopPropagation()">${mrPrefix}${mr.mrNumber}</a> - ${escapeHtml(String(mr.title ?? ''))}
1558
+ </div>
1559
+ <div class="mr-meta">
1560
+ ${threadInfo}
1561
+ ${statsBadges.join('')}
1562
+ <span><i data-lucide="clock"></i> ${durationFormatted || '-'}</span>
1563
+ </div>
1564
+ </div>
1565
+ <div class="mr-assigner">
1566
+ <div class="mr-assigner-info">
1567
+ <span class="mr-assigner-name">${escapeHtml(assignerDisplay)}</span>
1568
+ <span class="mr-assigner-time">${assignedAt}</span>
1569
+ </div>
1570
+ <div class="mr-avatar" title="${escapeHtml(assignerDisplay)}">${escapeHtml(assignerInitial)}</div>
1571
+ </div>
1572
+ <div class="mr-toggle"><i data-lucide="chevron-down"></i></div>
1573
+ </div>
1574
+ <div class="mr-item-content" id="mr-content-${accordionId}">
1575
+ <div class="mr-details">
1576
+ <div class="mr-detail-row">
1577
+ <span class="mr-detail-label"><i data-lucide="git-branch"></i> ${t('mr.detail.source')}</span>
1578
+ <span class="mr-detail-value">${escapeHtml(String(mr.sourceBranch ?? ''))}</span>
1579
+ </div>
1580
+ <div class="mr-detail-row">
1581
+ <span class="mr-detail-label"><i data-lucide="git-merge"></i> ${t('mr.detail.target')}</span>
1582
+ <span class="mr-detail-value">${escapeHtml(String(mr.targetBranch ?? ''))}</span>
1583
+ </div>
1584
+ <div class="mr-detail-row">
1585
+ <span class="mr-detail-label"><i data-lucide="calendar"></i> ${t('mr.detail.created')}</span>
1586
+ <span class="mr-detail-value">${formatTime(mr.createdAt)}</span>
1587
+ </div>
1588
+ ${mr.lastReviewAt ? `
1589
+ <div class="mr-detail-row">
1590
+ <span class="mr-detail-label"><i data-lucide="file-search"></i> ${t('mr.detail.lastReview')}</span>
1591
+ <span class="mr-detail-value">${formatTime(mr.lastReviewAt)}</span>
1592
+ </div>
1593
+ ` : ''}
1594
+ ${mr.reviews?.length ? `
1595
+ <div class="mr-reviews-history">
1596
+ <div class="mr-detail-label"><i data-lucide="history"></i> ${t('mr.detail.history', { count: mr.reviews.length })}</div>
1597
+ <div class="mr-reviews-list">
1598
+ ${mr.reviews.slice(-5).reverse().map(r => `
1599
+ <div class="mr-review-event ${r.type}">
1600
+ <span class="review-event-type">${r.type === 'review' ? t('review.type.review') : t('review.type.followup')}</span>
1601
+ <span class="review-event-time">${formatTime(r.timestamp)}</span>
1602
+ ${r.score !== null ? `<span class="review-event-score">${r.score}/10</span>` : ''}
1603
+ ${r.blocking > 0 ? `<span class="review-event-blocking">${t('mr.review.blocking', { count: r.blocking })}</span>` : ''}
1604
+ </div>
1605
+ `).join('')}
1606
+ </div>
1607
+ </div>
1608
+ ` : ''}
1609
+ </div>
1610
+ <div class="mr-item-actions" onclick="event.stopPropagation()">
1611
+ ${actions}
1612
+ </div>
1613
+ </div>
1614
+ </div>
1615
+ `;
1616
+ }
1617
+
1618
+ function renderNowLane(mr) {
1619
+ const mrPrefix = mr.platform === 'github' ? '#' : '!';
1620
+ const assigneeUsername = mr.assignment?.username || 'unknown';
1621
+ const assigneeDisplay = mr.assignment?.displayName || assigneeUsername;
1622
+ const ownerLabel = t('lane.owner', { owner: assigneeDisplay });
1623
+ const qualityScore = typeof mr.latestScore === 'number' ? mr.latestScore : null;
1624
+ const qualityProgress = getQualityProgress(qualityScore, QUALITY_TARGET_SCORE);
1625
+ const qualityTarget = qualityProgress.qualityTarget;
1626
+ const qualityDelta = qualityProgress.targetDelta;
1627
+ const qualityState = qualityScore === null
1628
+ ? 'unknown'
1629
+ : qualityScore >= QUALITY_TARGET_SCORE
1630
+ ? 'excellent'
1631
+ : qualityScore >= 6
1632
+ ? 'warning'
1633
+ : 'critical';
1634
+ const qualityLabel = qualityScore === null
1635
+ ? t('quality.notAvailable')
1636
+ : qualityScore >= 10
1637
+ ? t('quality.perfect')
1638
+ : qualityScore >= QUALITY_TARGET_SCORE
1639
+ ? t('quality.onTarget')
1640
+ : qualityScore >= 6
1641
+ ? t('quality.belowTarget')
1642
+ : t('quality.lovableQuality');
1643
+ const deltaLabel = qualityProgress.targetDeltaLabel;
1644
+ const qualityTrend = getQualityTrend(mr);
1645
+ const qualityTrendLabel = qualityTrend.direction === 'up'
1646
+ ? t('quality.trendUp', { delta: qualityTrend.label })
1647
+ : qualityTrend.direction === 'down'
1648
+ ? t('quality.trendDown', { delta: qualityTrend.label })
1649
+ : qualityTrend.direction === 'flat'
1650
+ ? t('quality.trendFlat')
1651
+ : t('quality.trendUnknown');
1652
+ const qualityTrendIcon = qualityTrend.direction === 'up'
1653
+ ? 'trending-up'
1654
+ : qualityTrend.direction === 'down'
1655
+ ? 'trending-down'
1656
+ : qualityTrend.direction === 'flat'
1657
+ ? 'minus'
1658
+ : 'circle-help';
1659
+
1660
+ return `
1661
+ <div class="now-lane">
1662
+ <div class="now-lane-copy">
1663
+ <span class="now-lane-kicker">${t('lane.nowKicker')}</span>
1664
+ <div class="now-lane-title">${mrPrefix}${mr.mrNumber} - ${escapeHtml(String(mr.title ?? ''))}</div>
1665
+ <div class="now-lane-meta">${t('lane.nowMeta', { count: mr.openThreads })}</div>
1666
+ <div class="now-lane-owner">${escapeHtml(ownerLabel)}</div>
1667
+ </div>
1668
+ <div class="now-lane-quality ${qualityState}">
1669
+ <span class="quality-kicker">${t('quality.kicker')}</span>
1670
+ <div class="quality-main">
1671
+ <span class="quality-score">${qualityScore !== null ? qualityScore.toFixed(1) : '-'}</span>
1672
+ <span class="quality-over">/10</span>
1673
+ </div>
1674
+ <div class="quality-target">${t('quality.target', { target: qualityTarget })} ${deltaLabel ? `(${deltaLabel})` : ''}</div>
1675
+ <div class="quality-progress">
1676
+ <div class="quality-progress-track">
1677
+ <div class="quality-progress-fill ${qualityState}" style="width: ${qualityProgress.clampedProgressPercent}%"></div>
1678
+ </div>
1679
+ <span class="quality-progress-value">${qualityProgress.progressPercent !== null ? `${qualityProgress.clampedProgressPercent.toFixed(0)}%` : '-'}</span>
1680
+ </div>
1681
+ <div class="quality-label">${qualityLabel}</div>
1682
+ <div class="quality-trend ${qualityTrend.direction}">
1683
+ <i data-lucide="${qualityTrendIcon}"></i>
1684
+ <span>${qualityTrendLabel}</span>
1685
+ </div>
1686
+ <div class="now-lane-actions">
1687
+ <button class="btn-action" onclick="triggerFollowup('${encodeURIComponent(String(mr.id ?? ''))}')"><i data-lucide="refresh-cw"></i> ${t('button.followup')}</button>
1688
+ <a href="${sanitizeHttpUrl(mr.url)}" target="_blank" rel="noopener noreferrer" class="btn-action open" onclick="return onUsefulLinkAction()"><i data-lucide="external-link"></i> ${t('button.open')}</a>
1689
+ </div>
1690
+ </div>
1691
+ </div>
1692
+ `;
1693
+ }
1694
+
1695
+ function renderQueueLanes(queueLanesModel) {
1696
+ const nowLaneContent = queueLanesModel.nowLaneItem
1697
+ ? renderNowLane(queueLanesModel.nowLaneItem)
1698
+ : `<div class="empty-state">${t('queueLane.emptyNow')}</div>`;
1699
+ const needsFixContent = queueLanesModel.needsFixItems.length > 0
1700
+ ? renderCollapsibleList(
1701
+ queueLanesModel.needsFixItems.map((mergeRequest) => renderMrItem(mergeRequest, 'pending-fix')),
1702
+ 'needs-fix', t
1703
+ )
1704
+ : `<div class="empty-state">${t('queueLane.emptyNeedsFix')}</div>`;
1705
+ const readyToApproveContent = queueLanesModel.readyToApproveItems.length > 0
1706
+ ? renderCollapsibleList(
1707
+ queueLanesModel.readyToApproveItems.map((mergeRequest) => renderMrItem(mergeRequest, 'pending-approval')),
1708
+ 'ready-to-approve', t
1709
+ )
1710
+ : `<div class="empty-state">${t('queueLane.emptyReadyToApprove')}</div>`;
1711
+
1712
+ return `
1713
+ <div class="queue-lanes-grid">
1714
+ <div class="queue-lane">
1715
+ <div class="queue-lane-header">
1716
+ <span class="queue-lane-title">${t('queueLane.now')}</span>
1717
+ <span class="queue-lane-count">${queueLanesModel.nowLaneCount}</span>
1718
+ </div>
1719
+ <div class="queue-lane-body">${nowLaneContent}</div>
1720
+ </div>
1721
+ <div class="queue-lane">
1722
+ <div class="queue-lane-header">
1723
+ <span class="queue-lane-title">${t('queueLane.needsFix')}</span>
1724
+ <span class="queue-lane-count">${queueLanesModel.needsFixCount}</span>
1725
+ </div>
1726
+ <div class="queue-lane-body">${needsFixContent}</div>
1727
+ </div>
1728
+ <div class="queue-lane">
1729
+ <div class="queue-lane-header">
1730
+ <span class="queue-lane-title">${t('queueLane.readyToApprove')}</span>
1731
+ <span class="queue-lane-count">${queueLanesModel.readyToApproveCount}</span>
1732
+ </div>
1733
+ <div class="queue-lane-body">${readyToApproveContent}</div>
1734
+ </div>
1735
+ </div>
1736
+ `;
1737
+ }
1738
+
1739
+ function toggleMrAccordion(accordionId) {
1740
+ const content = document.getElementById(`mr-content-${accordionId}`);
1741
+ const accordion = content?.closest('.mr-item-accordion');
1742
+ if (!content || !accordion) return;
1743
+
1744
+ const isOpen = accordion.classList.contains('open');
1745
+
1746
+ document.querySelectorAll('.mr-item-accordion.open').forEach(el => {
1747
+ if (el !== accordion) {
1748
+ el.classList.remove('open');
1749
+ }
1750
+ });
1751
+
1752
+ if (isOpen) {
1753
+ accordion.classList.remove('open');
1754
+ } else {
1755
+ accordion.classList.add('open');
1756
+ refreshIcons();
1757
+ }
1758
+ }
1759
+
1760
+ function updateMrTrackingUI() {
1761
+ const pendingFixSection = document.getElementById('pending-fix-section');
1762
+ const pendingFixEl = document.getElementById('pending-fix-reviews');
1763
+ const pendingApprovalSection = document.getElementById('pending-approval-section');
1764
+ const pendingFixCount = document.getElementById('pending-fix-count');
1765
+ const pendingApprovalCount = document.getElementById('pending-approval-count');
1766
+
1767
+ pendingFixSection.classList.remove('hidden');
1768
+ const rankedPendingFix = rankPendingFixForNowLane(currentData.pendingFix);
1769
+ const queueLanesModel = buildQueueLanesModel(rankedPendingFix, currentData.pendingApproval);
1770
+
1771
+ mrDataStore.clear();
1772
+ if (queueLanesModel.nowLaneItem) mrDataStore.set(queueLanesModel.nowLaneItem.id, { ...queueLanesModel.nowLaneItem, _sheetType: 'pending-fix' });
1773
+ queueLanesModel.needsFixItems.forEach(mr => mrDataStore.set(mr.id, { ...mr, _sheetType: 'pending-fix' }));
1774
+ queueLanesModel.readyToApproveItems.forEach(mr => mrDataStore.set(mr.id, { ...mr, _sheetType: 'pending-approval' }));
1775
+ sessionMetrics = updatePriorityItemTracking(sessionMetrics, {
1776
+ nowLaneItemId: queueLanesModel.nowLaneItem?.id ?? null,
1777
+ pendingFixIds: rankedPendingFix.map((mergeRequest) => String(mergeRequest.id)),
1778
+ nowMs: Date.now(),
1779
+ });
1780
+ updateSessionMetricsUI();
1781
+ if (queueLanesModel.nowLaneCount + queueLanesModel.needsFixCount + queueLanesModel.readyToApproveCount === 0) {
1782
+ pendingFixEl.innerHTML = `<div class="empty-state">${loadingState.mrTracking ? t('loading.section') : t('empty.pendingFix')}</div>`;
1783
+ } else {
1784
+ pendingFixEl.innerHTML = renderQueueLanes(queueLanesModel);
1785
+ }
1786
+ pendingFixCount.textContent = String(queueLanesModel.nowLaneCount + queueLanesModel.needsFixCount + queueLanesModel.readyToApproveCount);
1787
+ pendingFixCount.classList.remove('hidden');
1788
+
1789
+ pendingApprovalSection.classList.add('hidden');
1790
+ pendingApprovalCount.classList.add('hidden');
1791
+
1792
+ refreshIcons();
1793
+ }
1794
+
1795
+ async function fetchMrTracking() {
1796
+ setLoadingFlag('mrTracking', true);
1797
+ if (!currentProjectPath) {
1798
+ currentData.pendingFix = [];
1799
+ currentData.pendingApproval = [];
1800
+ document.getElementById('pending-fix-section').classList.add('hidden');
1801
+ document.getElementById('pending-approval-section').classList.add('hidden');
1802
+ setLoadingFlag('mrTracking', false);
1803
+ return;
1804
+ }
1805
+
1806
+ try {
1807
+ const response = await fetch(`${API_URL}/api/mr-tracking?path=${encodeURIComponent(currentProjectPath)}`);
1808
+ const data = await response.json();
1809
+ if (data.success) {
1810
+ currentData.pendingFix = data.pendingFix || [];
1811
+ currentData.pendingApproval = data.pendingApproval || [];
1812
+ }
1813
+ updateMrTrackingUI();
1814
+ } catch (error) {
1815
+ console.error('Error fetching MR tracking:', error);
1816
+ } finally {
1817
+ setLoadingFlag('mrTracking', false);
1818
+ }
1819
+ }
1820
+
1821
+ async function triggerFollowup(encodedMrId) {
1822
+ const mrId = safeDecodeURIComponent(encodedMrId);
1823
+ trackUsefulAction('followup');
1824
+ try {
1825
+ const response = await fetch(`${API_URL}/api/mr-tracking/followup`, {
1826
+ method: 'POST',
1827
+ headers: { 'Content-Type': 'application/json' },
1828
+ body: JSON.stringify({ mrId, projectPath: currentProjectPath })
1829
+ });
1830
+ const data = await response.json();
1831
+ if (data.success) {
1832
+ console.log('Followup triggered for MR:', mrId);
1833
+ showToast(t('notify.followupRequested', { mrNumber: String(data.mrNumber ?? '?') }), 'info');
1834
+ } else {
1835
+ alert(t('error.triggerFollowup') + ': ' + data.error);
1836
+ }
1837
+ } catch (error) {
1838
+ console.error('Error triggering followup:', error);
1839
+ alert(t('error.triggerFollowup'));
1840
+ }
1841
+ }
1842
+
1843
+ async function toggleAutoFollowup(encodedMrId, enabled) {
1844
+ const mrId = safeDecodeURIComponent(encodedMrId);
1845
+ try {
1846
+ const response = await fetch(`${API_URL}/api/mr-tracking/auto-followup`, {
1847
+ method: 'POST',
1848
+ headers: { 'Content-Type': 'application/json' },
1849
+ body: JSON.stringify({ mrId, projectPath: currentProjectPath, enabled })
1850
+ });
1851
+ const data = await response.json();
1852
+ if (!data.success) {
1853
+ alert(t('error.toggleAutoFollowup') + ': ' + data.error);
1854
+ }
1855
+ } catch (error) {
1856
+ console.error('Error toggling auto-followup:', error);
1857
+ alert(t('error.toggleAutoFollowup'));
1858
+ }
1859
+ }
1860
+
1861
+ async function approveMr(encodedMrId) {
1862
+ const mrId = safeDecodeURIComponent(encodedMrId);
1863
+ if (!confirm(t('confirm.approveMr', { label: getMrLabel() }))) return;
1864
+ trackUsefulAction('approve');
1865
+
1866
+ try {
1867
+ const response = await fetch(`${API_URL}/api/mr-tracking/approve`, {
1868
+ method: 'POST',
1869
+ headers: { 'Content-Type': 'application/json' },
1870
+ body: JSON.stringify({ mrId, projectPath: currentProjectPath })
1871
+ });
1872
+ const data = await response.json();
1873
+ if (data.success) {
1874
+ currentData.pendingApproval = currentData.pendingApproval.filter(mr => mr.id !== mrId);
1875
+ updateMrTrackingUI();
1876
+ } else {
1877
+ alert(t('error.approveMr') + ': ' + data.error);
1878
+ }
1879
+ } catch (error) {
1880
+ console.error('Error approving MR:', error);
1881
+ alert(t('error.approveMr'));
1882
+ }
1883
+ }
1884
+
1885
+ async function syncGitLabThreads() {
1886
+ if (!currentProjectPath) {
1887
+ alert(t('error.projectNotLoaded'));
1888
+ return;
1889
+ }
1890
+ trackUsefulAction('syncThreads');
1891
+
1892
+ const btn = document.getElementById('sync-threads-btn');
1893
+ const iconEl = btn.querySelector('i');
1894
+
1895
+ btn.disabled = true;
1896
+ iconEl.classList.add('spinning');
1897
+
1898
+ try {
1899
+ const response = await fetch(`${API_URL}/api/mr-tracking/sync`, {
1900
+ method: 'POST',
1901
+ headers: { 'Content-Type': 'application/json' },
1902
+ body: JSON.stringify({ projectPath: currentProjectPath })
1903
+ });
1904
+ const data = await response.json();
1905
+ if (data.success) {
1906
+ await fetchMrTracking();
1907
+ console.log('Threads synchronized successfully');
1908
+ } else {
1909
+ alert(t('error.syncThreads') + ': ' + data.error);
1910
+ }
1911
+ } catch (error) {
1912
+ console.error('Error syncing threads:', error);
1913
+ alert(t('error.syncThreads'));
1914
+ } finally {
1915
+ btn.disabled = false;
1916
+ iconEl.classList.remove('spinning');
1917
+ }
1918
+ }
1919
+
1920
+ async function fetchLogs() {
1921
+ try {
1922
+ const response = await fetch(`${API_URL}/api/logs`);
1923
+ const data = await response.json();
1924
+ currentData.logs = data.logs || [];
1925
+ updateLogs();
1926
+ } catch (error) {
1927
+ console.error('Error fetching logs:', error);
1928
+ }
1929
+ }
1930
+
1931
+ function handleProgressUpdate(message) {
1932
+ const { jobId, progress } = message;
1933
+ const review = currentData.activeReviews.find(r => r.id === jobId);
1934
+ if (review) {
1935
+ review.progress = progress;
1936
+ updateUI();
1937
+ }
1938
+ }
1939
+
1940
+ function handleLogMessage(log) {
1941
+ currentData.logs.push(log);
1942
+ if (currentData.logs.length > 200) currentData.logs.shift();
1943
+ if (logsVisible) updateLogs();
1944
+ }
1945
+
1946
+ function connectWebSocket() {
1947
+ if (ws?.readyState === WebSocket.OPEN) return;
1948
+
1949
+ updateConnectionStatus('connecting', 'status.connecting');
1950
+
1951
+ try {
1952
+ ws = new WebSocket(WS_URL);
1953
+
1954
+ ws.onopen = () => {
1955
+ wsConnected = true;
1956
+ reconnectAttempts = 0;
1957
+ updateConnectionStatus('online', 'connection.online');
1958
+ };
1959
+
1960
+ ws.onmessage = (event) => {
1961
+ try {
1962
+ const message = JSON.parse(event.data);
1963
+ switch (message.type) {
1964
+ case 'init':
1965
+ case 'state':
1966
+ console.log(`[WS] ${message.type}: ${message.activeReviews?.length || 0} active reviews`, message.activeReviews);
1967
+ currentData.activeReviews = message.activeReviews || [];
1968
+ currentData.recentReviews = message.recentReviews || [];
1969
+ dispatchReviewNotifications(currentData.activeReviews, currentData.recentReviews);
1970
+ updateUI();
1971
+ if (message.type === 'state') {
1972
+ fetchMrTracking();
1973
+ }
1974
+ break;
1975
+ case 'progress':
1976
+ handleProgressUpdate(message);
1977
+ break;
1978
+ case 'log':
1979
+ handleLogMessage(message.log);
1980
+ break;
1981
+ case 'backfill-progress': {
1982
+ const progressBadge = document.getElementById('backfill-progress');
1983
+ if (progressBadge) {
1984
+ progressBadge.textContent = t('stats.backfillProgress', { completed: message.data.completed, total: message.data.total });
1985
+ progressBadge.classList.remove('hidden');
1986
+ }
1987
+ break;
1988
+ }
1989
+ case 'backfill-complete': {
1990
+ const completeBadge = document.getElementById('backfill-progress');
1991
+ const recalcButton = document.getElementById('recalculate-btn');
1992
+ if (completeBadge) {
1993
+ completeBadge.textContent = t('stats.backfillComplete');
1994
+ setTimeout(() => completeBadge.classList.add('hidden'), 3000);
1995
+ }
1996
+ if (recalcButton) recalcButton.disabled = false;
1997
+ fetchProjectStats();
1998
+ fetchTeamInsights();
1999
+ break;
2000
+ }
2001
+ case 'budget-status': {
2002
+ const statusViewModel = parseBudgetStatusMessage(message);
2003
+ if (statusViewModel) {
2004
+ const budgetTile = document.getElementById('budget-tile');
2005
+ if (budgetTile) {
2006
+ budgetTile.innerHTML = renderBudgetTile(statusViewModel);
2007
+ }
2008
+ }
2009
+ break;
2010
+ }
2011
+ case 'budget-exceeded': {
2012
+ const payload = parseBudgetExceededMessage(message);
2013
+ if (payload) {
2014
+ showToast(
2015
+ `Budget dépassé — review !${payload.mrNumber} bloquée (${payload.consumedUsd.toFixed(2)}$ / ${payload.limitUsd}$)`,
2016
+ 'error',
2017
+ );
2018
+ }
2019
+ break;
2020
+ }
2021
+ case 'pong':
2022
+ break;
2023
+ }
2024
+ } catch (e) {
2025
+ console.error('WebSocket message error:', e);
2026
+ }
2027
+ };
2028
+
2029
+ ws.onclose = () => {
2030
+ wsConnected = false;
2031
+ ws = null;
2032
+ updateConnectionStatus('offline', 'connection.offline');
2033
+ if (reconnectAttempts < MAX_RECONNECT_ATTEMPTS) {
2034
+ reconnectAttempts++;
2035
+ setTimeout(connectWebSocket, RECONNECT_DELAY);
2036
+ }
2037
+ };
2038
+
2039
+ ws.onerror = (error) => console.error('WebSocket error:', error);
2040
+
2041
+ } catch (error) {
2042
+ console.error('WebSocket creation failed:', error);
2043
+ wsConnected = false;
2044
+ }
2045
+ }
2046
+
2047
+ setInterval(() => {
2048
+ if (ws?.readyState === WebSocket.OPEN) {
2049
+ ws.send(JSON.stringify({ type: 'ping' }));
2050
+ }
2051
+ }, 30000);
2052
+
2053
+ async function fetchStatus() {
2054
+ setLoadingFlag('status', true);
2055
+ try {
2056
+ const response = await fetch(`${API_URL}/api/status`);
2057
+ const data = await response.json();
2058
+ currentData.activeReviews = data.jobs?.active || [];
2059
+ currentData.recentReviews = data.jobs?.recent || [];
2060
+ dispatchReviewNotifications(currentData.activeReviews, currentData.recentReviews);
2061
+ const versionUpdateArea = document.getElementById('version-update-area');
2062
+ if (versionUpdateArea) {
2063
+ versionUpdateArea.innerHTML = renderVersionUpdateArea(
2064
+ { currentVersion: data.version || '?', updateAvailable: data.updateAvailable || false, latestVersion: data.latestVersion || null },
2065
+ t
2066
+ );
2067
+ if (typeof lucide !== 'undefined') lucide.createIcons();
2068
+ }
2069
+ if (!wsConnected) updateConnectionStatus('online', 'connection.onlinePolling');
2070
+ updateUI();
2071
+ } catch (error) {
2072
+ if (!wsConnected) {
2073
+ updateConnectionStatus('offline', 'connection.offline');
2074
+ document.getElementById('running-count').textContent = '-';
2075
+ document.getElementById('queued-count').textContent = '-';
2076
+ document.getElementById('completed-count').textContent = '-';
2077
+ document.getElementById('active-reviews').innerHTML = `<div class="empty-state">${t('empty.serverNotAccessible')}</div>`;
2078
+ document.getElementById('recent-reviews').innerHTML = `<div class="empty-state">${t('empty.serverNotAccessible')}</div>`;
2079
+ }
2080
+ } finally {
2081
+ hasLoadedStatusOnce = true;
2082
+ setLoadingFlag('status', false);
2083
+ }
2084
+ }
2085
+
2086
+ async function loadModelSetting() {
2087
+ try {
2088
+ const response = await fetch(`${API_URL}/api/settings/model`);
2089
+ const data = await response.json();
2090
+ const select = document.getElementById('model-select');
2091
+ if (select && data.model) {
2092
+ select.value = data.model;
2093
+ }
2094
+ } catch (error) {
2095
+ console.error('Error loading model setting:', error);
2096
+ }
2097
+ }
2098
+
2099
+ async function changeModel(model) {
2100
+ try {
2101
+ const response = await fetch(`${API_URL}/api/settings/model`, {
2102
+ method: 'POST',
2103
+ headers: { 'Content-Type': 'application/json' },
2104
+ body: JSON.stringify({ model })
2105
+ });
2106
+ const data = await response.json();
2107
+ if (data.success) {
2108
+ console.log('Model changed to:', model);
2109
+ }
2110
+ } catch (error) {
2111
+ console.error('Error changing model:', error);
2112
+ }
2113
+ }
2114
+
2115
+ async function loadLanguageSetting() {
2116
+ try {
2117
+ const response = await fetch(`${API_URL}/api/settings`);
2118
+ const data = await response.json();
2119
+ const select = document.getElementById('language-select');
2120
+ if (select && data.language) {
2121
+ select.value = data.language;
2122
+ setLanguage(data.language);
2123
+ document.documentElement.lang = data.language;
2124
+ renderStaticLabels();
2125
+ }
2126
+ } catch (error) {
2127
+ console.error('Error loading language setting:', error);
2128
+ }
2129
+ }
2130
+
2131
+ async function changeLanguage(language) {
2132
+ setLanguage(language);
2133
+ document.documentElement.lang = language;
2134
+ renderStaticLabels();
2135
+ // Re-render all dynamic content
2136
+ updateUI();
2137
+ updateLogs();
2138
+ updateReviewFilesUI();
2139
+ updateMrTrackingUI();
2140
+ updateGitCliUI();
2141
+ // Also persist on server
2142
+ try {
2143
+ const response = await fetch(`${API_URL}/api/settings/language`, {
2144
+ method: 'POST',
2145
+ headers: { 'Content-Type': 'application/json' },
2146
+ body: JSON.stringify({ language })
2147
+ });
2148
+ const data = await response.json();
2149
+ if (data.success) {
2150
+ console.log('Language changed to:', language);
2151
+ }
2152
+ } catch (error) {
2153
+ console.error('Error changing language:', error);
2154
+ }
2155
+ }
2156
+
2157
+ let currentProjectConfig = null;
2158
+ let currentProjectPath = null;
2159
+
2160
+ function getStoredProjects() {
2161
+ try {
2162
+ return JSON.parse(localStorage.getItem(STORAGE_KEY_PROJECTS) || '[]');
2163
+ } catch {
2164
+ return [];
2165
+ }
2166
+ }
2167
+
2168
+ function saveProjects(projects) {
2169
+ localStorage.setItem(STORAGE_KEY_PROJECTS, JSON.stringify(projects));
2170
+ }
2171
+
2172
+ function addProjectToHistory(path) {
2173
+ const projects = getStoredProjects();
2174
+ const filtered = projects.filter(p => p !== path);
2175
+ filtered.unshift(path);
2176
+ saveProjects(filtered.slice(0, 10));
2177
+ updateProjectSelect();
2178
+ }
2179
+
2180
+ function removeProjectFromHistory(path) {
2181
+ const projects = getStoredProjects().filter(p => p !== path);
2182
+ saveProjects(projects);
2183
+ updateProjectSelect();
2184
+ }
2185
+
2186
+ function updateProjectSelect() {
2187
+ const select = document.getElementById('project-select');
2188
+ const projects = getStoredProjects();
2189
+ const current = localStorage.getItem(STORAGE_KEY_CURRENT) || '';
2190
+
2191
+ select.innerHTML = `<option value="">${t('project.selectPlaceholder')}</option>`;
2192
+ for (const path of projects) {
2193
+ const shortName = path.split('/').slice(-2).join('/');
2194
+ const option = document.createElement('option');
2195
+ option.value = path;
2196
+ option.textContent = shortName;
2197
+ option.title = path;
2198
+ if (path === current) option.selected = true;
2199
+ select.appendChild(option);
2200
+ }
2201
+ }
2202
+
2203
+ function onProjectSelect(path) {
2204
+ if (path) {
2205
+ document.getElementById('project-path-input').value = '';
2206
+ loadProjectConfigFromPath(path);
2207
+ }
2208
+ }
2209
+
2210
+ async function loadProjectConfig() {
2211
+ const input = document.getElementById('project-path-input');
2212
+ const select = document.getElementById('project-select');
2213
+ const projectPath = input.value.trim() || select.value;
2214
+
2215
+ if (!projectPath) {
2216
+ showConfigStatus(t('error.selectOrEnterPath'), 'error');
2217
+ return;
2218
+ }
2219
+
2220
+ await loadProjectConfigFromPath(projectPath);
2221
+ }
2222
+
2223
+ async function loadProjectConfigFromPath(projectPath) {
2224
+ const status = document.getElementById('config-status');
2225
+ const info = document.getElementById('config-info');
2226
+
2227
+ showConfigStatus(t('status.loading'), 'loading');
2228
+ info.classList.add('hidden');
2229
+
2230
+ try {
2231
+ const response = await fetch(`${API_URL}/api/project-config?path=${encodeURIComponent(projectPath)}`);
2232
+ const data = await response.json();
2233
+
2234
+ if (data.success) {
2235
+ currentProjectConfig = data.config;
2236
+ currentProjectPath = projectPath;
2237
+
2238
+ addProjectToHistory(projectPath);
2239
+ localStorage.setItem(STORAGE_KEY_CURRENT, projectPath);
2240
+
2241
+ document.getElementById('project-select').value = projectPath;
2242
+ document.getElementById('project-path-input').value = '';
2243
+
2244
+ const shortName = projectPath.split('/').slice(-2).join('/');
2245
+ showConfigStatus(`<i data-lucide="check-circle"></i> ${escapeHtml(shortName)}`, 'success');
2246
+ refreshIcons();
2247
+
2248
+ if (data.config.defaultModel) {
2249
+ const modelSelect = document.getElementById('model-select');
2250
+ if (modelSelect) {
2251
+ modelSelect.value = data.config.defaultModel;
2252
+ changeModel(data.config.defaultModel);
2253
+ }
2254
+ }
2255
+
2256
+ activePlatform = data.config.gitlab ? 'gitlab' : (data.config.github ? 'github' : null);
2257
+ updateGitCliUI();
2258
+
2259
+ fetchReviewFiles();
2260
+ fetchProjectStats();
2261
+ fetchMrTracking();
2262
+ fetchTeamInsights();
2263
+ refreshTokenUsageTile();
2264
+
2265
+ document.getElementById('stats-section').classList.remove('hidden');
2266
+ document.getElementById('team-section').classList.remove('hidden');
2267
+ document.getElementById('token-usage-section').classList.remove('hidden');
2268
+
2269
+ const platformIcon = activePlatform === 'gitlab' ? '<i data-lucide="gitlab"></i> GitLab' : '<i data-lucide="github"></i> GitHub';
2270
+ info.innerHTML = `
2271
+ <span>${platformIcon}</span>
2272
+ <span><i data-lucide="bot"></i> ${escapeHtml(String(data.config.defaultModel || t('status.undefined')))}</span>
2273
+ <span><i data-lucide="file-text"></i> ${escapeHtml(String(data.config.reviewSkill ?? ''))}</span>
2274
+ <span><i data-lucide="refresh-cw"></i> ${escapeHtml(String(data.config.reviewFollowupSkill ?? ''))}</span>
2275
+ `;
2276
+ info.classList.remove('hidden');
2277
+ refreshIcons();
2278
+ } else {
2279
+ showConfigStatus('<i data-lucide="x-circle"></i> ' + escapeHtml(String(data.error ?? '')), 'error');
2280
+ refreshIcons();
2281
+ }
2282
+ } catch (error) {
2283
+ showConfigStatus(`<i data-lucide="x-circle"></i> ${t('error.loadingConfig')}`, 'error');
2284
+ refreshIcons();
2285
+ console.error('Error loading project config:', error);
2286
+ }
2287
+ }
2288
+
2289
+ function showConfigStatus(text, type) {
2290
+ const status = document.getElementById('config-status');
2291
+ status.innerHTML = text;
2292
+ status.className = `config-status ${type}`;
2293
+ status.classList.remove('hidden');
2294
+ refreshIcons();
2295
+ }
2296
+
2297
+ function removeCurrentProject() {
2298
+ const select = document.getElementById('project-select');
2299
+ const path = select.value;
2300
+ if (!path) {
2301
+ showConfigStatus(t('project.noProjectSelected'), 'error');
2302
+ return;
2303
+ }
2304
+ const shortName = path.split('/').slice(-2).join('/');
2305
+ if (confirm(t('confirm.removeProject', { name: shortName }))) {
2306
+ removeProjectFromHistory(path);
2307
+ localStorage.removeItem(STORAGE_KEY_CURRENT);
2308
+ currentProjectPath = null;
2309
+ currentProjectConfig = null;
2310
+ document.getElementById('config-info').classList.add('hidden');
2311
+ showConfigStatus(t('project.removed'), 'success');
2312
+ }
2313
+ }
2314
+
2315
+ async function syncServerRepositories() {
2316
+ try {
2317
+ const response = await fetch(`${API_URL}/api/repositories`);
2318
+ const data = await response.json();
2319
+ if (!data.repositories) return;
2320
+
2321
+ const stored = getStoredProjects();
2322
+ for (const repository of data.repositories) {
2323
+ if (repository.enabled && !stored.includes(repository.localPath)) {
2324
+ stored.push(repository.localPath);
2325
+ }
2326
+ }
2327
+ saveProjects(stored);
2328
+ updateProjectSelect();
2329
+ } catch {
2330
+ // Server unreachable — use localStorage only
2331
+ }
2332
+ }
2333
+
2334
+ async function initProjectLoader() {
2335
+ await syncServerRepositories();
2336
+ updateProjectSelect();
2337
+ const lastProject = localStorage.getItem(STORAGE_KEY_CURRENT);
2338
+ if (lastProject) {
2339
+ loadProjectConfigFromPath(lastProject);
2340
+ } else {
2341
+ const storedProjects = getStoredProjects();
2342
+ if (storedProjects.length > 0) {
2343
+ loadProjectConfigFromPath(storedProjects[0]);
2344
+ } else {
2345
+ document.getElementById('recent-reviews').innerHTML =
2346
+ `<div class="empty-state">${t('empty.reviewsNoProject')}</div>`;
2347
+ document.getElementById('project-stats').innerHTML =
2348
+ `<div class="empty-state">${t('empty.statsNoProject')}</div>`;
2349
+ }
2350
+ }
2351
+ }
2352
+
2353
+ function getMrLabel(platform = activePlatform) {
2354
+ return platform === 'github' ? 'PR' : 'MR';
2355
+ }
2356
+
2357
+ let cancelModalJobId = null;
2358
+
2359
+ function showCancelModal(encodedJobId, mrNumber, jobType) {
2360
+ cancelModalJobId = safeDecodeURIComponent(encodedJobId);
2361
+ const typeLabel = jobType === 'followup' ? t('review.type.followup').toLowerCase() : t('review.type.review').toLowerCase();
2362
+ document.getElementById('cancel-modal-title').textContent = t('modal.cancel.title', { type: typeLabel, label: getMrLabel(), number: mrNumber });
2363
+ const modal = document.getElementById('cancel-modal');
2364
+ modal.classList.remove('hidden');
2365
+ requestAnimationFrame(() => modal.classList.add('visible'));
2366
+ }
2367
+
2368
+ function closeCancelModal(event) {
2369
+ if (event && event.target !== event.currentTarget) return;
2370
+ const modal = document.getElementById('cancel-modal');
2371
+ modal.classList.remove('visible');
2372
+ setTimeout(() => modal.classList.add('hidden'), 200);
2373
+ cancelModalJobId = null;
2374
+ }
2375
+
2376
+ async function confirmCancelReview() {
2377
+ if (!cancelModalJobId) return;
2378
+ trackUsefulAction('cancelReview');
2379
+
2380
+ const jobId = cancelModalJobId;
2381
+ closeCancelModal();
2382
+
2383
+ try {
2384
+ const response = await fetch(`${API_URL}/api/reviews/cancel/${encodeURIComponent(jobId)}`, {
2385
+ method: 'POST',
2386
+ headers: { 'Content-Type': 'application/json' },
2387
+ body: JSON.stringify({
2388
+ projectPath: currentProjectPath || undefined,
2389
+ mrId: jobId,
2390
+ }),
2391
+ });
2392
+ const data = await response.json();
2393
+
2394
+ if (data.success) {
2395
+ const card = document.querySelector(`.review-item[data-job-id="${jobId}"]`);
2396
+ if (card) card.remove();
2397
+ showToast(t('success.reviewCancelled'), 'success');
2398
+ fetchStatus();
2399
+ } else if (data.status === 'already-completed') {
2400
+ showToast(t('success.reviewAlreadyCompleted'), 'info');
2401
+ fetchStatus();
2402
+ } else {
2403
+ showToast(data.error || t('error.cancelReview'), 'error');
2404
+ }
2405
+ } catch (error) {
2406
+ console.error('Error cancelling review:', error);
2407
+ showToast(t('error.cancelReview'), 'error');
2408
+ }
2409
+ }
2410
+
2411
+ function showToast(message, type) {
2412
+ const container = document.getElementById('toast-container');
2413
+ const iconName = type === 'success' ? 'check-circle' : type === 'info' ? 'info' : 'alert-circle';
2414
+ const toast = document.createElement('div');
2415
+ toast.className = `toast ${type}`;
2416
+ toast.innerHTML = `<i data-lucide="${iconName}"></i> ${escapeHtml(message)}`;
2417
+ container.appendChild(toast);
2418
+ refreshIcons();
2419
+ requestAnimationFrame(() => toast.classList.add('visible'));
2420
+ setTimeout(() => {
2421
+ toast.classList.remove('visible');
2422
+ setTimeout(() => toast.remove(), 300);
2423
+ }, 3000);
2424
+ }
2425
+
2426
+ function renderStaticLabels() {
2427
+ // Header buttons
2428
+ const checkClaudeSpan = document.getElementById('i18n-check-claude');
2429
+ if (checkClaudeSpan) checkClaudeSpan.textContent = t('header.checkClaude');
2430
+
2431
+ const logsBtnSpan = document.getElementById('i18n-logs-btn');
2432
+ if (logsBtnSpan) logsBtnSpan.textContent = logsVisible ? t('header.hideLogs') : t('header.logs');
2433
+
2434
+ const serverStatusSpan = document.getElementById('i18n-server-status');
2435
+ if (serverStatusSpan) serverStatusSpan.textContent = t('status.connecting');
2436
+
2437
+ // Cards
2438
+ const cardRunning = document.getElementById('i18n-card-running');
2439
+ if (cardRunning) cardRunning.textContent = t('card.running');
2440
+
2441
+ const cardQueued = document.getElementById('i18n-card-queued');
2442
+ if (cardQueued) cardQueued.textContent = t('card.queued');
2443
+
2444
+ const cardCompleted = document.getElementById('i18n-card-completed');
2445
+ if (cardCompleted) cardCompleted.textContent = t('card.completed');
2446
+
2447
+ const cardClaudeCli = document.getElementById('i18n-card-claude-cli');
2448
+ if (cardClaudeCli) cardClaudeCli.textContent = t('card.claudeCli');
2449
+
2450
+ const claudeChecking = document.getElementById('i18n-claude-checking');
2451
+ if (claudeChecking) claudeChecking.textContent = t('status.checking');
2452
+
2453
+ const gitLoadProject = document.getElementById('i18n-git-load-project');
2454
+ if (gitLoadProject) gitLoadProject.textContent = t('status.loadProject');
2455
+
2456
+ const gitCliLabel = document.getElementById('git-cli-label');
2457
+ if (gitCliLabel && !activePlatform) gitCliLabel.textContent = t('card.gitCli');
2458
+
2459
+ const cardModel = document.getElementById('i18n-card-model');
2460
+ if (cardModel) cardModel.textContent = t('card.model');
2461
+
2462
+ const cardLanguage = document.getElementById('i18n-card-language');
2463
+ if (cardLanguage) cardLanguage.textContent = t('card.language');
2464
+
2465
+ const stripNow = document.getElementById('i18n-strip-now');
2466
+ if (stripNow) stripNow.textContent = t('strip.now');
2467
+ const stripNowMeta = document.getElementById('i18n-strip-now-meta');
2468
+ if (stripNowMeta) stripNowMeta.textContent = t('strip.nowMeta');
2469
+
2470
+ const stripNext = document.getElementById('i18n-strip-next');
2471
+ if (stripNext) stripNext.textContent = t('strip.next');
2472
+ const stripNextMeta = document.getElementById('i18n-strip-next-meta');
2473
+ if (stripNextMeta) stripNextMeta.textContent = t('strip.nextMeta');
2474
+
2475
+ const stripBlocked = document.getElementById('i18n-strip-blocked');
2476
+ if (stripBlocked) stripBlocked.textContent = t('strip.blocked');
2477
+ const stripBlockedMeta = document.getElementById('i18n-strip-blocked-meta');
2478
+ if (stripBlockedMeta) stripBlockedMeta.textContent = t('strip.blockedMeta');
2479
+ applyFocusStripMode();
2480
+
2481
+ const loadingDataLabel = document.getElementById('i18n-loading-data');
2482
+ if (loadingDataLabel) loadingDataLabel.textContent = t(getLoadingMessageKey());
2483
+ updateSessionMetricsUI();
2484
+
2485
+ // Model options
2486
+ const modelOpus = document.getElementById('i18n-model-opus');
2487
+ if (modelOpus) modelOpus.textContent = t('model.opus');
2488
+
2489
+ const modelSonnet = document.getElementById('i18n-model-sonnet');
2490
+ if (modelSonnet) modelSonnet.textContent = t('model.sonnet');
2491
+
2492
+ // Project loader
2493
+ const projectPlaceholder = document.getElementById('i18n-project-placeholder');
2494
+ if (projectPlaceholder) projectPlaceholder.textContent = t('project.selectPlaceholder');
2495
+
2496
+ const projectPathInput = document.getElementById('project-path-input');
2497
+ if (projectPathInput) projectPathInput.placeholder = t('project.inputPlaceholder');
2498
+
2499
+ const projectLoad = document.getElementById('i18n-project-load');
2500
+ if (projectLoad) projectLoad.textContent = t('project.load');
2501
+
2502
+ const removeProjectBtn = document.getElementById('remove-project-btn');
2503
+ if (removeProjectBtn) removeProjectBtn.title = t('project.removeTooltip');
2504
+
2505
+ // Login sections
2506
+ const claudeLoginTitle = document.getElementById('i18n-claude-login-title');
2507
+ if (claudeLoginTitle) claudeLoginTitle.textContent = t('login.claude.title');
2508
+
2509
+ const claudeLoginInstruction = document.getElementById('i18n-claude-login-instruction');
2510
+ if (claudeLoginInstruction) claudeLoginInstruction.textContent = t('login.claude.instruction');
2511
+
2512
+ const claudeLoginReload = document.getElementById('i18n-claude-login-reload');
2513
+ if (claudeLoginReload) claudeLoginReload.textContent = t('login.claude.reload');
2514
+
2515
+ const gitLoginTitle = document.getElementById('i18n-git-login-title');
2516
+ if (gitLoginTitle) gitLoginTitle.textContent = t('login.git.title');
2517
+
2518
+ // Section headers
2519
+ const sectionLogs = document.getElementById('i18n-section-logs');
2520
+ if (sectionLogs) sectionLogs.textContent = t('section.logs');
2521
+
2522
+ const sectionStats = document.getElementById('i18n-section-stats');
2523
+ if (sectionStats) sectionStats.textContent = t('section.stats');
2524
+
2525
+ const recalculateLabel = document.getElementById('recalculate-label');
2526
+ if (recalculateLabel) recalculateLabel.textContent = t('stats.recalculate');
2527
+
2528
+ const sectionTeam = document.getElementById('i18n-section-team');
2529
+ if (sectionTeam) sectionTeam.textContent = t('team.title');
2530
+
2531
+ const sectionActiveReviews = document.getElementById('i18n-section-active-reviews');
2532
+ if (sectionActiveReviews) sectionActiveReviews.textContent = t('section.activeReviews');
2533
+
2534
+ const sectionActiveFollowups = document.getElementById('i18n-section-active-followups');
2535
+ if (sectionActiveFollowups) sectionActiveFollowups.textContent = t('section.activeFollowups');
2536
+
2537
+ const sectionPendingFix = document.getElementById('i18n-section-pending-fix');
2538
+ if (sectionPendingFix) sectionPendingFix.textContent = t('section.queueLanes');
2539
+
2540
+ const sectionPendingApproval = document.getElementById('i18n-section-pending-approval');
2541
+ if (sectionPendingApproval) sectionPendingApproval.textContent = t('section.pendingApproval');
2542
+
2543
+ const sectionCompletedReviews = document.getElementById('i18n-section-completed-reviews');
2544
+ if (sectionCompletedReviews) sectionCompletedReviews.textContent = t('section.completedReviews');
2545
+
2546
+ // Empty states
2547
+ const emptyLogs = document.getElementById('i18n-empty-logs');
2548
+ if (emptyLogs) emptyLogs.textContent = t('empty.logs');
2549
+
2550
+ const emptyStats = document.getElementById('i18n-empty-stats');
2551
+ if (emptyStats) emptyStats.textContent = t('empty.stats');
2552
+
2553
+ const emptyActiveReviews = document.getElementById('i18n-empty-active-reviews');
2554
+ if (emptyActiveReviews) emptyActiveReviews.textContent = t('empty.activeReviews');
2555
+
2556
+ const emptyActiveFollowups = document.getElementById('i18n-empty-active-followups');
2557
+ if (emptyActiveFollowups) emptyActiveFollowups.textContent = t('empty.activeFollowups');
2558
+
2559
+ const emptyPendingFix = document.getElementById('i18n-empty-pending-fix');
2560
+ if (emptyPendingFix) emptyPendingFix.textContent = t('empty.pendingFix');
2561
+
2562
+ const emptyPendingApproval = document.getElementById('i18n-empty-pending-approval');
2563
+ if (emptyPendingApproval) emptyPendingApproval.textContent = t('empty.pendingApproval');
2564
+
2565
+ const emptyTeam = document.getElementById('i18n-empty-team');
2566
+ if (emptyTeam) emptyTeam.textContent = t('team.noData');
2567
+
2568
+ const emptyLoading = document.getElementById('i18n-empty-loading');
2569
+ if (emptyLoading) emptyLoading.textContent = t('status.loading');
2570
+
2571
+ // Sync threads button
2572
+ const syncThreadsBtn = document.getElementById('sync-threads-btn');
2573
+ if (syncThreadsBtn) syncThreadsBtn.title = t('button.syncThreads');
2574
+
2575
+ // Connection footer
2576
+ const connectionFallback = document.getElementById('i18n-connection-fallback');
2577
+ if (connectionFallback) connectionFallback.textContent = t('connection.fallback');
2578
+
2579
+ // Modal
2580
+ const modalMessage = document.getElementById('i18n-modal-message');
2581
+ if (modalMessage) modalMessage.textContent = t('modal.cancel.message');
2582
+
2583
+ const modalBack = document.getElementById('i18n-modal-back');
2584
+ if (modalBack) modalBack.textContent = t('modal.back');
2585
+
2586
+ const modalConfirm = document.getElementById('cancel-modal-confirm');
2587
+ if (modalConfirm) modalConfirm.textContent = t('modal.confirm');
2588
+
2589
+ // Update project select placeholder (re-render the select)
2590
+ updateProjectSelect();
2591
+ }
2592
+
2593
+ async function checkForUpdates() {
2594
+ setVersionCheckState('checking', t);
2595
+ try {
2596
+ const response = await fetch(`${API_URL}/api/version/check`);
2597
+ const data = await response.json();
2598
+ const versionUpdateArea = document.getElementById('version-update-area');
2599
+ if (versionUpdateArea) {
2600
+ versionUpdateArea.innerHTML = renderVersionUpdateArea(
2601
+ { currentVersion: data.currentVersion || '?', updateAvailable: data.updateAvailable || false, latestVersion: data.latestVersion || null, installType: data.installType || 'global-npm' },
2602
+ t
2603
+ );
2604
+ if (typeof lucide !== 'undefined') lucide.createIcons();
2605
+ }
2606
+ if (!data.updateAvailable) {
2607
+ showToast(t('version.upToDate'), 'success');
2608
+ }
2609
+ } catch (error) {
2610
+ console.error('Error checking for updates:', error);
2611
+ showToast(t('version.updateFailed'), 'error');
2612
+ } finally {
2613
+ setVersionCheckState('idle', t);
2614
+ }
2615
+ }
2616
+
2617
+ async function triggerVersionUpdate() {
2618
+ setVersionCheckState('updating', t);
2619
+ try {
2620
+ const response = await fetch(`${API_URL}/api/version/update`, { method: 'POST' });
2621
+ const data = await response.json();
2622
+ if (data.status === 'started') {
2623
+ setVersionCheckState('restarting', t);
2624
+ showToast(t('version.restarting'), 'info');
2625
+ setTimeout(() => {
2626
+ const checkInterval = setInterval(async () => {
2627
+ try {
2628
+ const healthResponse = await fetch(`${API_URL}/health`);
2629
+ if (healthResponse.ok) {
2630
+ clearInterval(checkInterval);
2631
+ window.location.reload();
2632
+ }
2633
+ } catch {
2634
+ // Server still restarting, keep polling
2635
+ }
2636
+ }, 2000);
2637
+ setTimeout(() => clearInterval(checkInterval), 60000);
2638
+ }, 3000);
2639
+ } else if (data.status === 'permission-denied') {
2640
+ setVersionCheckState('idle', t);
2641
+ showManualUpdateCommand(data.command);
2642
+ } else if (data.status === 'source-checkout') {
2643
+ setVersionCheckState('idle', t);
2644
+ showManualUpdateCommand(data.manualCommand);
2645
+ } else {
2646
+ showToast(data.error || t('version.updateFailed'), 'error');
2647
+ setVersionCheckState('idle', t);
2648
+ }
2649
+ } catch (error) {
2650
+ console.error('Error triggering update:', error);
2651
+ showToast(t('version.updateFailed'), 'error');
2652
+ setVersionCheckState('idle', t);
2653
+ }
2654
+ }
2655
+
2656
+ async function showSourceCheckoutUpdate() {
2657
+ try {
2658
+ const response = await fetch(`${API_URL}/api/version/update`, { method: 'POST' });
2659
+ const data = await response.json();
2660
+ if (data.status === 'source-checkout') {
2661
+ showManualUpdateCommand(data.manualCommand);
2662
+ } else {
2663
+ showToast(t('version.updateFailed'), 'error');
2664
+ }
2665
+ } catch (error) {
2666
+ console.error('Error fetching manual update command:', error);
2667
+ showToast(t('version.updateFailed'), 'error');
2668
+ }
2669
+ }
2670
+
2671
+ function showManualUpdateCommand(command) {
2672
+ const container = document.getElementById('version-manual-update-container');
2673
+ if (!container) return;
2674
+
2675
+ if (container.children.length > 0) {
2676
+ container.innerHTML = '';
2677
+ return;
2678
+ }
2679
+
2680
+ container.innerHTML = `
2681
+ <div class="version-manual-dropdown">
2682
+ <p>${t('version.permissionDenied')}</p>
2683
+ <div class="version-command-row">
2684
+ <code>${command}</code>
2685
+ <button class="btn btn-icon btn-copy" title="${t('version.copyCommand')}" onclick="copyUpdateCommand('${command}')">
2686
+ <i data-lucide="copy"></i>
2687
+ </button>
2688
+ </div>
2689
+ </div>
2690
+ `;
2691
+ refreshIcons();
2692
+ }
2693
+
2694
+ function copyUpdateCommand(command) {
2695
+ navigator.clipboard.writeText(command).then(() => {
2696
+ showToast(t('version.commandCopied'), 'success');
2697
+ });
2698
+ }
2699
+
2700
+ function openMrSheet(encodedMrId) {
2701
+ const mrId = safeDecodeURIComponent(encodedMrId);
2702
+ const mr = mrDataStore.get(mrId);
2703
+ if (!mr) return;
2704
+
2705
+ const contentEl = document.getElementById('mr-sheet-content');
2706
+ contentEl.innerHTML = renderMrSheetContent(mr, t, mr._sheetType);
2707
+
2708
+ document.getElementById('mr-sheet-overlay').classList.add('open');
2709
+ document.getElementById('mr-sheet').classList.add('open');
2710
+ document.body.style.overflow = 'hidden';
2711
+
2712
+ refreshIcons();
2713
+
2714
+ requestAnimationFrame(() => {
2715
+ if (mr.reviews?.length) {
2716
+ drawScoreTimeline('sheet-score-canvas', mr.reviews);
2717
+ }
2718
+ const totalResolved = (mr.openThreads ?? 0) === 0 ? 1 : 0;
2719
+ drawIssuesBreakdown('sheet-issues-canvas', mr.totalBlocking || 0, mr.totalWarnings || 0, totalResolved);
2720
+ });
2721
+ }
2722
+
2723
+ function closeMrSheet() {
2724
+ document.getElementById('mr-sheet-overlay').classList.remove('open');
2725
+ document.getElementById('mr-sheet').classList.remove('open');
2726
+ document.body.style.overflow = '';
2727
+ logsVisible = false;
2728
+ }
2729
+
2730
+ document.addEventListener('keydown', (e) => {
2731
+ if (e.key === 'Escape') {
2732
+ closeMrSheet();
2733
+ closeDevSheet();
2734
+ }
2735
+ });
2736
+
2737
+ // Expose functions to HTML onclick handlers
2738
+ window.checkForUpdates = checkForUpdates;
2739
+ window.triggerVersionUpdate = triggerVersionUpdate;
2740
+ window.showSourceCheckoutUpdate = showSourceCheckoutUpdate;
2741
+ window.copyUpdateCommand = copyUpdateCommand;
2742
+ window.toggleCollapsibleList = toggleCollapsibleList;
2743
+ window.checkClaudeStatus = checkClaudeStatus;
2744
+ window.toggleLogs = toggleLogs;
2745
+ window.toggleStats = toggleStats;
2746
+ window.changeModel = changeModel;
2747
+ window.changeLanguage = changeLanguage;
2748
+ window.onProjectSelect = onProjectSelect;
2749
+ window.loadProjectConfig = loadProjectConfig;
2750
+ window.removeCurrentProject = removeCurrentProject;
2751
+ window.toggleReviewAccordion = toggleReviewAccordion;
2752
+ window.toggleReviewDescription = toggleReviewDescription;
2753
+ window.deleteReviewFile = deleteReviewFile;
2754
+ window.toggleMrAccordion = toggleMrAccordion;
2755
+ window.triggerFollowup = triggerFollowup;
2756
+ window.toggleAutoFollowup = toggleAutoFollowup;
2757
+ window.approveMr = approveMr;
2758
+ window.syncGitLabThreads = syncGitLabThreads;
2759
+ window.showCancelModal = showCancelModal;
2760
+ window.closeCancelModal = closeCancelModal;
2761
+ window.confirmCancelReview = confirmCancelReview;
2762
+ window.toggleFocusStripMode = toggleFocusStripMode;
2763
+ window.toggleSection = toggleSection;
2764
+ window.onUsefulLinkAction = onUsefulLinkAction;
2765
+ window.activateOnKeydown = activateOnKeydown;
2766
+ window.handleCleanupClick = handleCleanupClick;
2767
+ window.openMrSheet = openMrSheet;
2768
+ window.closeMrSheet = closeMrSheet;
2769
+ window.openDevSheet = openDevSheet;
2770
+ window.closeDevSheet = closeDevSheet;
2771
+ window.generateAiInsights = generateAiInsights;
2772
+ window.exportInsightsPdf = exportInsightsPdf;
2773
+ window.toggleTeamAnalysis = toggleTeamAnalysis;
2774
+ window.toggleTeamSection = toggleTeamSection;
2775
+ window.clearLogs = clearLogs;
2776
+
2777
+ // Init cleanup section
2778
+ const cleanupContent = document.getElementById('cleanup-content');
2779
+ if (cleanupContent) {
2780
+ cleanupContent.innerHTML = renderCleanupSection(14);
2781
+ }
2782
+
2783
+ // Init
2784
+ if (typeof Notification !== 'undefined' && Notification.permission === 'default') {
2785
+ Notification.requestPermission().catch(() => {});
2786
+ }
2787
+ loadFocusStripMode();
2788
+ renderStaticLabels();
2789
+ updateSessionMetricsUI();
2790
+ connectWebSocket();
2791
+ fetchStatus();
2792
+ checkClaudeStatus();
2793
+ loadModelSetting();
2794
+ loadLanguageSetting();
2795
+ initProjectLoader();
2796
+ refreshBudgetTile();
2797
+ initBudgetSlider();
2798
+
2799
+ // Initialize Lucide icons
2800
+ refreshIcons();
2801
+
2802
+ setInterval(fetchStatus, 5000);
2803
+ setInterval(() => {
2804
+ fetchReviewFiles();
2805
+ fetchProjectStats();
2806
+ fetchMrTracking();
2807
+ fetchTeamInsights();
2808
+ }, 30000);
2809
+
2810
+ setInterval(() => {
2811
+ document.querySelectorAll('.review-item').forEach(el => {
2812
+ const jobId = el.dataset.jobId;
2813
+ const review = currentData.activeReviews.find(r => r.id === jobId);
2814
+ if (review?.startedAt) {
2815
+ const metaEl = el.querySelector('.review-meta');
2816
+ if (metaEl) {
2817
+ const badge = metaEl.querySelector('.badge');
2818
+ metaEl.innerHTML = `${badge?.outerHTML || ''} ${icon('clock')} ${formatDuration(review.startedAt)}`;
2819
+ refreshIcons();
2820
+ }
2821
+ }
2822
+ });
2823
+ }, 1000);
2824
+ </script>
2825
+ </body>
2826
+ </html>