@mesrai/cli 0.4.21

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 (629) hide show
  1. package/README.md +670 -0
  2. package/dist/agents/agent.interface.d.ts +41 -0
  3. package/dist/agents/agent.interface.d.ts.map +1 -0
  4. package/dist/agents/agent.interface.js +2 -0
  5. package/dist/agents/agent.interface.js.map +1 -0
  6. package/dist/agents/claude-code.agent.d.ts +14 -0
  7. package/dist/agents/claude-code.agent.d.ts.map +1 -0
  8. package/dist/agents/claude-code.agent.js +90 -0
  9. package/dist/agents/claude-code.agent.js.map +1 -0
  10. package/dist/agents/codex.agent.d.ts +14 -0
  11. package/dist/agents/codex.agent.d.ts.map +1 -0
  12. package/dist/agents/codex.agent.js +77 -0
  13. package/dist/agents/codex.agent.js.map +1 -0
  14. package/dist/agents/cursor.agent.d.ts +29 -0
  15. package/dist/agents/cursor.agent.d.ts.map +1 -0
  16. package/dist/agents/cursor.agent.js +85 -0
  17. package/dist/agents/cursor.agent.js.map +1 -0
  18. package/dist/cli.d.ts +4 -0
  19. package/dist/cli.d.ts.map +1 -0
  20. package/dist/cli.js +60 -0
  21. package/dist/cli.js.map +1 -0
  22. package/dist/commands/auth/index.d.ts +3 -0
  23. package/dist/commands/auth/index.d.ts.map +1 -0
  24. package/dist/commands/auth/index.js +37 -0
  25. package/dist/commands/auth/index.js.map +1 -0
  26. package/dist/commands/auth/login.d.ts +11 -0
  27. package/dist/commands/auth/login.d.ts.map +1 -0
  28. package/dist/commands/auth/login.js +158 -0
  29. package/dist/commands/auth/login.js.map +1 -0
  30. package/dist/commands/auth/logout.d.ts +2 -0
  31. package/dist/commands/auth/logout.d.ts.map +1 -0
  32. package/dist/commands/auth/logout.js +26 -0
  33. package/dist/commands/auth/logout.js.map +1 -0
  34. package/dist/commands/auth/status.d.ts +2 -0
  35. package/dist/commands/auth/status.d.ts.map +1 -0
  36. package/dist/commands/auth/status.js +82 -0
  37. package/dist/commands/auth/status.js.map +1 -0
  38. package/dist/commands/auth/team-key.d.ts +5 -0
  39. package/dist/commands/auth/team-key.d.ts.map +1 -0
  40. package/dist/commands/auth/team-key.js +112 -0
  41. package/dist/commands/auth/team-key.js.map +1 -0
  42. package/dist/commands/auth/token.d.ts +2 -0
  43. package/dist/commands/auth/token.d.ts.map +1 -0
  44. package/dist/commands/auth/token.js +33 -0
  45. package/dist/commands/auth/token.js.map +1 -0
  46. package/dist/commands/config.d.ts +5 -0
  47. package/dist/commands/config.d.ts.map +1 -0
  48. package/dist/commands/config.js +26 -0
  49. package/dist/commands/config.js.map +1 -0
  50. package/dist/commands/diff.d.ts +3 -0
  51. package/dist/commands/diff.d.ts.map +1 -0
  52. package/dist/commands/diff.js +23 -0
  53. package/dist/commands/diff.js.map +1 -0
  54. package/dist/commands/hook/index.d.ts +3 -0
  55. package/dist/commands/hook/index.d.ts.map +1 -0
  56. package/dist/commands/hook/index.js +24 -0
  57. package/dist/commands/hook/index.js.map +1 -0
  58. package/dist/commands/hook/install.d.ts +11 -0
  59. package/dist/commands/hook/install.d.ts.map +1 -0
  60. package/dist/commands/hook/install.js +149 -0
  61. package/dist/commands/hook/install.js.map +1 -0
  62. package/dist/commands/hook/status.d.ts +2 -0
  63. package/dist/commands/hook/status.d.ts.map +1 -0
  64. package/dist/commands/hook/status.js +36 -0
  65. package/dist/commands/hook/status.js.map +1 -0
  66. package/dist/commands/hook/uninstall.d.ts +5 -0
  67. package/dist/commands/hook/uninstall.d.ts.map +1 -0
  68. package/dist/commands/hook/uninstall.js +66 -0
  69. package/dist/commands/hook/uninstall.js.map +1 -0
  70. package/dist/commands/memory/capture.d.ts +8 -0
  71. package/dist/commands/memory/capture.d.ts.map +1 -0
  72. package/dist/commands/memory/capture.js +124 -0
  73. package/dist/commands/memory/capture.js.map +1 -0
  74. package/dist/commands/memory/disable.d.ts +5 -0
  75. package/dist/commands/memory/disable.d.ts.map +1 -0
  76. package/dist/commands/memory/disable.js +67 -0
  77. package/dist/commands/memory/disable.js.map +1 -0
  78. package/dist/commands/memory/enable.d.ts +7 -0
  79. package/dist/commands/memory/enable.d.ts.map +1 -0
  80. package/dist/commands/memory/enable.js +74 -0
  81. package/dist/commands/memory/enable.js.map +1 -0
  82. package/dist/commands/memory/hooks.d.ts +31 -0
  83. package/dist/commands/memory/hooks.d.ts.map +1 -0
  84. package/dist/commands/memory/hooks.js +283 -0
  85. package/dist/commands/memory/hooks.js.map +1 -0
  86. package/dist/commands/memory/index.d.ts +3 -0
  87. package/dist/commands/memory/index.d.ts.map +1 -0
  88. package/dist/commands/memory/index.js +36 -0
  89. package/dist/commands/memory/index.js.map +1 -0
  90. package/dist/commands/memory/session-hooks/claude-code.d.ts +2 -0
  91. package/dist/commands/memory/session-hooks/claude-code.d.ts.map +1 -0
  92. package/dist/commands/memory/session-hooks/claude-code.js +24 -0
  93. package/dist/commands/memory/session-hooks/claude-code.js.map +1 -0
  94. package/dist/commands/memory/session-hooks/codex.d.ts +2 -0
  95. package/dist/commands/memory/session-hooks/codex.d.ts.map +1 -0
  96. package/dist/commands/memory/session-hooks/codex.js +16 -0
  97. package/dist/commands/memory/session-hooks/codex.js.map +1 -0
  98. package/dist/commands/memory/session-hooks/cursor.d.ts +2 -0
  99. package/dist/commands/memory/session-hooks/cursor.d.ts.map +1 -0
  100. package/dist/commands/memory/session-hooks/cursor.js +20 -0
  101. package/dist/commands/memory/session-hooks/cursor.js.map +1 -0
  102. package/dist/commands/memory/session-hooks/index.d.ts +3 -0
  103. package/dist/commands/memory/session-hooks/index.d.ts.map +1 -0
  104. package/dist/commands/memory/session-hooks/index.js +21 -0
  105. package/dist/commands/memory/session-hooks/index.js.map +1 -0
  106. package/dist/commands/memory/session-hooks/shared.d.ts +7 -0
  107. package/dist/commands/memory/session-hooks/shared.d.ts.map +1 -0
  108. package/dist/commands/memory/session-hooks/shared.js +52 -0
  109. package/dist/commands/memory/session-hooks/shared.js.map +1 -0
  110. package/dist/commands/memory/session-hooks-install-codex.d.ts +19 -0
  111. package/dist/commands/memory/session-hooks-install-codex.d.ts.map +1 -0
  112. package/dist/commands/memory/session-hooks-install-codex.js +91 -0
  113. package/dist/commands/memory/session-hooks-install-codex.js.map +1 -0
  114. package/dist/commands/memory/session-hooks-install-cursor.d.ts +9 -0
  115. package/dist/commands/memory/session-hooks-install-cursor.d.ts.map +1 -0
  116. package/dist/commands/memory/session-hooks-install-cursor.js +119 -0
  117. package/dist/commands/memory/session-hooks-install-cursor.js.map +1 -0
  118. package/dist/commands/memory/session-hooks-install.d.ts +9 -0
  119. package/dist/commands/memory/session-hooks-install.d.ts.map +1 -0
  120. package/dist/commands/memory/session-hooks-install.js +173 -0
  121. package/dist/commands/memory/session-hooks-install.js.map +1 -0
  122. package/dist/commands/pr.d.ts +2 -0
  123. package/dist/commands/pr.d.ts.map +1 -0
  124. package/dist/commands/pr.js +2 -0
  125. package/dist/commands/pr.js.map +1 -0
  126. package/dist/commands/review.d.ts +2 -0
  127. package/dist/commands/review.d.ts.map +1 -0
  128. package/dist/commands/review.js +2 -0
  129. package/dist/commands/review.js.map +1 -0
  130. package/dist/commands/rules.d.ts +31 -0
  131. package/dist/commands/rules.d.ts.map +1 -0
  132. package/dist/commands/rules.js +159 -0
  133. package/dist/commands/rules.js.map +1 -0
  134. package/dist/commands/schema.d.ts +3 -0
  135. package/dist/commands/schema.d.ts.map +1 -0
  136. package/dist/commands/schema.js +62 -0
  137. package/dist/commands/schema.js.map +1 -0
  138. package/dist/commands/skills.d.ts +3 -0
  139. package/dist/commands/skills.d.ts.map +1 -0
  140. package/dist/commands/skills.js +85 -0
  141. package/dist/commands/skills.js.map +1 -0
  142. package/dist/commands/status.d.ts +3 -0
  143. package/dist/commands/status.d.ts.map +1 -0
  144. package/dist/commands/status.js +99 -0
  145. package/dist/commands/status.js.map +1 -0
  146. package/dist/commands/subscribe.d.ts +4 -0
  147. package/dist/commands/subscribe.d.ts.map +1 -0
  148. package/dist/commands/subscribe.js +25 -0
  149. package/dist/commands/subscribe.js.map +1 -0
  150. package/dist/commands/update.d.ts +10 -0
  151. package/dist/commands/update.d.ts.map +1 -0
  152. package/dist/commands/update.js +112 -0
  153. package/dist/commands/update.js.map +1 -0
  154. package/dist/constants.d.ts +3 -0
  155. package/dist/constants.d.ts.map +1 -0
  156. package/dist/constants.js +6 -0
  157. package/dist/constants.js.map +1 -0
  158. package/dist/features/centralized-config/actions.d.ts +20 -0
  159. package/dist/features/centralized-config/actions.d.ts.map +1 -0
  160. package/dist/features/centralized-config/actions.js +114 -0
  161. package/dist/features/centralized-config/actions.js.map +1 -0
  162. package/dist/features/centralized-config/command.d.ts +4 -0
  163. package/dist/features/centralized-config/command.d.ts.map +1 -0
  164. package/dist/features/centralized-config/command.js +43 -0
  165. package/dist/features/centralized-config/command.js.map +1 -0
  166. package/dist/features/pr/command.d.ts +4 -0
  167. package/dist/features/pr/command.d.ts.map +1 -0
  168. package/dist/features/pr/command.js +222 -0
  169. package/dist/features/pr/command.js.map +1 -0
  170. package/dist/features/repo-config/actions.d.ts +33 -0
  171. package/dist/features/repo-config/actions.d.ts.map +1 -0
  172. package/dist/features/repo-config/actions.js +271 -0
  173. package/dist/features/repo-config/actions.js.map +1 -0
  174. package/dist/features/repo-config/command.d.ts +15 -0
  175. package/dist/features/repo-config/command.d.ts.map +1 -0
  176. package/dist/features/repo-config/command.js +135 -0
  177. package/dist/features/repo-config/command.js.map +1 -0
  178. package/dist/features/review/command.d.ts +4 -0
  179. package/dist/features/review/command.d.ts.map +1 -0
  180. package/dist/features/review/command.js +404 -0
  181. package/dist/features/review/command.js.map +1 -0
  182. package/dist/features/review/diff.d.ts +23 -0
  183. package/dist/features/review/diff.d.ts.map +1 -0
  184. package/dist/features/review/diff.js +47 -0
  185. package/dist/features/review/diff.js.map +1 -0
  186. package/dist/features/review/errors.d.ts +3 -0
  187. package/dist/features/review/errors.d.ts.map +1 -0
  188. package/dist/features/review/errors.js +26 -0
  189. package/dist/features/review/errors.js.map +1 -0
  190. package/dist/features/review/hunk-context.d.ts +25 -0
  191. package/dist/features/review/hunk-context.d.ts.map +1 -0
  192. package/dist/features/review/hunk-context.js +158 -0
  193. package/dist/features/review/hunk-context.js.map +1 -0
  194. package/dist/features/review/hunk-viewer.d.ts +25 -0
  195. package/dist/features/review/hunk-viewer.d.ts.map +1 -0
  196. package/dist/features/review/hunk-viewer.js +59 -0
  197. package/dist/features/review/hunk-viewer.js.map +1 -0
  198. package/dist/features/review/no-changes.d.ts +6 -0
  199. package/dist/features/review/no-changes.d.ts.map +1 -0
  200. package/dist/features/review/no-changes.js +31 -0
  201. package/dist/features/review/no-changes.js.map +1 -0
  202. package/dist/features/review/options.d.ts +7 -0
  203. package/dist/features/review/options.d.ts.map +1 -0
  204. package/dist/features/review/options.js +18 -0
  205. package/dist/features/review/options.js.map +1 -0
  206. package/dist/features/review/result.d.ts +40 -0
  207. package/dist/features/review/result.d.ts.map +1 -0
  208. package/dist/features/review/result.js +95 -0
  209. package/dist/features/review/result.js.map +1 -0
  210. package/dist/formatters/json.d.ts +7 -0
  211. package/dist/formatters/json.d.ts.map +1 -0
  212. package/dist/formatters/json.js +7 -0
  213. package/dist/formatters/json.js.map +1 -0
  214. package/dist/formatters/markdown.d.ts +7 -0
  215. package/dist/formatters/markdown.d.ts.map +1 -0
  216. package/dist/formatters/markdown.js +93 -0
  217. package/dist/formatters/markdown.js.map +1 -0
  218. package/dist/formatters/prompt.d.ts +12 -0
  219. package/dist/formatters/prompt.d.ts.map +1 -0
  220. package/dist/formatters/prompt.js +90 -0
  221. package/dist/formatters/prompt.js.map +1 -0
  222. package/dist/formatters/repo-config.d.ts +7 -0
  223. package/dist/formatters/repo-config.d.ts.map +1 -0
  224. package/dist/formatters/repo-config.js +99 -0
  225. package/dist/formatters/repo-config.js.map +1 -0
  226. package/dist/formatters/terminal.d.ts +7 -0
  227. package/dist/formatters/terminal.d.ts.map +1 -0
  228. package/dist/formatters/terminal.js +130 -0
  229. package/dist/formatters/terminal.js.map +1 -0
  230. package/dist/index.d.ts +3 -0
  231. package/dist/index.d.ts.map +1 -0
  232. package/dist/index.js +51 -0
  233. package/dist/index.js.map +1 -0
  234. package/dist/services/api/api-core.d.ts +27 -0
  235. package/dist/services/api/api-core.d.ts.map +1 -0
  236. package/dist/services/api/api-core.js +451 -0
  237. package/dist/services/api/api-core.js.map +1 -0
  238. package/dist/services/api/api.interface.d.ts +101 -0
  239. package/dist/services/api/api.interface.d.ts.map +1 -0
  240. package/dist/services/api/api.interface.js +2 -0
  241. package/dist/services/api/api.interface.js.map +1 -0
  242. package/dist/services/api/api.real.d.ts +19 -0
  243. package/dist/services/api/api.real.d.ts.map +1 -0
  244. package/dist/services/api/api.real.js +20 -0
  245. package/dist/services/api/api.real.js.map +1 -0
  246. package/dist/services/api/auth.api.d.ts +17 -0
  247. package/dist/services/api/auth.api.d.ts.map +1 -0
  248. package/dist/services/api/auth.api.js +73 -0
  249. package/dist/services/api/auth.api.js.map +1 -0
  250. package/dist/services/api/cli-auth.api.d.ts +29 -0
  251. package/dist/services/api/cli-auth.api.d.ts.map +1 -0
  252. package/dist/services/api/cli-auth.api.js +23 -0
  253. package/dist/services/api/cli-auth.api.js.map +1 -0
  254. package/dist/services/api/config.api.d.ts +34 -0
  255. package/dist/services/api/config.api.d.ts.map +1 -0
  256. package/dist/services/api/config.api.js +108 -0
  257. package/dist/services/api/config.api.js.map +1 -0
  258. package/dist/services/api/index.d.ts +4 -0
  259. package/dist/services/api/index.d.ts.map +1 -0
  260. package/dist/services/api/index.js +3 -0
  261. package/dist/services/api/index.js.map +1 -0
  262. package/dist/services/api/memory.api.d.ts +10 -0
  263. package/dist/services/api/memory.api.d.ts.map +1 -0
  264. package/dist/services/api/memory.api.js +19 -0
  265. package/dist/services/api/memory.api.js.map +1 -0
  266. package/dist/services/api/review.api.d.ts +27 -0
  267. package/dist/services/api/review.api.d.ts.map +1 -0
  268. package/dist/services/api/review.api.js +140 -0
  269. package/dist/services/api/review.api.js.map +1 -0
  270. package/dist/services/api/rules.api.d.ts +13 -0
  271. package/dist/services/api/rules.api.d.ts.map +1 -0
  272. package/dist/services/api/rules.api.js +41 -0
  273. package/dist/services/api/rules.api.js.map +1 -0
  274. package/dist/services/api/sessions.api.d.ts +6 -0
  275. package/dist/services/api/sessions.api.d.ts.map +1 -0
  276. package/dist/services/api/sessions.api.js +129 -0
  277. package/dist/services/api/sessions.api.js.map +1 -0
  278. package/dist/services/api/trial.api.d.ts +10 -0
  279. package/dist/services/api/trial.api.d.ts.map +1 -0
  280. package/dist/services/api/trial.api.js +11 -0
  281. package/dist/services/api/trial.api.js.map +1 -0
  282. package/dist/services/auth.service.d.ts +29 -0
  283. package/dist/services/auth.service.d.ts.map +1 -0
  284. package/dist/services/auth.service.js +190 -0
  285. package/dist/services/auth.service.js.map +1 -0
  286. package/dist/services/browser-login.service.d.ts +23 -0
  287. package/dist/services/browser-login.service.d.ts.map +1 -0
  288. package/dist/services/browser-login.service.js +187 -0
  289. package/dist/services/browser-login.service.js.map +1 -0
  290. package/dist/services/centralized-config.service.d.ts +24 -0
  291. package/dist/services/centralized-config.service.d.ts.map +1 -0
  292. package/dist/services/centralized-config.service.js +112 -0
  293. package/dist/services/centralized-config.service.js.map +1 -0
  294. package/dist/services/context.service.d.ts +25 -0
  295. package/dist/services/context.service.d.ts.map +1 -0
  296. package/dist/services/context.service.js +134 -0
  297. package/dist/services/context.service.js.map +1 -0
  298. package/dist/services/device-login.service.d.ts +23 -0
  299. package/dist/services/device-login.service.d.ts.map +1 -0
  300. package/dist/services/device-login.service.js +70 -0
  301. package/dist/services/device-login.service.js.map +1 -0
  302. package/dist/services/fix.service.d.ts +31 -0
  303. package/dist/services/fix.service.d.ts.map +1 -0
  304. package/dist/services/fix.service.js +121 -0
  305. package/dist/services/fix.service.js.map +1 -0
  306. package/dist/services/git-hooks.service.d.ts +20 -0
  307. package/dist/services/git-hooks.service.d.ts.map +1 -0
  308. package/dist/services/git-hooks.service.js +126 -0
  309. package/dist/services/git-hooks.service.js.map +1 -0
  310. package/dist/services/git.service.d.ts +44 -0
  311. package/dist/services/git.service.d.ts.map +1 -0
  312. package/dist/services/git.service.js +321 -0
  313. package/dist/services/git.service.js.map +1 -0
  314. package/dist/services/hook-logger.service.d.ts +18 -0
  315. package/dist/services/hook-logger.service.d.ts.map +1 -0
  316. package/dist/services/hook-logger.service.js +48 -0
  317. package/dist/services/hook-logger.service.js.map +1 -0
  318. package/dist/services/lifecycle-events.d.ts +49 -0
  319. package/dist/services/lifecycle-events.d.ts.map +1 -0
  320. package/dist/services/lifecycle-events.js +86 -0
  321. package/dist/services/lifecycle-events.js.map +1 -0
  322. package/dist/services/lifecycle-git-context.d.ts +15 -0
  323. package/dist/services/lifecycle-git-context.d.ts.map +1 -0
  324. package/dist/services/lifecycle-git-context.js +23 -0
  325. package/dist/services/lifecycle-git-context.js.map +1 -0
  326. package/dist/services/lifecycle-local-turn-state.d.ts +14 -0
  327. package/dist/services/lifecycle-local-turn-state.d.ts.map +1 -0
  328. package/dist/services/lifecycle-local-turn-state.js +18 -0
  329. package/dist/services/lifecycle-local-turn-state.js.map +1 -0
  330. package/dist/services/lifecycle-transcript.d.ts +25 -0
  331. package/dist/services/lifecycle-transcript.d.ts.map +1 -0
  332. package/dist/services/lifecycle-transcript.js +29 -0
  333. package/dist/services/lifecycle-transcript.js.map +1 -0
  334. package/dist/services/lifecycle-turn-data.d.ts +11 -0
  335. package/dist/services/lifecycle-turn-data.d.ts.map +1 -0
  336. package/dist/services/lifecycle-turn-data.js +23 -0
  337. package/dist/services/lifecycle-turn-data.js.map +1 -0
  338. package/dist/services/lifecycle.service.d.ts +14 -0
  339. package/dist/services/lifecycle.service.d.ts.map +1 -0
  340. package/dist/services/lifecycle.service.js +276 -0
  341. package/dist/services/lifecycle.service.js.map +1 -0
  342. package/dist/services/repo-config.service.d.ts +22 -0
  343. package/dist/services/repo-config.service.d.ts.map +1 -0
  344. package/dist/services/repo-config.service.js +81 -0
  345. package/dist/services/repo-config.service.js.map +1 -0
  346. package/dist/services/repo-settings-wizard.service.d.ts +19 -0
  347. package/dist/services/repo-settings-wizard.service.d.ts.map +1 -0
  348. package/dist/services/repo-settings-wizard.service.js +260 -0
  349. package/dist/services/repo-settings-wizard.service.js.map +1 -0
  350. package/dist/services/repo-settings.service.d.ts +30 -0
  351. package/dist/services/repo-settings.service.d.ts.map +1 -0
  352. package/dist/services/repo-settings.service.js +99 -0
  353. package/dist/services/repo-settings.service.js.map +1 -0
  354. package/dist/services/review-auth-fallback.d.ts +7 -0
  355. package/dist/services/review-auth-fallback.d.ts.map +1 -0
  356. package/dist/services/review-auth-fallback.js +25 -0
  357. package/dist/services/review-auth-fallback.js.map +1 -0
  358. package/dist/services/review-config-builder.d.ts +19 -0
  359. package/dist/services/review-config-builder.d.ts.map +1 -0
  360. package/dist/services/review-config-builder.js +29 -0
  361. package/dist/services/review-config-builder.js.map +1 -0
  362. package/dist/services/review-file-filter.d.ts +3 -0
  363. package/dist/services/review-file-filter.d.ts.map +1 -0
  364. package/dist/services/review-file-filter.js +35 -0
  365. package/dist/services/review-file-filter.js.map +1 -0
  366. package/dist/services/review-normalizer.d.ts +6 -0
  367. package/dist/services/review-normalizer.d.ts.map +1 -0
  368. package/dist/services/review-normalizer.js +62 -0
  369. package/dist/services/review-normalizer.js.map +1 -0
  370. package/dist/services/review-verbose.d.ts +28 -0
  371. package/dist/services/review-verbose.d.ts.map +1 -0
  372. package/dist/services/review-verbose.js +52 -0
  373. package/dist/services/review-verbose.js.map +1 -0
  374. package/dist/services/review.service.d.ts +38 -0
  375. package/dist/services/review.service.d.ts.map +1 -0
  376. package/dist/services/review.service.js +152 -0
  377. package/dist/services/review.service.js.map +1 -0
  378. package/dist/services/rules.service.d.ts +16 -0
  379. package/dist/services/rules.service.d.ts.map +1 -0
  380. package/dist/services/rules.service.js +98 -0
  381. package/dist/services/rules.service.js.map +1 -0
  382. package/dist/services/session-local.service.d.ts +25 -0
  383. package/dist/services/session-local.service.d.ts.map +1 -0
  384. package/dist/services/session-local.service.js +79 -0
  385. package/dist/services/session-local.service.js.map +1 -0
  386. package/dist/services/transcript-parser.service.d.ts +10 -0
  387. package/dist/services/transcript-parser.service.d.ts.map +1 -0
  388. package/dist/services/transcript-parser.service.js +127 -0
  389. package/dist/services/transcript-parser.service.js.map +1 -0
  390. package/dist/services/transcript.service.d.ts +33 -0
  391. package/dist/services/transcript.service.d.ts.map +1 -0
  392. package/dist/services/transcript.service.js +264 -0
  393. package/dist/services/transcript.service.js.map +1 -0
  394. package/dist/types/auth.d.ts +18 -0
  395. package/dist/types/auth.d.ts.map +1 -0
  396. package/dist/types/auth.js +2 -0
  397. package/dist/types/auth.js.map +1 -0
  398. package/dist/types/cli.d.ts +41 -0
  399. package/dist/types/cli.d.ts.map +1 -0
  400. package/dist/types/cli.js +2 -0
  401. package/dist/types/cli.js.map +1 -0
  402. package/dist/types/command-output.d.ts +29 -0
  403. package/dist/types/command-output.d.ts.map +1 -0
  404. package/dist/types/command-output.js +2 -0
  405. package/dist/types/command-output.js.map +1 -0
  406. package/dist/types/config.d.ts +68 -0
  407. package/dist/types/config.d.ts.map +1 -0
  408. package/dist/types/config.js +2 -0
  409. package/dist/types/config.js.map +1 -0
  410. package/dist/types/errors.d.ts +8 -0
  411. package/dist/types/errors.d.ts.map +1 -0
  412. package/dist/types/errors.js +15 -0
  413. package/dist/types/errors.js.map +1 -0
  414. package/dist/types/index.d.ts +10 -0
  415. package/dist/types/index.d.ts.map +1 -0
  416. package/dist/types/index.js +2 -0
  417. package/dist/types/index.js.map +1 -0
  418. package/dist/types/memory.d.ts +39 -0
  419. package/dist/types/memory.d.ts.map +1 -0
  420. package/dist/types/memory.js +2 -0
  421. package/dist/types/memory.js.map +1 -0
  422. package/dist/types/repo-config.d.ts +24 -0
  423. package/dist/types/repo-config.d.ts.map +1 -0
  424. package/dist/types/repo-config.js +2 -0
  425. package/dist/types/repo-config.js.map +1 -0
  426. package/dist/types/review.d.ts +112 -0
  427. package/dist/types/review.d.ts.map +1 -0
  428. package/dist/types/review.js +2 -0
  429. package/dist/types/review.js.map +1 -0
  430. package/dist/types/rules.d.ts +42 -0
  431. package/dist/types/rules.d.ts.map +1 -0
  432. package/dist/types/rules.js +7 -0
  433. package/dist/types/rules.js.map +1 -0
  434. package/dist/types/session-events.d.ts +48 -0
  435. package/dist/types/session-events.d.ts.map +1 -0
  436. package/dist/types/session-events.js +2 -0
  437. package/dist/types/session-events.js.map +1 -0
  438. package/dist/types/session.d.ts +150 -0
  439. package/dist/types/session.d.ts.map +1 -0
  440. package/dist/types/session.js +9 -0
  441. package/dist/types/session.js.map +1 -0
  442. package/dist/types/trial.d.ts +10 -0
  443. package/dist/types/trial.d.ts.map +1 -0
  444. package/dist/types/trial.js +2 -0
  445. package/dist/types/trial.js.map +1 -0
  446. package/dist/ui/interactive-formatters.d.ts +6 -0
  447. package/dist/ui/interactive-formatters.d.ts.map +1 -0
  448. package/dist/ui/interactive-formatters.js +61 -0
  449. package/dist/ui/interactive-formatters.js.map +1 -0
  450. package/dist/ui/interactive-helpers.d.ts +20 -0
  451. package/dist/ui/interactive-helpers.d.ts.map +1 -0
  452. package/dist/ui/interactive-helpers.js +82 -0
  453. package/dist/ui/interactive-helpers.js.map +1 -0
  454. package/dist/ui/interactive-renderers.d.ts +6 -0
  455. package/dist/ui/interactive-renderers.d.ts.map +1 -0
  456. package/dist/ui/interactive-renderers.js +82 -0
  457. package/dist/ui/interactive-renderers.js.map +1 -0
  458. package/dist/ui/interactive.d.ts +25 -0
  459. package/dist/ui/interactive.d.ts.map +1 -0
  460. package/dist/ui/interactive.js +228 -0
  461. package/dist/ui/interactive.js.map +1 -0
  462. package/dist/utils/auth-mode.d.ts +7 -0
  463. package/dist/utils/auth-mode.d.ts.map +1 -0
  464. package/dist/utils/auth-mode.js +42 -0
  465. package/dist/utils/auth-mode.js.map +1 -0
  466. package/dist/utils/banner.d.ts +2 -0
  467. package/dist/utils/banner.d.ts.map +1 -0
  468. package/dist/utils/banner.js +180 -0
  469. package/dist/utils/banner.js.map +1 -0
  470. package/dist/utils/cli-exit.d.ts +13 -0
  471. package/dist/utils/cli-exit.d.ts.map +1 -0
  472. package/dist/utils/cli-exit.js +29 -0
  473. package/dist/utils/cli-exit.js.map +1 -0
  474. package/dist/utils/clipboard.d.ts +2 -0
  475. package/dist/utils/clipboard.d.ts.map +1 -0
  476. package/dist/utils/clipboard.js +11 -0
  477. package/dist/utils/clipboard.js.map +1 -0
  478. package/dist/utils/command-context.d.ts +12 -0
  479. package/dist/utils/command-context.d.ts.map +1 -0
  480. package/dist/utils/command-context.js +15 -0
  481. package/dist/utils/command-context.js.map +1 -0
  482. package/dist/utils/command-errors.d.ts +12 -0
  483. package/dist/utils/command-errors.d.ts.map +1 -0
  484. package/dist/utils/command-errors.js +112 -0
  485. package/dist/utils/command-errors.js.map +1 -0
  486. package/dist/utils/command-output.d.ts +5 -0
  487. package/dist/utils/command-output.d.ts.map +1 -0
  488. package/dist/utils/command-output.js +46 -0
  489. package/dist/utils/command-output.js.map +1 -0
  490. package/dist/utils/command-schema.d.ts +29 -0
  491. package/dist/utils/command-schema.d.ts.map +1 -0
  492. package/dist/utils/command-schema.js +74 -0
  493. package/dist/utils/command-schema.js.map +1 -0
  494. package/dist/utils/commander-errors.d.ts +8 -0
  495. package/dist/utils/commander-errors.d.ts.map +1 -0
  496. package/dist/utils/commander-errors.js +79 -0
  497. package/dist/utils/commander-errors.js.map +1 -0
  498. package/dist/utils/commander-setup.d.ts +3 -0
  499. package/dist/utils/commander-setup.d.ts.map +1 -0
  500. package/dist/utils/commander-setup.js +10 -0
  501. package/dist/utils/commander-setup.js.map +1 -0
  502. package/dist/utils/config.d.ts +13 -0
  503. package/dist/utils/config.d.ts.map +1 -0
  504. package/dist/utils/config.js +71 -0
  505. package/dist/utils/config.js.map +1 -0
  506. package/dist/utils/credentials.d.ts +6 -0
  507. package/dist/utils/credentials.d.ts.map +1 -0
  508. package/dist/utils/credentials.js +64 -0
  509. package/dist/utils/credentials.js.map +1 -0
  510. package/dist/utils/device.d.ts +7 -0
  511. package/dist/utils/device.d.ts.map +1 -0
  512. package/dist/utils/device.js +133 -0
  513. package/dist/utils/device.js.map +1 -0
  514. package/dist/utils/field-mask.d.ts +2 -0
  515. package/dist/utils/field-mask.d.ts.map +1 -0
  516. package/dist/utils/field-mask.js +93 -0
  517. package/dist/utils/field-mask.js.map +1 -0
  518. package/dist/utils/git-diff.d.ts +5 -0
  519. package/dist/utils/git-diff.d.ts.map +1 -0
  520. package/dist/utils/git-diff.js +14 -0
  521. package/dist/utils/git-diff.js.map +1 -0
  522. package/dist/utils/git-file-reader.d.ts +22 -0
  523. package/dist/utils/git-file-reader.d.ts.map +1 -0
  524. package/dist/utils/git-file-reader.js +45 -0
  525. package/dist/utils/git-file-reader.js.map +1 -0
  526. package/dist/utils/git-file-selection.d.ts +14 -0
  527. package/dist/utils/git-file-selection.d.ts.map +1 -0
  528. package/dist/utils/git-file-selection.js +20 -0
  529. package/dist/utils/git-file-selection.js.map +1 -0
  530. package/dist/utils/git-file-targets.d.ts +4 -0
  531. package/dist/utils/git-file-targets.d.ts.map +1 -0
  532. package/dist/utils/git-file-targets.js +11 -0
  533. package/dist/utils/git-file-targets.js.map +1 -0
  534. package/dist/utils/git-remote.d.ts +7 -0
  535. package/dist/utils/git-remote.d.ts.map +1 -0
  536. package/dist/utils/git-remote.js +94 -0
  537. package/dist/utils/git-remote.js.map +1 -0
  538. package/dist/utils/git-status.d.ts +7 -0
  539. package/dist/utils/git-status.d.ts.map +1 -0
  540. package/dist/utils/git-status.js +36 -0
  541. package/dist/utils/git-status.js.map +1 -0
  542. package/dist/utils/hunk.d.ts +15 -0
  543. package/dist/utils/hunk.d.ts.map +1 -0
  544. package/dist/utils/hunk.js +44 -0
  545. package/dist/utils/hunk.js.map +1 -0
  546. package/dist/utils/input-validation.d.ts +11 -0
  547. package/dist/utils/input-validation.d.ts.map +1 -0
  548. package/dist/utils/input-validation.js +73 -0
  549. package/dist/utils/input-validation.js.map +1 -0
  550. package/dist/utils/install-instructions.d.ts +6 -0
  551. package/dist/utils/install-instructions.d.ts.map +1 -0
  552. package/dist/utils/install-instructions.js +18 -0
  553. package/dist/utils/install-instructions.js.map +1 -0
  554. package/dist/utils/logger.d.ts +13 -0
  555. package/dist/utils/logger.d.ts.map +1 -0
  556. package/dist/utils/logger.js +48 -0
  557. package/dist/utils/logger.js.map +1 -0
  558. package/dist/utils/rate-limit.d.ts +5 -0
  559. package/dist/utils/rate-limit.d.ts.map +1 -0
  560. package/dist/utils/rate-limit.js +56 -0
  561. package/dist/utils/rate-limit.js.map +1 -0
  562. package/dist/utils/recent-activity.d.ts +9 -0
  563. package/dist/utils/recent-activity.d.ts.map +1 -0
  564. package/dist/utils/recent-activity.js +139 -0
  565. package/dist/utils/recent-activity.js.map +1 -0
  566. package/dist/utils/repo-settings-dashboard.d.ts +6 -0
  567. package/dist/utils/repo-settings-dashboard.d.ts.map +1 -0
  568. package/dist/utils/repo-settings-dashboard.js +36 -0
  569. package/dist/utils/repo-settings-dashboard.js.map +1 -0
  570. package/dist/utils/repo-settings-patterns.d.ts +7 -0
  571. package/dist/utils/repo-settings-patterns.d.ts.map +1 -0
  572. package/dist/utils/repo-settings-patterns.js +66 -0
  573. package/dist/utils/repo-settings-patterns.js.map +1 -0
  574. package/dist/utils/repo-settings-schema.d.ts +6 -0
  575. package/dist/utils/repo-settings-schema.d.ts.map +1 -0
  576. package/dist/utils/repo-settings-schema.js +70 -0
  577. package/dist/utils/repo-settings-schema.js.map +1 -0
  578. package/dist/utils/review-output.d.ts +4 -0
  579. package/dist/utils/review-output.d.ts.map +1 -0
  580. package/dist/utils/review-output.js +18 -0
  581. package/dist/utils/review-output.js.map +1 -0
  582. package/dist/utils/skills-sync-manifest.d.ts +5 -0
  583. package/dist/utils/skills-sync-manifest.d.ts.map +1 -0
  584. package/dist/utils/skills-sync-manifest.js +39 -0
  585. package/dist/utils/skills-sync-manifest.js.map +1 -0
  586. package/dist/utils/skills-sync-paths.d.ts +5 -0
  587. package/dist/utils/skills-sync-paths.d.ts.map +1 -0
  588. package/dist/utils/skills-sync-paths.js +60 -0
  589. package/dist/utils/skills-sync-paths.js.map +1 -0
  590. package/dist/utils/skills-sync-targets.d.ts +3 -0
  591. package/dist/utils/skills-sync-targets.d.ts.map +1 -0
  592. package/dist/utils/skills-sync-targets.js +218 -0
  593. package/dist/utils/skills-sync-targets.js.map +1 -0
  594. package/dist/utils/skills-sync.d.ts +39 -0
  595. package/dist/utils/skills-sync.d.ts.map +1 -0
  596. package/dist/utils/skills-sync.js +200 -0
  597. package/dist/utils/skills-sync.js.map +1 -0
  598. package/dist/utils/skills.d.ts +13 -0
  599. package/dist/utils/skills.d.ts.map +1 -0
  600. package/dist/utils/skills.js +117 -0
  601. package/dist/utils/skills.js.map +1 -0
  602. package/dist/utils/stream-input.d.ts +13 -0
  603. package/dist/utils/stream-input.d.ts.map +1 -0
  604. package/dist/utils/stream-input.js +36 -0
  605. package/dist/utils/stream-input.js.map +1 -0
  606. package/dist/utils/team-key-auth.d.ts +5 -0
  607. package/dist/utils/team-key-auth.d.ts.map +1 -0
  608. package/dist/utils/team-key-auth.js +14 -0
  609. package/dist/utils/team-key-auth.js.map +1 -0
  610. package/dist/utils/update-check.d.ts +2 -0
  611. package/dist/utils/update-check.d.ts.map +1 -0
  612. package/dist/utils/update-check.js +30 -0
  613. package/dist/utils/update-check.js.map +1 -0
  614. package/package.json +90 -0
  615. package/skills/README.md +64 -0
  616. package/skills/hunk-review/SKILL.md +154 -0
  617. package/skills/mesrai-business-rules-validation/SKILL.md +65 -0
  618. package/skills/mesrai-centralized-config/SKILL.md +102 -0
  619. package/skills/mesrai-mesrai-rules/SKILL.md +103 -0
  620. package/skills/mesrai-mesrai-rules/instructions/create-mesrai-rule.md +56 -0
  621. package/skills/mesrai-mesrai-rules/instructions/update-mesrai-rule.md +63 -0
  622. package/skills/mesrai-mesrai-rules/instructions/view-mesrai-rules.md +65 -0
  623. package/skills/mesrai-mesrai-rules/rules/create-mesrai-rule.md +48 -0
  624. package/skills/mesrai-mesrai-rules/rules/update-mesrai-rule.md +55 -0
  625. package/skills/mesrai-mesrai-rules/rules/view-mesrai-rules.md +56 -0
  626. package/skills/mesrai-pr-suggestions-resolver/SKILL.md +61 -0
  627. package/skills/mesrai-review/SKILL.md +53 -0
  628. package/skills/mesrai-review-dev/SKILL.md +55 -0
  629. package/skills/mesrai-review-dev/scripts/run-local-cli.sh +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"centralized-config.service.d.ts","sourceRoot":"","sources":["../../src/services/centralized-config.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACR,+BAA+B,EAC/B,uBAAuB,EACvB,gBAAgB,EACnB,MAAM,oBAAoB,CAAC;AAI5B,KAAK,WAAW,GAAG;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,IAAI,GAAG,QAAQ,CAAC;CAC/B,CAAC;AAEF,cAAM,wBAAwB;IACpB,SAAS,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAK7C,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CACrC,+BAA+B,GAAG;QAC9B,UAAU,EAAE,gBAAgB,CAAC;KAChC,CACJ;IAkBK,IAAI,IAAI,OAAO,CAAC,+BAA+B,CAAC;IAKhD,OAAO,IAAI,OAAO,CAAC,+BAA+B,CAAC;IAKnD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QACrC,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;YAqBY,wBAAwB;YAyExB,iCAAiC;IA4B/C,OAAO,CAAC,oBAAoB;YAOd,cAAc;CAO/B;AAED,eAAO,MAAM,wBAAwB,0BAAiC,CAAC"}
