@kodus/cli 0.4.8 → 0.4.9

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 (316) hide show
  1. package/README.md +77 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +2 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/config.d.ts +1 -5
  6. package/dist/commands/config.d.ts.map +1 -1
  7. package/dist/commands/config.js +10 -71
  8. package/dist/commands/config.js.map +1 -1
  9. package/dist/commands/hook/install.d.ts +1 -1
  10. package/dist/commands/hook/install.d.ts.map +1 -1
  11. package/dist/commands/hook/uninstall.d.ts +1 -1
  12. package/dist/commands/hook/uninstall.d.ts.map +1 -1
  13. package/dist/commands/memory/disable.d.ts +1 -1
  14. package/dist/commands/memory/disable.d.ts.map +1 -1
  15. package/dist/commands/pr.d.ts +1 -2
  16. package/dist/commands/pr.d.ts.map +1 -1
  17. package/dist/commands/pr.js +1 -243
  18. package/dist/commands/pr.js.map +1 -1
  19. package/dist/commands/review.d.ts +1 -2
  20. package/dist/commands/review.d.ts.map +1 -1
  21. package/dist/commands/review.js +1 -314
  22. package/dist/commands/review.js.map +1 -1
  23. package/dist/commands/status.d.ts.map +1 -1
  24. package/dist/commands/status.js +2 -14
  25. package/dist/commands/status.js.map +1 -1
  26. package/dist/commands/update.d.ts +1 -0
  27. package/dist/commands/update.d.ts.map +1 -1
  28. package/dist/commands/update.js +24 -1
  29. package/dist/commands/update.js.map +1 -1
  30. package/dist/features/pr/command.d.ts +4 -0
  31. package/dist/features/pr/command.d.ts.map +1 -0
  32. package/dist/features/pr/command.js +222 -0
  33. package/dist/features/pr/command.js.map +1 -0
  34. package/dist/features/repo-config/actions.d.ts +33 -0
  35. package/dist/features/repo-config/actions.d.ts.map +1 -0
  36. package/dist/features/repo-config/actions.js +260 -0
  37. package/dist/features/repo-config/actions.js.map +1 -0
  38. package/dist/features/repo-config/command.d.ts +15 -0
  39. package/dist/features/repo-config/command.d.ts.map +1 -0
  40. package/dist/features/repo-config/command.js +135 -0
  41. package/dist/features/repo-config/command.js.map +1 -0
  42. package/dist/features/review/command.d.ts +4 -0
  43. package/dist/features/review/command.d.ts.map +1 -0
  44. package/dist/features/review/command.js +248 -0
  45. package/dist/features/review/command.js.map +1 -0
  46. package/dist/features/review/diff.d.ts +23 -0
  47. package/dist/features/review/diff.d.ts.map +1 -0
  48. package/dist/features/review/diff.js +47 -0
  49. package/dist/features/review/diff.js.map +1 -0
  50. package/dist/features/review/errors.d.ts +3 -0
  51. package/dist/features/review/errors.d.ts.map +1 -0
  52. package/dist/features/review/errors.js +26 -0
  53. package/dist/features/review/errors.js.map +1 -0
  54. package/dist/features/review/no-changes.d.ts +6 -0
  55. package/dist/features/review/no-changes.d.ts.map +1 -0
  56. package/dist/features/review/no-changes.js +31 -0
  57. package/dist/features/review/no-changes.js.map +1 -0
  58. package/dist/features/review/options.d.ts +7 -0
  59. package/dist/features/review/options.d.ts.map +1 -0
  60. package/dist/features/review/options.js +18 -0
  61. package/dist/features/review/options.js.map +1 -0
  62. package/dist/features/review/result.d.ts +11 -0
  63. package/dist/features/review/result.d.ts.map +1 -0
  64. package/dist/features/review/result.js +49 -0
  65. package/dist/features/review/result.js.map +1 -0
  66. package/dist/formatters/json.d.ts +1 -1
  67. package/dist/formatters/json.d.ts.map +1 -1
  68. package/dist/formatters/markdown.d.ts +1 -1
  69. package/dist/formatters/markdown.d.ts.map +1 -1
  70. package/dist/formatters/markdown.js.map +1 -1
  71. package/dist/formatters/prompt.d.ts +1 -1
  72. package/dist/formatters/prompt.d.ts.map +1 -1
  73. package/dist/formatters/repo-config.d.ts +7 -0
  74. package/dist/formatters/repo-config.d.ts.map +1 -0
  75. package/dist/formatters/repo-config.js +99 -0
  76. package/dist/formatters/repo-config.js.map +1 -0
  77. package/dist/formatters/terminal.d.ts +1 -1
  78. package/dist/formatters/terminal.d.ts.map +1 -1
  79. package/dist/formatters/terminal.js.map +1 -1
  80. package/dist/index.js +2 -0
  81. package/dist/index.js.map +1 -1
  82. package/dist/services/api/api-core.d.ts +15 -0
  83. package/dist/services/api/api-core.d.ts.map +1 -0
  84. package/dist/services/api/api-core.js +292 -0
  85. package/dist/services/api/api-core.js.map +1 -0
  86. package/dist/services/api/api.interface.d.ts +16 -1
  87. package/dist/services/api/api.interface.d.ts.map +1 -1
  88. package/dist/services/api/api.real.d.ts +12 -20
  89. package/dist/services/api/api.real.d.ts.map +1 -1
  90. package/dist/services/api/api.real.js +8 -545
  91. package/dist/services/api/api.real.js.map +1 -1
  92. package/dist/services/api/auth.api.d.ts +17 -0
  93. package/dist/services/api/auth.api.d.ts.map +1 -0
  94. package/dist/services/api/auth.api.js +73 -0
  95. package/dist/services/api/auth.api.js.map +1 -0
  96. package/dist/services/api/config.api.d.ts +24 -0
  97. package/dist/services/api/config.api.d.ts.map +1 -0
  98. package/dist/services/api/config.api.js +78 -0
  99. package/dist/services/api/config.api.js.map +1 -0
  100. package/dist/services/api/memory.api.d.ts +10 -0
  101. package/dist/services/api/memory.api.d.ts.map +1 -0
  102. package/dist/services/api/memory.api.js +19 -0
  103. package/dist/services/api/memory.api.js.map +1 -0
  104. package/dist/services/api/review.api.d.ts +26 -0
  105. package/dist/services/api/review.api.d.ts.map +1 -0
  106. package/dist/services/api/review.api.js +117 -0
  107. package/dist/services/api/review.api.js.map +1 -0
  108. package/dist/services/api/sessions.api.js +1 -1
  109. package/dist/services/api/sessions.api.js.map +1 -1
  110. package/dist/services/api/trial.api.d.ts +10 -0
  111. package/dist/services/api/trial.api.d.ts.map +1 -0
  112. package/dist/services/api/trial.api.js +11 -0
  113. package/dist/services/api/trial.api.js.map +1 -0
  114. package/dist/services/auth.service.d.ts +1 -1
  115. package/dist/services/auth.service.d.ts.map +1 -1
  116. package/dist/services/auth.service.js +1 -1
  117. package/dist/services/auth.service.js.map +1 -1
  118. package/dist/services/context.service.d.ts +1 -1
  119. package/dist/services/context.service.d.ts.map +1 -1
  120. package/dist/services/fix.service.d.ts +1 -1
  121. package/dist/services/fix.service.d.ts.map +1 -1
  122. package/dist/services/git.service.d.ts +2 -2
  123. package/dist/services/git.service.d.ts.map +1 -1
  124. package/dist/services/git.service.js +25 -172
  125. package/dist/services/git.service.js.map +1 -1
  126. package/dist/services/lifecycle-events.d.ts +49 -0
  127. package/dist/services/lifecycle-events.d.ts.map +1 -0
  128. package/dist/services/lifecycle-events.js +86 -0
  129. package/dist/services/lifecycle-events.js.map +1 -0
  130. package/dist/services/lifecycle-git-context.d.ts +15 -0
  131. package/dist/services/lifecycle-git-context.d.ts.map +1 -0
  132. package/dist/services/lifecycle-git-context.js +23 -0
  133. package/dist/services/lifecycle-git-context.js.map +1 -0
  134. package/dist/services/lifecycle-local-turn-state.d.ts +14 -0
  135. package/dist/services/lifecycle-local-turn-state.d.ts.map +1 -0
  136. package/dist/services/lifecycle-local-turn-state.js +18 -0
  137. package/dist/services/lifecycle-local-turn-state.js.map +1 -0
  138. package/dist/services/lifecycle-transcript.d.ts +25 -0
  139. package/dist/services/lifecycle-transcript.d.ts.map +1 -0
  140. package/dist/services/lifecycle-transcript.js +29 -0
  141. package/dist/services/lifecycle-transcript.js.map +1 -0
  142. package/dist/services/lifecycle-turn-data.d.ts +11 -0
  143. package/dist/services/lifecycle-turn-data.d.ts.map +1 -0
  144. package/dist/services/lifecycle-turn-data.js +23 -0
  145. package/dist/services/lifecycle-turn-data.js.map +1 -0
  146. package/dist/services/lifecycle.service.d.ts.map +1 -1
  147. package/dist/services/lifecycle.service.js +63 -132
  148. package/dist/services/lifecycle.service.js.map +1 -1
  149. package/dist/services/repo-config.service.d.ts.map +1 -1
  150. package/dist/services/repo-config.service.js +2 -8
  151. package/dist/services/repo-config.service.js.map +1 -1
  152. package/dist/services/repo-settings-wizard.service.d.ts +19 -0
  153. package/dist/services/repo-settings-wizard.service.d.ts.map +1 -0
  154. package/dist/services/repo-settings-wizard.service.js +260 -0
  155. package/dist/services/repo-settings-wizard.service.js.map +1 -0
  156. package/dist/services/repo-settings.service.d.ts +20 -0
  157. package/dist/services/repo-settings.service.d.ts.map +1 -0
  158. package/dist/services/repo-settings.service.js +86 -0
  159. package/dist/services/repo-settings.service.js.map +1 -0
  160. package/dist/services/review-auth-fallback.d.ts +7 -0
  161. package/dist/services/review-auth-fallback.d.ts.map +1 -0
  162. package/dist/services/review-auth-fallback.js +25 -0
  163. package/dist/services/review-auth-fallback.js.map +1 -0
  164. package/dist/services/review-config-builder.d.ts +19 -0
  165. package/dist/services/review-config-builder.d.ts.map +1 -0
  166. package/dist/services/review-config-builder.js +17 -0
  167. package/dist/services/review-config-builder.js.map +1 -0
  168. package/dist/services/review-file-filter.d.ts +3 -0
  169. package/dist/services/review-file-filter.d.ts.map +1 -0
  170. package/dist/services/review-file-filter.js +35 -0
  171. package/dist/services/review-file-filter.js.map +1 -0
  172. package/dist/services/review-normalizer.d.ts +6 -0
  173. package/dist/services/review-normalizer.d.ts.map +1 -0
  174. package/dist/services/review-normalizer.js +62 -0
  175. package/dist/services/review-normalizer.js.map +1 -0
  176. package/dist/services/review-verbose.d.ts +28 -0
  177. package/dist/services/review-verbose.d.ts.map +1 -0
  178. package/dist/services/review-verbose.js +52 -0
  179. package/dist/services/review-verbose.js.map +1 -0
  180. package/dist/services/review.service.d.ts +1 -5
  181. package/dist/services/review.service.d.ts.map +1 -1
  182. package/dist/services/review.service.js +55 -182
  183. package/dist/services/review.service.js.map +1 -1
  184. package/dist/types/auth.d.ts +18 -0
  185. package/dist/types/auth.d.ts.map +1 -0
  186. package/dist/types/auth.js +2 -0
  187. package/dist/types/auth.js.map +1 -0
  188. package/dist/types/cli.d.ts +33 -0
  189. package/dist/types/cli.d.ts.map +1 -0
  190. package/dist/types/cli.js +2 -0
  191. package/dist/types/cli.js.map +1 -0
  192. package/dist/types/config.d.ts +47 -0
  193. package/dist/types/config.d.ts.map +1 -0
  194. package/dist/types/config.js +2 -0
  195. package/dist/types/config.js.map +1 -0
  196. package/dist/types/errors.d.ts +8 -0
  197. package/dist/types/errors.d.ts.map +1 -0
  198. package/dist/types/errors.js +15 -0
  199. package/dist/types/errors.js.map +1 -0
  200. package/dist/types/index.d.ts +8 -191
  201. package/dist/types/index.d.ts.map +1 -1
  202. package/dist/types/index.js +1 -14
  203. package/dist/types/index.js.map +1 -1
  204. package/dist/types/repo-config.d.ts +24 -0
  205. package/dist/types/repo-config.d.ts.map +1 -0
  206. package/dist/types/repo-config.js +2 -0
  207. package/dist/types/repo-config.js.map +1 -0
  208. package/dist/types/review.d.ts +112 -0
  209. package/dist/types/review.d.ts.map +1 -0
  210. package/dist/types/review.js +2 -0
  211. package/dist/types/review.js.map +1 -0
  212. package/dist/types/trial.d.ts +10 -0
  213. package/dist/types/trial.d.ts.map +1 -0
  214. package/dist/types/trial.js +2 -0
  215. package/dist/types/trial.js.map +1 -0
  216. package/dist/ui/interactive-formatters.d.ts +6 -0
  217. package/dist/ui/interactive-formatters.d.ts.map +1 -0
  218. package/dist/ui/interactive-formatters.js +61 -0
  219. package/dist/ui/interactive-formatters.js.map +1 -0
  220. package/dist/ui/interactive-helpers.d.ts +12 -0
  221. package/dist/ui/interactive-helpers.d.ts.map +1 -0
  222. package/dist/ui/interactive-helpers.js +51 -0
  223. package/dist/ui/interactive-helpers.js.map +1 -0
  224. package/dist/ui/interactive-renderers.d.ts +6 -0
  225. package/dist/ui/interactive-renderers.d.ts.map +1 -0
  226. package/dist/ui/interactive-renderers.js +82 -0
  227. package/dist/ui/interactive-renderers.js.map +1 -0
  228. package/dist/ui/interactive.d.ts +1 -9
  229. package/dist/ui/interactive.d.ts.map +1 -1
  230. package/dist/ui/interactive.js +11 -187
  231. package/dist/ui/interactive.js.map +1 -1
  232. package/dist/utils/auth-mode.d.ts +7 -0
  233. package/dist/utils/auth-mode.d.ts.map +1 -0
  234. package/dist/utils/auth-mode.js +42 -0
  235. package/dist/utils/auth-mode.js.map +1 -0
  236. package/dist/utils/banner.d.ts.map +1 -1
  237. package/dist/utils/banner.js +2 -14
  238. package/dist/utils/banner.js.map +1 -1
  239. package/dist/utils/command-context.d.ts +1 -1
  240. package/dist/utils/command-context.d.ts.map +1 -1
  241. package/dist/utils/command-errors.d.ts.map +1 -1
  242. package/dist/utils/command-errors.js +25 -1
  243. package/dist/utils/command-errors.js.map +1 -1
  244. package/dist/utils/commander-errors.d.ts +8 -0
  245. package/dist/utils/commander-errors.d.ts.map +1 -0
  246. package/dist/utils/commander-errors.js +79 -0
  247. package/dist/utils/commander-errors.js.map +1 -0
  248. package/dist/utils/commander-setup.d.ts +3 -0
  249. package/dist/utils/commander-setup.d.ts.map +1 -0
  250. package/dist/utils/commander-setup.js +10 -0
  251. package/dist/utils/commander-setup.js.map +1 -0
  252. package/dist/utils/credentials.d.ts +1 -1
  253. package/dist/utils/credentials.d.ts.map +1 -1
  254. package/dist/utils/git-diff.d.ts +5 -0
  255. package/dist/utils/git-diff.d.ts.map +1 -0
  256. package/dist/utils/git-diff.js +14 -0
  257. package/dist/utils/git-diff.js.map +1 -0
  258. package/dist/utils/git-file-reader.d.ts +22 -0
  259. package/dist/utils/git-file-reader.d.ts.map +1 -0
  260. package/dist/utils/git-file-reader.js +45 -0
  261. package/dist/utils/git-file-reader.js.map +1 -0
  262. package/dist/utils/git-file-selection.d.ts +14 -0
  263. package/dist/utils/git-file-selection.d.ts.map +1 -0
  264. package/dist/utils/git-file-selection.js +20 -0
  265. package/dist/utils/git-file-selection.js.map +1 -0
  266. package/dist/utils/git-file-targets.d.ts +4 -0
  267. package/dist/utils/git-file-targets.d.ts.map +1 -0
  268. package/dist/utils/git-file-targets.js +11 -0
  269. package/dist/utils/git-file-targets.js.map +1 -0
  270. package/dist/utils/git-remote.d.ts +7 -0
  271. package/dist/utils/git-remote.d.ts.map +1 -0
  272. package/dist/utils/git-remote.js +60 -0
  273. package/dist/utils/git-remote.js.map +1 -0
  274. package/dist/utils/git-status.d.ts +7 -0
  275. package/dist/utils/git-status.d.ts.map +1 -0
  276. package/dist/utils/git-status.js +36 -0
  277. package/dist/utils/git-status.js.map +1 -0
  278. package/dist/utils/input-validation.d.ts +1 -1
  279. package/dist/utils/input-validation.d.ts.map +1 -1
  280. package/dist/utils/rate-limit.d.ts +1 -1
  281. package/dist/utils/repo-settings-dashboard.d.ts +6 -0
  282. package/dist/utils/repo-settings-dashboard.d.ts.map +1 -0
  283. package/dist/utils/repo-settings-dashboard.js +36 -0
  284. package/dist/utils/repo-settings-dashboard.js.map +1 -0
  285. package/dist/utils/repo-settings-patterns.d.ts +7 -0
  286. package/dist/utils/repo-settings-patterns.d.ts.map +1 -0
  287. package/dist/utils/repo-settings-patterns.js +66 -0
  288. package/dist/utils/repo-settings-patterns.js.map +1 -0
  289. package/dist/utils/repo-settings-schema.d.ts +6 -0
  290. package/dist/utils/repo-settings-schema.d.ts.map +1 -0
  291. package/dist/utils/repo-settings-schema.js +70 -0
  292. package/dist/utils/repo-settings-schema.js.map +1 -0
  293. package/dist/utils/review-output.d.ts +4 -0
  294. package/dist/utils/review-output.d.ts.map +1 -0
  295. package/dist/utils/review-output.js +18 -0
  296. package/dist/utils/review-output.js.map +1 -0
  297. package/dist/utils/skills-sync-manifest.d.ts +5 -0
  298. package/dist/utils/skills-sync-manifest.d.ts.map +1 -0
  299. package/dist/utils/skills-sync-manifest.js +39 -0
  300. package/dist/utils/skills-sync-manifest.js.map +1 -0
  301. package/dist/utils/skills-sync-paths.d.ts +5 -0
  302. package/dist/utils/skills-sync-paths.d.ts.map +1 -0
  303. package/dist/utils/skills-sync-paths.js +60 -0
  304. package/dist/utils/skills-sync-paths.js.map +1 -0
  305. package/dist/utils/skills-sync-targets.d.ts +3 -0
  306. package/dist/utils/skills-sync-targets.d.ts.map +1 -0
  307. package/dist/utils/skills-sync-targets.js +211 -0
  308. package/dist/utils/skills-sync-targets.js.map +1 -0
  309. package/dist/utils/skills-sync.d.ts.map +1 -1
  310. package/dist/utils/skills-sync.js +4 -253
  311. package/dist/utils/skills-sync.js.map +1 -1
  312. package/dist/utils/team-key-auth.d.ts +5 -0
  313. package/dist/utils/team-key-auth.d.ts.map +1 -0
  314. package/dist/utils/team-key-auth.js +14 -0
  315. package/dist/utils/team-key-auth.js.map +1 -0
  316. package/package.json +4 -4
package/README.md CHANGED
@@ -521,6 +521,82 @@ Get your team key at [app.kodus.io/organization/cli-keys](https://app.kodus.io/o
521
521
 
522
522
  This is also the recommended auth method for AI coding agents (Claude Code, Cursor, Codex) — set the env var once and every agent session is authenticated automatically.
523
523
 
524
+ ### Repository Configuration
525
+
526
+ Repository configuration requires team-key auth:
527
+
528
+ - team keys work across `add`, `list`, `show`, `setup`, `set`, and pattern mutations through the CLI config endpoints
529
+
530
+ These commands always read and update the repository's current settings directly. There is no reset-to-default flow in the CLI.
531
+
532
+ `kodus config -r` and `kodus config --remote` are shortcuts for `kodus config remote add`.
533
+
534
+ ```bash
535
+ kodus config -r . # Shortcut for: kodus config remote add .
536
+ kodus config --remote . # Shortcut for: kodus config remote add .
537
+ kodus config --remote . --json # Add and print machine-readable result
538
+ kodus config --remote . --no-prompt # Add without starting setup
539
+ kodus config remote add . # Add the current repository explicitly
540
+ kodus config remote show . # Inspect current repository settings
541
+ kodus config remote setup . # Run guided setup again
542
+ kodus config remote setup . --json # Print structured setup result
543
+ kodus config remote set . review.enabled true
544
+ kodus config remote set . review.enabled true --json
545
+ kodus config remote set . patterns.ignoreFiles "**/*.lock,dist/**"
546
+ kodus config remote add-pattern . ignore-files "dist/**"
547
+ kodus config remote add-ignore-file . "dist/**"
548
+ kodus config remote remove-base-branch . "release/*"
549
+ kodus config remote remove-pattern . base-branches "release/*"
550
+ kodus config remote open . --section suggestion-control
551
+ kodus config remote list --json
552
+ kodus config remote list # List repositories already configured
553
+ ```
554
+
555
+ When a repository is added from an interactive terminal, Kodus offers a guided setup for:
556
+
557
+ - automated review
558
+ - auto approve
559
+ - minimum severity level
560
+ - ignored file patterns
561
+ - base branch patterns
562
+ - ignored title patterns
563
+
564
+ Pattern fields accept glob expressions such as `**/*.lock`, `dist/**`, `release/*`, and `draft*`.
565
+
566
+ Use `kodus config remote open` when you need advanced repository settings that are still web-only. The CLI opens the Kodus app and prints the repository/section path to navigate.
567
+
568
+ Use `--json` with `show`, `set`, `open`, `add-pattern`, `remove-pattern`, and the pattern aliases when you need stable machine-readable output for scripts or AI agents.
569
+
570
+ When targeting a repository that is different from your current working directory, pass `owner/repo` explicitly instead of `.`:
571
+
572
+ ```bash
573
+ kodus config -r Wellington01/kodus-extension
574
+ kodus config remote show Wellington01/kodus-extension
575
+ ```
576
+
577
+ #### Local API note
578
+
579
+ When testing against the local backend with `yarn start:local`, repository configuration works with a team key when the local API exposes:
580
+
581
+ - `GET /cli/config/repositories/available`
582
+ - `GET /cli/config/repositories/selected`
583
+ - `POST /cli/config/repositories`
584
+ - `GET /cli/config/repositories/:repositoryId/settings`
585
+ - `PATCH /cli/config/repositories/:repositoryId/settings`
586
+
587
+ ```text
588
+ Repository configuration access denied: ...
589
+ ```
590
+
591
+ Example local commands:
592
+
593
+ ```bash
594
+ export KODUS_TEAM_KEY=kodus_xxxxx
595
+ yarn start:local config -r Wellington01/kodus-extension --no-prompt
596
+ yarn start:local config remote list --json
597
+ yarn start:local config remote show Wellington01/kodus-extension
598
+ ```
599
+
524
600
  ### CI/CD Token
525
601
 
526
602
  For pipelines and automated environments. Generated from your personal login:
@@ -544,6 +620,7 @@ kodus review --format json --fail-on error
544
620
  | Variable | Description |
545
621
  | ---------------- | ------------------------------------------------------------------------------ |
546
622
  | `KODUS_API_URL` | API endpoint (default: `https://api.kodus.io`). HTTPS only (except localhost). |
623
+ | `KODUS_APP_URL` | Optional Kodus app URL override for `kodus config remote open`. |
547
624
  | `KODUS_TOKEN` | CI/CD token for automated pipelines (generated via `kodus auth token`) |
548
625
  | `KODUS_TEAM_KEY` | Team key for shared team access and AI coding agents |
549
626
 
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA+C9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA+C9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/cli.js CHANGED
@@ -14,10 +14,10 @@ import { configCommand } from './commands/config.js';
14
14
  import { checkForUpdates } from './utils/update-check.js';
15
15
  import { setCliOutputMode } from './utils/logger.js';
16
16
  import { recordRecentActivity } from './utils/recent-activity.js';
17
+ import { applyCommanderBehavior } from './utils/commander-setup.js';
17
18
  const require = createRequire(import.meta.url);
18
19
  const pkg = require('../package.json');
19
20
  const program = new Command();
20
- program.exitOverride();
21
21
  program
22
22
  .name('kodus')
23
23
  .description('Kodus CLI - AI-powered code review from your terminal')
@@ -38,6 +38,7 @@ program.addCommand(statusCommand);
38
38
  program.addCommand(skillsCommand);
39
39
  program.addCommand(configCommand);
40
40
  program.addCommand(createSchemaCommand(() => program));
41
+ applyCommanderBehavior(program);
41
42
  program.hook('preAction', (_thisCommand, actionCommand) => {
42
43
  const opts = actionCommand.optsWithGlobals();
43
44
  setCliOutputMode({
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,4 @@
1
1
  import { Command } from 'commander';
2
- export declare function configRepoAction(repository?: string): Promise<void>;
3
- export declare function configRepoAddAction(repository?: string): Promise<void>;
4
- export declare function configRemoteAction(repository?: string): Promise<void>;
5
- export declare function configRemoteAddAction(repository?: string): Promise<void>;
6
- export declare function configRepoListAction(): Promise<void>;
2
+ export { configRemoteAction, configRemoteAddAction, configRepoAction, configRepoAddAction, configRepoListAction, configRepoShowAction, configRepoSetupAction, configRepoOpenAction, configRepoSetAction, configRepoPatternAddAction, configRepoPatternRemoveAction, } from '../features/repo-config/actions.js';
7
3
  export declare const configCommand: Command;
8
4
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAsB,gBAAgB,CAAC,UAAU,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBtE;AAED,wBAAsB,mBAAmB,CAAC,UAAU,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE;AAED,wBAAsB,kBAAkB,CAAC,UAAU,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExE;AAED,wBAAsB,qBAAqB,CAAC,UAAU,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3E;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB1D;AAED,eAAO,MAAM,aAAa,SAEzB,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,OAAO,EACH,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,EAC1B,6BAA6B,GAChC,MAAM,oCAAoC,CAAC;AAE5C,eAAO,MAAM,aAAa,SAEzB,CAAC"}
@@ -1,84 +1,23 @@
1
1
  import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import { repoConfigService } from '../services/repo-config.service.js';
4
- import { exitWithCode } from '../utils/cli-exit.js';
5
- import { cliError, cliInfo } from '../utils/logger.js';
6
- import { normalizeCommandError } from '../utils/command-errors.js';
7
- export async function configRepoAction(repository = '.') {
8
- try {
9
- const result = await repoConfigService.addRepository(repository);
10
- if (result.status === 'already-added') {
11
- cliInfo(chalk.yellow(`Repository '${result.repositoryFullName}' is already added to Kodus.`));
12
- return;
13
- }
14
- cliInfo(chalk.green(`Repository '${result.repositoryFullName}' was added to Kodus successfully.`));
15
- }
16
- catch (error) {
17
- const normalized = normalizeCommandError(error);
18
- cliError(chalk.red(normalized.message));
19
- exitWithCode(normalized.exitCode);
20
- }
21
- }
22
- export async function configRepoAddAction(repository = '.') {
23
- await configRepoAction(repository);
24
- }
25
- export async function configRemoteAction(repository = '.') {
26
- await configRepoAction(repository);
27
- }
28
- export async function configRemoteAddAction(repository = '.') {
29
- await configRepoAction(repository);
30
- }
31
- export async function configRepoListAction() {
32
- try {
33
- const repositories = await repoConfigService.listRepositories();
34
- if (repositories.length === 0) {
35
- cliInfo(chalk.yellow('No repositories are currently configured.'));
36
- return;
37
- }
38
- cliInfo('Configured repositories:');
39
- for (const repository of repositories) {
40
- cliInfo(`- ${repository.fullName}`);
41
- }
42
- }
43
- catch (error) {
44
- const normalized = normalizeCommandError(error);
45
- cliError(chalk.red(normalized.message));
46
- exitWithCode(normalized.exitCode);
47
- }
48
- }
2
+ import { configRemoteAction, } from '../features/repo-config/actions.js';
3
+ import { registerRemoteRepositoryConfig, registerRepoAliasConfig, } from '../features/repo-config/command.js';
4
+ export { configRemoteAction, configRemoteAddAction, configRepoAction, configRepoAddAction, configRepoListAction, configRepoShowAction, configRepoSetupAction, configRepoOpenAction, configRepoSetAction, configRepoPatternAddAction, configRepoPatternRemoveAction, } from '../features/repo-config/actions.js';
49
5
  export const configCommand = new Command('config').description('Configuration commands');
50
6
  configCommand
51
- .option('-r, --remote [repository]', "Add remote repository config. Use '.' for the current repo.")
7
+ .option('-r, --remote [repository]', "Add a repository to Kodus. Shortcut for: kodus config remote add [repository]. Use '.' for the current repo.")
8
+ .option('--no-prompt', 'Skip the post-add setup prompt')
52
9
  .action(async (options, command) => {
53
10
  if (options.remote !== undefined) {
54
11
  const repository = typeof options.remote === 'string' ? options.remote : '.';
55
- await configRemoteAction(repository);
12
+ await configRemoteAction(repository, {
13
+ prompt: options.prompt,
14
+ });
56
15
  return;
57
16
  }
58
17
  command.help();
59
18
  });
60
- function registerRemoteRepositoryConfig(command, description, handlers) {
61
- command
62
- .description(description)
63
- .argument('[repository]', "Repository to add. Use '.' for the current repo.", '.')
64
- .action(handlers.action);
65
- command
66
- .command('add [repository]')
67
- .description("Add a repository to Kodus. Use '.' for the current repo.")
68
- .action(handlers.addAction);
69
- command
70
- .command('list')
71
- .description('List repositories already configured in Kodus.')
72
- .action(configRepoListAction);
73
- }
74
- registerRemoteRepositoryConfig(configCommand.command('remote'), 'Manage remote repository configuration in Kodus.', {
75
- action: configRemoteAction,
76
- addAction: configRemoteAddAction,
77
- });
19
+ registerRemoteRepositoryConfig(configCommand.command('remote'));
78
20
  const repoAliasCommand = configCommand.command('repo');
79
21
  repoAliasCommand._hidden = true;
80
- registerRemoteRepositoryConfig(repoAliasCommand, 'Manage remote repository configuration in Kodus.', {
81
- action: configRepoAction,
82
- addAction: configRepoAddAction,
83
- });
22
+ registerRepoAliasConfig(repoAliasCommand);
84
23
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACH,kBAAkB,GAErB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACH,8BAA8B,EAC9B,uBAAuB,GAC1B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACH,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,EAC1B,6BAA6B,GAChC,MAAM,oCAAoC,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAC1D,wBAAwB,CAC3B,CAAC;AAEF,aAAa;KACR,MAAM,CACH,2BAA2B,EAC3B,8GAA8G,CACjH;KACA,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,UAAU,GACZ,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9D,MAAM,kBAAkB,CAAC,UAAU,EAAE;YACjC,MAAM,EAAG,OAAgC,CAAC,MAAM;SACnD,CAAC,CAAC;QACH,OAAO;IACX,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEP,8BAA8B,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEhE,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtD,gBAAoD,CAAC,OAAO,GAAG,IAAI,CAAC;AACrE,uBAAuB,CAAC,gBAAgB,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { GlobalOptions } from '../../types/index.js';
1
+ import type { GlobalOptions } from '../../types/cli.js';
2
2
  declare const KODUS_MARKER = "# kodus-hook";
3
3
  declare function generateHookScript(failOn: string, fast: boolean): string;
4
4
  export declare function installAction(options: {
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/hook/install.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAY1D,QAAA,MAAM,YAAY,iBAAiB,CAAC;AAEpC,iBAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAwDjE;AAED,wBAAsB,aAAa,CAC/B,OAAO,EAAE;IACL,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,EACD,UAAU,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,IAAI,CAAC,CAsGf;AAED,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/hook/install.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYxD,QAAA,MAAM,YAAY,iBAAiB,CAAC;AAEpC,iBAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAwDjE;AAED,wBAAsB,aAAa,CAC/B,OAAO,EAAE;IACL,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,EACD,UAAU,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,IAAI,CAAC,CAsGf;AAED,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { GlobalOptions } from '../../types/index.js';
1
+ import type { GlobalOptions } from '../../types/cli.js';
2
2
  export declare function uninstallAction(options?: {
3
3
  dryRun?: boolean;
4
4
  }, globalOpts?: GlobalOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/commands/hook/uninstall.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAY1D,wBAAsB,eAAe,CACjC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,EAClC,UAAU,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,IAAI,CAAC,CA0Ef"}
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/commands/hook/uninstall.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYxD,wBAAsB,eAAe,CACjC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,EAClC,UAAU,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,IAAI,CAAC,CA0Ef"}
@@ -1,4 +1,4 @@
1
- import type { GlobalOptions } from '../../types/index.js';
1
+ import type { GlobalOptions } from '../../types/cli.js';
2
2
  export declare function disableAction(options?: {
3
3
  dryRun?: boolean;
4
4
  }, globalOpts?: GlobalOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"disable.d.ts","sourceRoot":"","sources":["../../../src/commands/memory/disable.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAY1D,wBAAsB,aAAa,CAC/B,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,EAClC,UAAU,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,IAAI,CAAC,CAkFf"}
1
+ {"version":3,"file":"disable.d.ts","sourceRoot":"","sources":["../../../src/commands/memory/disable.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYxD,wBAAsB,aAAa,CAC/B,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,EAClC,UAAU,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,IAAI,CAAC,CAkFf"}
@@ -1,3 +1,2 @@
1
- import { Command } from 'commander';
2
- export declare const prCommand: Command;
1
+ export { createPrCommand, prCommand } from '../features/pr/command.js';
3
2
  //# sourceMappingURL=pr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,eAAO,MAAM,SAAS,SAAyD,CAAC"}
1
+ {"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,244 +1,2 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import ora from 'ora';
4
- import fs from 'fs/promises';
5
- import { reviewService } from '../services/review.service.js';
6
- import { gitService } from '../services/git.service.js';
7
- import { terminalFormatter } from '../formatters/terminal.js';
8
- import { jsonFormatter } from '../formatters/json.js';
9
- import { markdownFormatter } from '../formatters/markdown.js';
10
- import { promptFormatter } from '../formatters/prompt.js';
11
- import { exitWithCode } from '../utils/cli-exit.js';
12
- import { cliDebug, cliError, cliInfo } from '../utils/logger.js';
13
- import { createCommandContext } from '../utils/command-context.js';
14
- import { buildAgentErrorEnvelope, buildAgentSuccessEnvelope, emitAgentEnvelope, } from '../utils/command-output.js';
15
- import { CommandError, normalizeCommandError, } from '../utils/command-errors.js';
16
- import { assertStructuredOutputForFields, parseCsvEnumList, parseFieldList, parseOptionalNumber, validateHttpUrl, } from '../utils/input-validation.js';
17
- import { applyFieldMask } from '../utils/field-mask.js';
18
- export const prCommand = new Command('pr').description('Pull request commands');
19
- prCommand
20
- .command('suggestions')
21
- .description('Fetch suggestions for a pull request')
22
- .option('--pr-url <url>', 'Pull request URL')
23
- .option('--pr-number <number>', 'Pull request number')
24
- .option('--repo-id <id>', 'Repository ID for the pull request')
25
- .option('--severity <list>', 'Comma-separated severities to include')
26
- .option('--category <list>', 'Comma-separated categories to include')
27
- .option('--fields <csv>', 'Select response fields (JSON/agent mode only), e.g. summary,issues.file')
28
- .action(async (options, cmd) => {
29
- const globalOpts = cmd.optsWithGlobals();
30
- const ctx = createCommandContext('pr suggestions', globalOpts);
31
- const spinner = ora();
32
- try {
33
- assertStructuredOutputForFields({
34
- fields: options.fields,
35
- format: globalOpts.format,
36
- isAgent: ctx.isAgent,
37
- });
38
- const prNumber = parseOptionalNumber(options.prNumber, '--pr-number');
39
- const normalizedPrUrl = options.prUrl
40
- ? validateHttpUrl(options.prUrl, '--pr-url')
41
- : undefined;
42
- const allowedSeverities = [
43
- 'info',
44
- 'warning',
45
- 'error',
46
- 'critical',
47
- 'high',
48
- 'medium',
49
- 'low',
50
- ];
51
- const allowedCategories = [
52
- 'security_vulnerability',
53
- 'performance',
54
- 'code_quality',
55
- 'best_practices',
56
- 'style',
57
- 'bug',
58
- 'complexity',
59
- 'maintainability',
60
- 'documentation',
61
- ];
62
- const severityFilter = parseCsvEnumList(options.severity, '--severity', allowedSeverities);
63
- const categoryFilter = parseCsvEnumList(options.category, '--category', allowedCategories);
64
- const fields = parseFieldList(options.fields);
65
- if (!normalizedPrUrl && !(prNumber && options.repoId)) {
66
- throw new CommandError('INVALID_INPUT', 'Provide --pr-url or both --pr-number and --repo-id.');
67
- }
68
- const shouldRequestMarkdown = !ctx.isAgent &&
69
- (globalOpts.format === 'prompt' ||
70
- globalOpts.format === 'markdown');
71
- if (!globalOpts.quiet && !ctx.isAgent) {
72
- spinner.start(chalk.cyan('Fetching pull request suggestions...'));
73
- }
74
- const { result, markdown } = await reviewService.getPullRequestSuggestions({
75
- prUrl: normalizedPrUrl,
76
- prNumber,
77
- repositoryId: options.repoId,
78
- format: shouldRequestMarkdown ? 'markdown' : undefined,
79
- severity: severityFilter?.join(','),
80
- category: categoryFilter?.join(','),
81
- });
82
- if (!globalOpts.quiet && !ctx.isAgent) {
83
- spinner.succeed(chalk.green('Suggestions fetched'));
84
- }
85
- const selectedResult = fields
86
- ? applyFieldMask(result, fields)
87
- : result;
88
- if (ctx.isAgent) {
89
- await emitAgentEnvelope(buildAgentSuccessEnvelope(ctx.command, selectedResult, ctx.startedAt), ctx.outputFile);
90
- return;
91
- }
92
- const output = markdown && shouldRequestMarkdown
93
- ? markdown
94
- : formatOutput(selectedResult, globalOpts.format);
95
- if (globalOpts.output) {
96
- await fs.writeFile(globalOpts.output, output, 'utf-8');
97
- cliInfo(chalk.green(`\nOutput saved to ${globalOpts.output}`));
98
- }
99
- else {
100
- cliInfo(output);
101
- }
102
- }
103
- catch (error) {
104
- const normalized = normalizeCommandError(error);
105
- if (ctx.isAgent) {
106
- await emitAgentEnvelope(buildAgentErrorEnvelope(ctx.command, {
107
- code: normalized.code,
108
- message: normalized.message,
109
- details: normalized.details,
110
- }, ctx.startedAt), ctx.outputFile);
111
- if (normalized.exitCode > 0) {
112
- exitWithCode(normalized.exitCode);
113
- }
114
- return;
115
- }
116
- if (!globalOpts.quiet) {
117
- spinner.fail(chalk.red('Failed to fetch pull request suggestions'));
118
- }
119
- if (error instanceof Error) {
120
- cliError(chalk.red(error.message));
121
- }
122
- exitWithCode(normalized.exitCode);
123
- }
124
- });
125
- prCommand
126
- .command('business-validation')
127
- .description('Run business rules validation for local diff only')
128
- .argument('[files...]', 'Specific files to include in local diff mode')
129
- .option('--task-url <url>', 'Task URL to append to the validation command')
130
- .option('--task-id <id>', 'Task ID or issue key (e.g. KC-1441) to append')
131
- .option('-s, --staged', 'Use only staged changes when running in local diff mode')
132
- .option('-c, --commit <sha>', 'Use diff from a specific commit when running in local diff mode')
133
- .option('-b, --branch <name>', 'Compare current branch against a base branch in local diff mode')
134
- .option('--dry-run', 'Print payload without executing the API call', false)
135
- .action(async (files, options, cmd) => {
136
- const spinner = ora();
137
- const globalOpts = cmd.optsWithGlobals();
138
- try {
139
- if (options.taskUrl && options.taskId) {
140
- throw new Error('Provide only one of --task-url or --task-id.');
141
- }
142
- const diff = await getLocalDiffForBusinessValidation(files ?? [], options, globalOpts.verbose);
143
- if (!diff.trim()) {
144
- throw new Error('No local changes found for the selected scope.');
145
- }
146
- let repository;
147
- const orgRepo = await gitService.extractOrgRepo();
148
- if (orgRepo) {
149
- repository = `${orgRepo.org}/${orgRepo.repo}`;
150
- }
151
- const payload = {
152
- repository,
153
- taskUrl: options.taskUrl,
154
- taskId: options.taskId,
155
- diff,
156
- };
157
- if (options.dryRun) {
158
- cliInfo(chalk.cyan('Dry run mode. Payload that would be sent to /cli/business-validation:'));
159
- cliInfo(JSON.stringify(payload, null, 2));
160
- return;
161
- }
162
- if (!globalOpts.quiet) {
163
- spinner.start(chalk.cyan('Running business validation...'));
164
- }
165
- const response = await reviewService.triggerBusinessValidation({
166
- ...payload,
167
- });
168
- if (!globalOpts.quiet) {
169
- spinner.succeed(chalk.green('Business validation completed.'));
170
- }
171
- cliInfo(chalk.dim('Mode: local diff'));
172
- if (response.repositoryName) {
173
- cliInfo(chalk.dim(`Repository: ${response.repositoryName}`));
174
- }
175
- if (response.taskReference) {
176
- cliInfo(chalk.dim(`Task: ${response.taskReference}`));
177
- }
178
- cliInfo(chalk.dim(`Command: ${response.command}`));
179
- cliInfo('');
180
- cliInfo(response.result);
181
- }
182
- catch (error) {
183
- if (!globalOpts.quiet) {
184
- spinner.fail(chalk.red('Failed to trigger business validation'));
185
- }
186
- if (error instanceof Error) {
187
- cliError(chalk.red(error.message));
188
- }
189
- exitWithCode(1);
190
- }
191
- });
192
- async function getLocalDiffForBusinessValidation(files, options, verbose) {
193
- gitService.setVerbose(!!verbose);
194
- const hasFiles = files.length > 0;
195
- const hasBranch = !!options.branch;
196
- const hasCommit = !!options.commit;
197
- const hasStaged = !!options.staged;
198
- const selectedScopes = [hasFiles, hasBranch, hasCommit, hasStaged].filter(Boolean).length;
199
- if (selectedScopes > 1) {
200
- throw new Error('Use only one local diff scope: [files], --staged, --branch, or --commit.');
201
- }
202
- if (hasFiles) {
203
- if (verbose) {
204
- cliDebug(chalk.dim(`[verbose] Getting local diff for specific files: ${files.join(', ')}`));
205
- }
206
- return gitService.getDiffForFiles(files);
207
- }
208
- if (options.branch !== undefined) {
209
- if (verbose) {
210
- cliDebug(chalk.dim(`[verbose] Getting local diff for branch: ${options.branch}`));
211
- }
212
- return gitService.getDiffForBranch(options.branch);
213
- }
214
- if (options.commit !== undefined) {
215
- if (verbose) {
216
- cliDebug(chalk.dim(`[verbose] Getting local diff for commit: ${options.commit}`));
217
- }
218
- return gitService.getDiffForCommit(options.commit);
219
- }
220
- if (hasStaged) {
221
- if (verbose) {
222
- cliDebug(chalk.dim('[verbose] Getting local staged diff'));
223
- }
224
- return gitService.getStagedDiff();
225
- }
226
- if (verbose) {
227
- cliDebug(chalk.dim('[verbose] Getting local working tree diff'));
228
- }
229
- return gitService.getWorkingTreeDiff();
230
- }
231
- function formatOutput(result, format) {
232
- switch (format) {
233
- case 'json':
234
- return jsonFormatter.format(result);
235
- case 'markdown':
236
- return markdownFormatter.format(result);
237
- case 'prompt':
238
- return promptFormatter.format(result);
239
- case 'terminal':
240
- default:
241
- return terminalFormatter.format(result);
242
- }
243
- }
1
+ export { createPrCommand, prCommand } from '../features/pr/command.js';
244
2
  //# sourceMappingURL=pr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAQ1D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EACH,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,YAAY,EACZ,qBAAqB,GACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,+BAA+B,EAC/B,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,eAAe,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AAEhF,SAAS;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;KAC5C,MAAM,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;KACrD,MAAM,CAAC,gBAAgB,EAAE,oCAAoC,CAAC;KAC9D,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,CAAC;KACpE,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,CAAC;KACpE,MAAM,CACH,gBAAgB,EAChB,yEAAyE,CAC5E;KACA,MAAM,CACH,KAAK,EACD,OAOC,EACD,GAAY,EACd,EAAE;IACA,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;IAC1D,MAAM,GAAG,GAAG,oBAAoB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IAEtB,IAAI,CAAC;QACD,+BAA+B,CAAC;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,GAAG,CAAC,OAAO;SACvB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,mBAAmB,CAChC,OAAO,CAAC,QAAQ,EAChB,aAAa,CAChB,CAAC;QAEF,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK;YACjC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC;YAC5C,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,iBAAiB,GAKjB;YACF,MAAM;YACN,SAAS;YACT,OAAO;YACP,UAAU;YACV,MAAM;YACN,QAAQ;YACR,KAAK;SACR,CAAC;QACF,MAAM,iBAAiB,GAGjB;YACF,wBAAwB;YACxB,aAAa;YACb,cAAc;YACd,gBAAgB;YAChB,OAAO;YACP,KAAK;YACL,YAAY;YACZ,iBAAiB;YACjB,eAAe;SAClB,CAAC;QACF,MAAM,cAAc,GAAG,gBAAgB,CACnC,OAAO,CAAC,QAAQ,EAChB,YAAY,EACZ,iBAAiB,CACpB,CAAC;QACF,MAAM,cAAc,GAAG,gBAAgB,CACnC,OAAO,CAAC,QAAQ,EAChB,YAAY,EACZ,iBAAiB,CACpB,CAAC;QACF,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,YAAY,CAClB,eAAe,EACf,qDAAqD,CACxD,CAAC;QACN,CAAC;QAED,MAAM,qBAAqB,GACvB,CAAC,GAAG,CAAC,OAAO;YACZ,CAAC,UAAU,CAAC,MAAM,KAAK,QAAQ;gBAC3B,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;QAE1C,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CACT,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CACrD,CAAC;QACN,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GACtB,MAAM,aAAa,CAAC,yBAAyB,CAAC;YAC1C,KAAK,EAAE,eAAe;YACtB,QAAQ;YACR,YAAY,EAAE,OAAO,CAAC,MAAM;YAC5B,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACtD,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC;YACnC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC;SACtC,CAAC,CAAC;QAEP,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,cAAc,GAAG,MAAM;YACzB,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;YAChC,CAAC,CAAC,MAAM,CAAC;QAEb,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,iBAAiB,CACnB,yBAAyB,CACrB,GAAG,CAAC,OAAO,EACX,cAAc,EACd,GAAG,CAAC,SAAS,CAChB,EACD,GAAG,CAAC,UAAU,CACjB,CAAC;YACF,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GACR,QAAQ,IAAI,qBAAqB;YAC7B,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,YAAY,CACR,cAA8B,EAC9B,UAAU,CAAC,MAAM,CACpB,CAAC;QAEZ,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,CACH,KAAK,CAAC,KAAK,CAAC,qBAAqB,UAAU,CAAC,MAAM,EAAE,CAAC,CACxD,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAEhD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,iBAAiB,CACnB,uBAAuB,CACnB,GAAG,CAAC,OAAO,EACX;gBACI,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,OAAO,EAAE,UAAU,CAAC,OAAO;aAC9B,EACD,GAAG,CAAC,SAAS,CAChB,EACD,GAAG,CAAC,UAAU,CACjB,CAAC;YAEF,IAAI,UAAU,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAC1B,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;YACD,OAAO;QACX,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CACR,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CACxD,CAAC;QACN,CAAC;QAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;AACL,CAAC,CACJ,CAAC;AAEN,SAAS;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,mDAAmD,CAAC;KAChE,QAAQ,CAAC,YAAY,EAAE,8CAA8C,CAAC;KACtE,MAAM,CAAC,kBAAkB,EAAE,8CAA8C,CAAC;KAC1E,MAAM,CAAC,gBAAgB,EAAE,+CAA+C,CAAC;KACzE,MAAM,CACH,cAAc,EACd,yDAAyD,CAC5D;KACA,MAAM,CACH,oBAAoB,EACpB,iEAAiE,CACpE;KACA,MAAM,CACH,qBAAqB,EACrB,iEAAiE,CACpE;KACA,MAAM,CAAC,WAAW,EAAE,8CAA8C,EAAE,KAAK,CAAC;KAC1E,MAAM,CACH,KAAK,EACD,KAAe,EACf,OAOC,EACD,GAAY,EACd,EAAE;IACA,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IACtB,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;IAE1D,IAAI,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACX,8CAA8C,CACjD,CAAC;QACN,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,iCAAiC,CAChD,KAAK,IAAI,EAAE,EACX,OAAO,EACP,UAAU,CAAC,OAAO,CACrB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACX,gDAAgD,CACnD,CAAC;QACN,CAAC;QAED,IAAI,UAA8B,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;QAClD,IAAI,OAAO,EAAE,CAAC;YACV,UAAU,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC;QAED,MAAM,OAAO,GAAG;YACZ,UAAU;YACV,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI;SACP,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CACH,KAAK,CAAC,IAAI,CACN,uEAAuE,CAC1E,CACJ,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1C,OAAO;QACX,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,yBAAyB,CAAC;YAC3D,GAAG,OAAO;SACb,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,OAAO,CACX,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAChD,CAAC;QACN,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAEvC,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,OAAO,CACH,KAAK,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,cAAc,EAAE,CAAC,CACtD,CAAC;QACN,CAAC;QACD,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CACR,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CACrD,CAAC;QACN,CAAC;QAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,YAAY,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CACJ,CAAC;AAEN,KAAK,UAAU,iCAAiC,CAC5C,KAAe,EACf,OAA+D,EAC/D,OAAiB;IAEjB,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAEjC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACnC,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACnC,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACnC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,MAAM,CACrE,OAAO,CACV,CAAC,MAAM,CAAC;IAET,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACX,0EAA0E,CAC7E,CAAC;IACN,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACX,IAAI,OAAO,EAAE,CAAC;YACV,QAAQ,CACJ,KAAK,CAAC,GAAG,CACL,oDAAoD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzE,CACJ,CAAC;QACN,CAAC;QACD,OAAO,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,OAAO,EAAE,CAAC;YACV,QAAQ,CACJ,KAAK,CAAC,GAAG,CACL,4CAA4C,OAAO,CAAC,MAAM,EAAE,CAC/D,CACJ,CAAC;QACN,CAAC;QACD,OAAO,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,OAAO,EAAE,CAAC;YACV,QAAQ,CACJ,KAAK,CAAC,GAAG,CACL,4CAA4C,OAAO,CAAC,MAAM,EAAE,CAC/D,CACJ,CAAC;QACN,CAAC;QACD,OAAO,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,OAAO,EAAE,CAAC;YACV,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,UAAU,CAAC,aAAa,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACV,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,UAAU,CAAC,kBAAkB,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,MAAoB,EAAE,MAAoB;IAC5D,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,MAAM;YACP,OAAO,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxC,KAAK,UAAU;YACX,OAAO,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,KAAK,QAAQ;YACT,OAAO,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,UAAU,CAAC;QAChB;YACI,OAAO,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,3 +1,2 @@
1
- import { Command } from 'commander';
2
- export declare const reviewCommand: Command;
1
+ export { createReviewCommand, reviewCommand } from '../features/review/command.js';
3
2
  //# sourceMappingURL=review.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmCpC,eAAO,MAAM,aAAa,SA+ZrB,CAAC"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}