@@ -0,0 +1,112 @@
1
+ import { select } from '@inquirer/prompts';
2
+ import fs from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { api } from './api/index.js';
5
+ import { gitService } from './git.service.js';
6
+ import { CommandError } from '../utils/command-errors.js';
7
+ import { resolveTeamKeyAccess } from '../utils/team-key-auth.js';
8
+ class CentralizedConfigService {
9
+ async getStatus() {
10
+ const teamKey = await this.requireTeamKey();
11
+ return api.config.getCentralizedConfigStatus(teamKey);
12
+ }
13
+ async init(options) {
14
+ const teamKey = await this.requireTeamKey();
15
+ const repository = await this.resolveRepositoryForInit(teamKey, options.repository);
16
+ const response = await api.config.initCentralizedConfig(teamKey, {
17
+ repositoryId: repository.id,
18
+ syncOption: options.syncOption,
19
+ });
20
+ return {
21
+ ...response,
22
+ repository,
23
+ };
24
+ }
25
+ async sync() {
26
+ const teamKey = await this.requireTeamKey();
27
+ return api.config.syncCentralizedConfig(teamKey);
28
+ }
29
+ async disable() {
30
+ const teamKey = await this.requireTeamKey();
31
+ return api.config.disableCentralizedConfig(teamKey);
32
+ }
33
+ async download(outPath) {
34
+ if (!outPath?.trim()) {
35
+ throw new CommandError('INVALID_INPUT', 'Output path is required. Use: --out <path>.');
36
+ }
37
+ const teamKey = await this.requireTeamKey();
38
+ const binary = await api.config.downloadCentralizedConfig(teamKey);
39
+ const outputPath = path.resolve(outPath);
40
+ await fs.mkdir(path.dirname(outputPath), { recursive: true });
41
+ await fs.writeFile(outputPath, Buffer.from(binary));
42
+ return {
43
+ outputPath,
44
+ bytes: binary.byteLength,
45
+ };
46
+ }
47
+ async resolveRepositoryForInit(accessToken, repositoryRef) {
48
+ const selectedRepositories = (await api.config.getSelectedRepositories(accessToken)).filter((repo) => repo.selected !== false);
49
+ if (selectedRepositories.length === 0) {
50
+ throw new CommandError('INVALID_INPUT', 'No selected repositories found in Mesrai. Run `mesrai config remote add <owner/repo>` first.');
51
+ }
52
+ if (repositoryRef) {
53
+ const normalized = repositoryRef.trim();
54
+ const resolvedRef = normalized === '.'
55
+ ? await this.resolveCurrentRepositoryReference()
56
+ : normalized;
57
+ const normalizedLower = resolvedRef.toLowerCase();
58
+ const matched = selectedRepositories.find((repo) => {
59
+ const fullName = this.toRepositoryFullName(repo).toLowerCase();
60
+ return (String(repo.id) === resolvedRef ||
61
+ repo.name.toLowerCase() === normalizedLower ||
62
+ fullName === normalizedLower);
63
+ });
64
+ if (!matched) {
65
+ throw new CommandError('INVALID_INPUT', `Repository '${resolvedRef}' is not selected in Mesrai. Use mesrai config remote list to check selected repositories.`);
66
+ }
67
+ return matched;
68
+ }
69
+ if (!(process.stdin.isTTY && process.stdout.isTTY)) {
70
+ throw new CommandError('INVALID_INPUT', 'Repository is required in non-interactive mode. Use: `mesrai config centralized init <owner/repo> --sync-option <pr|manual>`.');
71
+ }
72
+ const selectedRepositoryId = await select({
73
+ message: 'Select the centralized config repository:',
74
+ choices: selectedRepositories
75
+ .map((repo) => ({
76
+ name: this.toRepositoryFullName(repo),
77
+ value: repo.id,
78
+ }))
79
+ .sort((a, b) => a.name.localeCompare(b.name)),
80
+ });
81
+ const selected = selectedRepositories.find((repo) => repo.id === selectedRepositoryId);
82
+ if (!selected) {
83
+ throw new CommandError('INVALID_INPUT', 'Invalid repository selection.');
84
+ }
85
+ return selected;
86
+ }
87
+ async resolveCurrentRepositoryReference() {
88
+ const isRepo = await gitService.isGitRepository();
89
+ if (!isRepo) {
90
+ throw new CommandError('NOT_IN_GIT_REPO', 'Current directory is not a git repository. Run this command inside a repository or provide owner/repo explicitly.');
91
+ }
92
+ const remoteUrl = await gitService.getRemoteUrl();
93
+ if (!remoteUrl) {
94
+ throw new CommandError('INVALID_INPUT', "No git remote found for this repository. Configure 'origin' or provide owner/repo explicitly.");
95
+ }
96
+ const orgRepo = await gitService.extractOrgRepo();
97
+ if (!orgRepo) {
98
+ throw new CommandError('INVALID_INPUT', `Could not resolve repository from git remote '${remoteUrl}'. Provide owner/repo explicitly.`);
99
+ }
100
+ return `${orgRepo.org}/${orgRepo.repo}`;
101
+ }
102
+ toRepositoryFullName(repository) {
103
+ return (repository.full_name ||
104
+ `${repository.organizationName}/${repository.name}`);
105
+ }
106
+ async requireTeamKey() {
107
+ const { teamKey } = await resolveTeamKeyAccess('Centralized config commands require team-key auth. Run: mesrai auth team-key --key <your-key>.');
108
+ return teamKey;
109
+ }
110
+ }
111
+ export const centralizedConfigService = new CentralizedConfigService();
112
+ //# sourceMappingURL=centralized-config.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"centralized-config.service.js","sourceRoot":"","sources":["../../src/services/centralized-config.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { ProjectContext } from '../types/cli.js';
2
+ /**
3
+ * Context Service - Reads project context files
4
+ * Similar to CodeRabbit CLI reading .cursorrules, claude.md, etc.
5
+ */
6
+ type RepoRootResolver = () => Promise<string>;
7
+ export declare class ContextService {
8
+ private readonly repoRootResolver;
9
+ constructor(repoRootResolver?: RepoRootResolver);
10
+ private fileExists;
11
+ private readFile;
12
+ private getRepoRoot;
13
+ readProjectContext(customContextPath?: string): Promise<ProjectContext>;
14
+ /**
15
+ * Formats project context for inclusion in review requests
16
+ */
17
+ formatContextForReview(context: ProjectContext): string;
18
+ /**
19
+ * Enriches diff with project context
20
+ */
21
+ enrichDiffWithContext(diff: string, customContextPath?: string, verbose?: boolean): Promise<string>;
22
+ }
23
+ export declare const contextService: ContextService;
24
+ export {};
25
+ //# sourceMappingURL=context.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.service.d.ts","sourceRoot":"","sources":["../../src/services/context.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAItD;;;GAGG;AACH,KAAK,gBAAgB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9C,qBAAa,cAAc;IAEnB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,GAAE,gBAGlC;YAGS,UAAU;YASV,QAAQ;YAcR,WAAW;IASnB,kBAAkB,CACpB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,cAAc,CAAC;IAiC1B;;OAEG;IACH,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;IA8BvD;;OAEG;IACG,qBAAqB,CACvB,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,CAAC;CAyCrB;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -0,0 +1,134 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import chalk from 'chalk';
4
+ import { gitService } from './git.service.js';
5
+ import { cliDebug } from '../utils/logger.js';
6
+ export class ContextService {
7
+ repoRootResolver;
8
+ constructor(repoRootResolver = async () => {
9
+ const root = await gitService.getGitRoot();
10
+ return root.trim();
11
+ }) {
12
+ this.repoRootResolver = repoRootResolver;
13
+ }
14
+ async fileExists(filePath) {
15
+ try {
16
+ await fs.access(filePath);
17
+ return true;
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ async readFile(filePath) {
24
+ try {
25
+ const exists = await this.fileExists(filePath);
26
+ if (!exists) {
27
+ return undefined;
28
+ }
29
+ const content = await fs.readFile(filePath, 'utf-8');
30
+ return content.trim();
31
+ }
32
+ catch {
33
+ return undefined;
34
+ }
35
+ }
36
+ async getRepoRoot() {
37
+ try {
38
+ return await this.repoRootResolver();
39
+ }
40
+ catch {
41
+ // Fallback to current directory
42
+ return process.cwd();
43
+ }
44
+ }
45
+ async readProjectContext(customContextPath) {
46
+ const repoRoot = await this.getRepoRoot();
47
+ const context = {};
48
+ // Read .cursorrules
49
+ const cursorRulesPath = path.join(repoRoot, '.cursorrules');
50
+ context.cursorRules = await this.readFile(cursorRulesPath);
51
+ // Read claude.md or .claude.md
52
+ const claudeMdPath = path.join(repoRoot, 'claude.md');
53
+ const dotClaudeMdPath = path.join(repoRoot, '.claude.md');
54
+ context.claudeRules =
55
+ (await this.readFile(claudeMdPath)) ||
56
+ (await this.readFile(dotClaudeMdPath));
57
+ // Read .mesrai.md or .mesrai/rules.md
58
+ const mesraiMdPath = path.join(repoRoot, '.mesrai.md');
59
+ const mesraiRulesPath = path.join(repoRoot, '.mesrai', 'rules.md');
60
+ context.mesraiRules =
61
+ (await this.readFile(mesraiMdPath)) ||
62
+ (await this.readFile(mesraiRulesPath));
63
+ // Read custom context file if specified
64
+ if (customContextPath) {
65
+ const customPath = path.isAbsolute(customContextPath)
66
+ ? customContextPath
67
+ : path.join(repoRoot, customContextPath);
68
+ context.customContext = await this.readFile(customPath);
69
+ }
70
+ return context;
71
+ }
72
+ /**
73
+ * Formats project context for inclusion in review requests
74
+ */
75
+ formatContextForReview(context) {
76
+ const parts = [];
77
+ if (context.cursorRules) {
78
+ parts.push('=== Cursor Rules (.cursorrules) ===');
79
+ parts.push(context.cursorRules);
80
+ parts.push('');
81
+ }
82
+ if (context.claudeRules) {
83
+ parts.push('=== Claude Rules (claude.md) ===');
84
+ parts.push(context.claudeRules);
85
+ parts.push('');
86
+ }
87
+ if (context.mesraiRules) {
88
+ parts.push('=== Mesrai Rules (.mesrai.md) ===');
89
+ parts.push(context.mesraiRules);
90
+ parts.push('');
91
+ }
92
+ if (context.customContext) {
93
+ parts.push('=== Custom Context ===');
94
+ parts.push(context.customContext);
95
+ parts.push('');
96
+ }
97
+ return parts.join('\n');
98
+ }
99
+ /**
100
+ * Enriches diff with project context
101
+ */
102
+ async enrichDiffWithContext(diff, customContextPath, verbose) {
103
+ const context = await this.readProjectContext(customContextPath);
104
+ const formattedContext = this.formatContextForReview(context);
105
+ if (verbose) {
106
+ const contextFiles = [];
107
+ if (context.cursorRules) {
108
+ contextFiles.push('.cursorrules');
109
+ }
110
+ if (context.claudeRules) {
111
+ contextFiles.push('claude.md');
112
+ }
113
+ if (context.mesraiRules) {
114
+ contextFiles.push('.mesrai.md');
115
+ }
116
+ if (context.customContext) {
117
+ contextFiles.push('custom context file');
118
+ }
119
+ if (contextFiles.length > 0) {
120
+ cliDebug(chalk.dim(`[verbose] Found context files: ${contextFiles.join(', ')}`));
121
+ cliDebug(chalk.dim(`[verbose] Total context size: ${formattedContext.length} characters`));
122
+ }
123
+ else {
124
+ cliDebug(chalk.dim('[verbose] No context files found'));
125
+ }
126
+ }
127
+ if (!formattedContext) {
128
+ return diff;
129
+ }
130
+ return `${formattedContext}\n=== Code Changes ===\n${diff}`;
131
+ }
132
+ }
133
+ export const contextService = new ContextService();
134
+ //# sourceMappingURL=context.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.service.js","sourceRoot":"","sources":["../../src/services/context.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface DeviceLoginResult {
2
+ accessToken: string;
3
+ refreshToken: string;
4
+ userEmail?: string;
5
+ }
6
+ export interface DeviceLoginPrompt {
7
+ userCode: string;
8
+ verificationUri: string;
9
+ verificationUriComplete: string;
10
+ expiresIn: number;
11
+ }
12
+ /**
13
+ * Device-code flow (RFC 8628). Used when there is no usable browser on this
14
+ * machine (CI, SSH, docker exec).
15
+ *
16
+ * Caller is responsible for printing the user_code + verification_uri so the
17
+ * user can complete authorization on another device. We try to open the URL
18
+ * automatically as a courtesy but do not require it.
19
+ */
20
+ export declare function loginViaDeviceCode({ onPrompt, }: {
21
+ onPrompt: (prompt: DeviceLoginPrompt) => void | Promise<void>;
22
+ }): Promise<DeviceLoginResult>;
23
+ //# sourceMappingURL=device-login.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-login.service.d.ts","sourceRoot":"","sources":["../../src/services/device-login.service.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,EACrC,QAAQ,GACX,EAAE;IACC,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiB7B"}
@@ -0,0 +1,70 @@
1
+ import open from 'open';
2
+ import { cliAuthApi } from './api/cli-auth.api.js';
3
+ const POLL_FALLBACK_INTERVAL_MS = 5_000;
4
+ const POLL_BACKOFF_MAX_MS = 15_000;
5
+ /**
6
+ * Device-code flow (RFC 8628). Used when there is no usable browser on this
7
+ * machine (CI, SSH, docker exec).
8
+ *
9
+ * Caller is responsible for printing the user_code + verification_uri so the
10
+ * user can complete authorization on another device. We try to open the URL
11
+ * automatically as a courtesy but do not require it.
12
+ */
13
+ export async function loginViaDeviceCode({ onPrompt, }) {
14
+ const init = await cliAuthApi.initDevice();
15
+ await onPrompt({
16
+ userCode: init.userCode,
17
+ verificationUri: init.verificationUri,
18
+ verificationUriComplete: init.verificationUriComplete,
19
+ expiresIn: init.expiresIn,
20
+ });
21
+ try {
22
+ await open(init.verificationUriComplete);
23
+ }
24
+ catch {
25
+ // Headless: user opens the URL on another device.
26
+ }
27
+ return pollUntilTerminal(init.deviceCode, init.interval, init.expiresIn);
28
+ }
29
+ async function pollUntilTerminal(deviceCode, intervalSec, expiresInSec) {
30
+ const startedAt = Date.now();
31
+ const totalTimeoutMs = expiresInSec * 1000;
32
+ let delay = Math.max(intervalSec, 1) * 1000;
33
+ while (Date.now() - startedAt < totalTimeoutMs) {
34
+ await sleep(delay);
35
+ let response;
36
+ try {
37
+ response = await cliAuthApi.poll({ deviceCode });
38
+ }
39
+ catch {
40
+ // Transient network error; back off and try again.
41
+ delay = Math.min(delay * 2, POLL_BACKOFF_MAX_MS);
42
+ continue;
43
+ }
44
+ if (response.status === 'completed') {
45
+ if (!response.accessToken || !response.refreshToken) {
46
+ throw new Error('Authorization completed but the server returned no tokens');
47
+ }
48
+ return {
49
+ accessToken: response.accessToken,
50
+ refreshToken: response.refreshToken,
51
+ userEmail: response.userEmail,
52
+ };
53
+ }
54
+ if (response.status === 'expired' ||
55
+ response.status === 'denied' ||
56
+ response.status === 'consumed' ||
57
+ response.status === 'not_found') {
58
+ throw new Error(`Authorization ${response.status}. Run \`mesrai auth login --device-code\` again.`);
59
+ }
60
+ // Pending: keep the requested interval, no backoff.
61
+ delay = Math.max(intervalSec, 1) * 1000;
62
+ if (delay < POLL_FALLBACK_INTERVAL_MS)
63
+ delay = POLL_FALLBACK_INTERVAL_MS;
64
+ }
65
+ throw new Error('Authorization timed out before the user approved it');
66
+ }
67
+ function sleep(ms) {
68
+ return new Promise((resolve) => setTimeout(resolve, ms));
69
+ }
70
+ //# sourceMappingURL=device-login.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-login.service.js","sourceRoot":"","sources":["../../src/services/device-login.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { ReviewIssue } from '../types/review.js';
2
+ /**
3
+ * Fix Service - Applies code fixes to files
4
+ */
5
+ declare class FixService {
6
+ /**
7
+ * Applies a single fix to a file
8
+ */
9
+ applyFix(issue: ReviewIssue): Promise<void>;
10
+ /**
11
+ * Applies multiple fixes to files
12
+ */
13
+ applyFixes(issues: ReviewIssue[]): Promise<{
14
+ applied: number;
15
+ failed: number;
16
+ }>;
17
+ /**
18
+ * Generates a preview diff for a fix
19
+ */
20
+ generatePreview(issue: ReviewIssue): string;
21
+ private applyReplace;
22
+ private applyInsert;
23
+ private applyDelete;
24
+ /**
25
+ * Checks if a fix can be safely applied
26
+ */
27
+ canApplyFix(issue: ReviewIssue): Promise<boolean>;
28
+ }
29
+ export declare const fixService: FixService;
30
+ export {};
31
+ //# sourceMappingURL=fix.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix.service.d.ts","sourceRoot":"","sources":["../../src/services/fix.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG/D;;GAEG;AACH,cAAM,UAAU;IACZ;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBjD;;OAEG;IACG,UAAU,CACZ,MAAM,EAAE,WAAW,EAAE,GACtB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAsC/C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;YAoB7B,YAAY;YAkBZ,WAAW;YAaX,WAAW;IAazB;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;CAa1D;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC"}
@@ -0,0 +1,121 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import { cliError } from '../utils/logger.js';
4
+ /**
5
+ * Fix Service - Applies code fixes to files
6
+ */
7
+ class FixService {
8
+ /**
9
+ * Applies a single fix to a file
10
+ */
11
+ async applyFix(issue) {
12
+ if (!issue.fixable || !issue.fix) {
13
+ throw new Error('Issue is not fixable');
14
+ }
15
+ const filePath = path.resolve(issue.file);
16
+ const content = await fs.readFile(filePath, 'utf-8');
17
+ const lines = content.split('\n');
18
+ const fix = issue.fix;
19
+ switch (fix.type) {
20
+ case 'replace':
21
+ await this.applyReplace(filePath, lines, fix);
22
+ break;
23
+ case 'insert':
24
+ await this.applyInsert(filePath, lines, fix);
25
+ break;
26
+ case 'delete':
27
+ await this.applyDelete(filePath, lines, fix);
28
+ break;
29
+ }
30
+ }
31
+ /**
32
+ * Applies multiple fixes to files
33
+ */
34
+ async applyFixes(issues) {
35
+ let applied = 0;
36
+ let failed = 0;
37
+ // Group fixes by file to avoid conflicts
38
+ const fixesByFile = new Map();
39
+ for (const issue of issues) {
40
+ if (issue.fixable && issue.fix) {
41
+ const file = issue.file;
42
+ if (!fixesByFile.has(file)) {
43
+ fixesByFile.set(file, []);
44
+ }
45
+ fixesByFile.get(file).push(issue);
46
+ }
47
+ }
48
+ // Sort fixes by line number (descending) to avoid line number shifts
49
+ for (const [, fileIssues] of fixesByFile.entries()) {
50
+ fileIssues.sort((a, b) => (b.line || 0) - (a.line || 0));
51
+ for (const issue of fileIssues) {
52
+ try {
53
+ await this.applyFix(issue);
54
+ applied++;
55
+ }
56
+ catch (error) {
57
+ failed++;
58
+ cliError(`Failed to apply fix for ${issue.file}:${issue.line}`, error);
59
+ }
60
+ }
61
+ }
62
+ return { applied, failed };
63
+ }
64
+ /**
65
+ * Generates a preview diff for a fix
66
+ */
67
+ generatePreview(issue) {
68
+ if (!issue.fixable || !issue.fix) {
69
+ return 'No fix available';
70
+ }
71
+ const lines = [];
72
+ const fix = issue.fix;
73
+ lines.push(`File: ${issue.file}:${issue.line}`);
74
+ lines.push('');
75
+ if (fix.oldCode) {
76
+ lines.push('- ' + fix.oldCode.split('\n').join('\n- '));
77
+ }
78
+ lines.push('+ ' + fix.newCode.split('\n').join('\n+ '));
79
+ return lines.join('\n');
80
+ }
81
+ async applyReplace(filePath, lines, fix) {
82
+ // Replace lines from startLine to endLine with newCode
83
+ const newCodeLines = fix.newCode.split('\n');
84
+ // Lines are 1-indexed, array is 0-indexed
85
+ const startIdx = fix.startLine - 1;
86
+ const endIdx = fix.endLine - 1;
87
+ // Remove old lines and insert new ones
88
+ lines.splice(startIdx, endIdx - startIdx + 1, ...newCodeLines);
89
+ await fs.writeFile(filePath, lines.join('\n'), 'utf-8');
90
+ }
91
+ async applyInsert(filePath, lines, fix) {
92
+ const newCodeLines = fix.newCode.split('\n');
93
+ const insertIdx = fix.startLine - 1;
94
+ lines.splice(insertIdx, 0, ...newCodeLines);
95
+ await fs.writeFile(filePath, lines.join('\n'), 'utf-8');
96
+ }
97
+ async applyDelete(filePath, lines, fix) {
98
+ const startIdx = fix.startLine - 1;
99
+ const endIdx = fix.endLine - 1;
100
+ lines.splice(startIdx, endIdx - startIdx + 1);
101
+ await fs.writeFile(filePath, lines.join('\n'), 'utf-8');
102
+ }
103
+ /**
104
+ * Checks if a fix can be safely applied
105
+ */
106
+ async canApplyFix(issue) {
107
+ if (!issue.fixable || !issue.fix) {
108
+ return false;
109
+ }
110
+ try {
111
+ const filePath = path.resolve(issue.file);
112
+ await fs.access(filePath);
113
+ return true;
114
+ }
115
+ catch {
116
+ return false;
117
+ }
118
+ }
119
+ }
120
+ export const fixService = new FixService();
121
+ //# sourceMappingURL=fix.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix.service.js","sourceRoot":"","sources":["../../src/services/fix.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ declare class GitHooksService {
2
+ /**
3
+ * Install prepare-commit-msg and post-commit hooks for checkpoint tracking.
4
+ */
5
+ install(gitRoot: string): Promise<{
6
+ installed: string[];
7
+ alreadyInstalled: string[];
8
+ }>;
9
+ /**
10
+ * Remove mesrai session hooks from prepare-commit-msg and post-commit.
11
+ */
12
+ uninstall(gitRoot: string): Promise<{
13
+ removed: string[];
14
+ }>;
15
+ private installHook;
16
+ private removeHook;
17
+ }
18
+ export declare const gitHooksService: GitHooksService;
19
+ export {};
20
+ //# sourceMappingURL=git-hooks.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-hooks.service.d.ts","sourceRoot":"","sources":["../../src/services/git-hooks.service.ts"],"names":[],"mappings":"AA+BA,cAAM,eAAe;IACjB;;OAEG;IACG,OAAO,CACT,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA6B/D;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;YAmBlD,WAAW;YAiCX,UAAU;CAgD3B;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}