hub-launch 1.0.3

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 (331) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/README.md +195 -0
  3. package/bin/hublaunch +20 -0
  4. package/dist/commands/checkout.d.ts +7 -0
  5. package/dist/commands/checkout.d.ts.map +1 -0
  6. package/dist/commands/checkout.js +164 -0
  7. package/dist/commands/checkout.js.map +1 -0
  8. package/dist/commands/clean.d.ts +7 -0
  9. package/dist/commands/clean.d.ts.map +1 -0
  10. package/dist/commands/clean.js +206 -0
  11. package/dist/commands/clean.js.map +1 -0
  12. package/dist/commands/close.d.ts +7 -0
  13. package/dist/commands/close.d.ts.map +1 -0
  14. package/dist/commands/close.js +109 -0
  15. package/dist/commands/close.js.map +1 -0
  16. package/dist/commands/create.d.ts +7 -0
  17. package/dist/commands/create.d.ts.map +1 -0
  18. package/dist/commands/create.js +367 -0
  19. package/dist/commands/create.js.map +1 -0
  20. package/dist/commands/diff.d.ts +7 -0
  21. package/dist/commands/diff.d.ts.map +1 -0
  22. package/dist/commands/diff.js +98 -0
  23. package/dist/commands/diff.js.map +1 -0
  24. package/dist/commands/execute.d.ts +7 -0
  25. package/dist/commands/execute.d.ts.map +1 -0
  26. package/dist/commands/execute.js +376 -0
  27. package/dist/commands/execute.js.map +1 -0
  28. package/dist/commands/init.d.ts +8 -0
  29. package/dist/commands/init.d.ts.map +1 -0
  30. package/dist/commands/init.js +1243 -0
  31. package/dist/commands/init.js.map +1 -0
  32. package/dist/commands/interactive.d.ts +12 -0
  33. package/dist/commands/interactive.d.ts.map +1 -0
  34. package/dist/commands/interactive.js +1071 -0
  35. package/dist/commands/interactive.js.map +1 -0
  36. package/dist/commands/launch.d.ts +16 -0
  37. package/dist/commands/launch.d.ts.map +1 -0
  38. package/dist/commands/launch.js +684 -0
  39. package/dist/commands/launch.js.map +1 -0
  40. package/dist/commands/login.d.ts +40 -0
  41. package/dist/commands/login.d.ts.map +1 -0
  42. package/dist/commands/login.js +469 -0
  43. package/dist/commands/login.js.map +1 -0
  44. package/dist/commands/logs.d.ts +22 -0
  45. package/dist/commands/logs.d.ts.map +1 -0
  46. package/dist/commands/logs.js +105 -0
  47. package/dist/commands/logs.js.map +1 -0
  48. package/dist/commands/merge.d.ts +7 -0
  49. package/dist/commands/merge.d.ts.map +1 -0
  50. package/dist/commands/merge.js +240 -0
  51. package/dist/commands/merge.js.map +1 -0
  52. package/dist/commands/preview.d.ts +7 -0
  53. package/dist/commands/preview.d.ts.map +1 -0
  54. package/dist/commands/preview.js +160 -0
  55. package/dist/commands/preview.js.map +1 -0
  56. package/dist/commands/project.d.ts +18 -0
  57. package/dist/commands/project.d.ts.map +1 -0
  58. package/dist/commands/project.js +352 -0
  59. package/dist/commands/project.js.map +1 -0
  60. package/dist/commands/respond.d.ts +7 -0
  61. package/dist/commands/respond.d.ts.map +1 -0
  62. package/dist/commands/respond.js +112 -0
  63. package/dist/commands/respond.js.map +1 -0
  64. package/dist/commands/setPriority.d.ts +7 -0
  65. package/dist/commands/setPriority.d.ts.map +1 -0
  66. package/dist/commands/setPriority.js +112 -0
  67. package/dist/commands/setPriority.js.map +1 -0
  68. package/dist/commands/track.d.ts +7 -0
  69. package/dist/commands/track.d.ts.map +1 -0
  70. package/dist/commands/track.js +140 -0
  71. package/dist/commands/track.js.map +1 -0
  72. package/dist/commands/upload.d.ts +21 -0
  73. package/dist/commands/upload.d.ts.map +1 -0
  74. package/dist/commands/upload.js +145 -0
  75. package/dist/commands/upload.js.map +1 -0
  76. package/dist/commands/view.d.ts +7 -0
  77. package/dist/commands/view.d.ts.map +1 -0
  78. package/dist/commands/view.js +168 -0
  79. package/dist/commands/view.js.map +1 -0
  80. package/dist/commands/watch.d.ts +7 -0
  81. package/dist/commands/watch.d.ts.map +1 -0
  82. package/dist/commands/watch.js +438 -0
  83. package/dist/commands/watch.js.map +1 -0
  84. package/dist/commands/worktree.d.ts +7 -0
  85. package/dist/commands/worktree.d.ts.map +1 -0
  86. package/dist/commands/worktree.js +122 -0
  87. package/dist/commands/worktree.js.map +1 -0
  88. package/dist/config/command-names.d.ts +16 -0
  89. package/dist/config/command-names.d.ts.map +1 -0
  90. package/dist/config/command-names.js +17 -0
  91. package/dist/config/command-names.js.map +1 -0
  92. package/dist/config/constants.d.ts +12 -0
  93. package/dist/config/constants.d.ts.map +1 -0
  94. package/dist/config/constants.js +12 -0
  95. package/dist/config/constants.js.map +1 -0
  96. package/dist/config/index.d.ts +47 -0
  97. package/dist/config/index.d.ts.map +1 -0
  98. package/dist/config/index.js +175 -0
  99. package/dist/config/index.js.map +1 -0
  100. package/dist/index.d.ts +3 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +148 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/services/api/HulaApiClient.d.ts +170 -0
  105. package/dist/services/api/HulaApiClient.d.ts.map +1 -0
  106. package/dist/services/api/HulaApiClient.js +233 -0
  107. package/dist/services/api/HulaApiClient.js.map +1 -0
  108. package/dist/services/diff/DiffService.d.ts +44 -0
  109. package/dist/services/diff/DiffService.d.ts.map +1 -0
  110. package/dist/services/diff/DiffService.js +126 -0
  111. package/dist/services/diff/DiffService.js.map +1 -0
  112. package/dist/services/editor/EditorService.d.ts +53 -0
  113. package/dist/services/editor/EditorService.d.ts.map +1 -0
  114. package/dist/services/editor/EditorService.js +161 -0
  115. package/dist/services/editor/EditorService.js.map +1 -0
  116. package/dist/services/git/GitService.d.ts +124 -0
  117. package/dist/services/git/GitService.d.ts.map +1 -0
  118. package/dist/services/git/GitService.js +423 -0
  119. package/dist/services/git/GitService.js.map +1 -0
  120. package/dist/services/git/WorktreeService.d.ts +144 -0
  121. package/dist/services/git/WorktreeService.d.ts.map +1 -0
  122. package/dist/services/git/WorktreeService.js +505 -0
  123. package/dist/services/git/WorktreeService.js.map +1 -0
  124. package/dist/services/github/ActionsService.d.ts +66 -0
  125. package/dist/services/github/ActionsService.d.ts.map +1 -0
  126. package/dist/services/github/ActionsService.js +114 -0
  127. package/dist/services/github/ActionsService.js.map +1 -0
  128. package/dist/services/github/AssetUploadService.d.ts +103 -0
  129. package/dist/services/github/AssetUploadService.d.ts.map +1 -0
  130. package/dist/services/github/AssetUploadService.js +299 -0
  131. package/dist/services/github/AssetUploadService.js.map +1 -0
  132. package/dist/services/github/BatchCopilotDetectionService.d.ts +58 -0
  133. package/dist/services/github/BatchCopilotDetectionService.d.ts.map +1 -0
  134. package/dist/services/github/BatchCopilotDetectionService.js +321 -0
  135. package/dist/services/github/BatchCopilotDetectionService.js.map +1 -0
  136. package/dist/services/github/CopilotDetectionService.d.ts +40 -0
  137. package/dist/services/github/CopilotDetectionService.d.ts.map +1 -0
  138. package/dist/services/github/CopilotDetectionService.js +280 -0
  139. package/dist/services/github/CopilotDetectionService.js.map +1 -0
  140. package/dist/services/github/CopilotService.d.ts +27 -0
  141. package/dist/services/github/CopilotService.d.ts.map +1 -0
  142. package/dist/services/github/CopilotService.js +249 -0
  143. package/dist/services/github/CopilotService.js.map +1 -0
  144. package/dist/services/github/DeploymentDetectionService.d.ts +38 -0
  145. package/dist/services/github/DeploymentDetectionService.d.ts.map +1 -0
  146. package/dist/services/github/DeploymentDetectionService.js +104 -0
  147. package/dist/services/github/DeploymentDetectionService.js.map +1 -0
  148. package/dist/services/github/GithubAppService.d.ts +40 -0
  149. package/dist/services/github/GithubAppService.d.ts.map +1 -0
  150. package/dist/services/github/GithubAppService.js +187 -0
  151. package/dist/services/github/GithubAppService.js.map +1 -0
  152. package/dist/services/github/IssueService.d.ts +65 -0
  153. package/dist/services/github/IssueService.d.ts.map +1 -0
  154. package/dist/services/github/IssueService.js +231 -0
  155. package/dist/services/github/IssueService.js.map +1 -0
  156. package/dist/services/github/LabelService.d.ts +36 -0
  157. package/dist/services/github/LabelService.d.ts.map +1 -0
  158. package/dist/services/github/LabelService.js +122 -0
  159. package/dist/services/github/LabelService.js.map +1 -0
  160. package/dist/services/github/PRService.d.ts +77 -0
  161. package/dist/services/github/PRService.d.ts.map +1 -0
  162. package/dist/services/github/PRService.js +287 -0
  163. package/dist/services/github/PRService.js.map +1 -0
  164. package/dist/services/github/ProjectService.d.ts +144 -0
  165. package/dist/services/github/ProjectService.d.ts.map +1 -0
  166. package/dist/services/github/ProjectService.js +804 -0
  167. package/dist/services/github/ProjectService.js.map +1 -0
  168. package/dist/services/hooks/HookExecutor.d.ts +66 -0
  169. package/dist/services/hooks/HookExecutor.d.ts.map +1 -0
  170. package/dist/services/hooks/HookExecutor.js +227 -0
  171. package/dist/services/hooks/HookExecutor.js.map +1 -0
  172. package/dist/services/hooks/index.d.ts +2 -0
  173. package/dist/services/hooks/index.d.ts.map +1 -0
  174. package/dist/services/hooks/index.js +2 -0
  175. package/dist/services/hooks/index.js.map +1 -0
  176. package/dist/services/logs/LogFormatterService.d.ts +17 -0
  177. package/dist/services/logs/LogFormatterService.d.ts.map +1 -0
  178. package/dist/services/logs/LogFormatterService.js +35 -0
  179. package/dist/services/logs/LogFormatterService.js.map +1 -0
  180. package/dist/services/logs/TempFileService.d.ts +27 -0
  181. package/dist/services/logs/TempFileService.d.ts.map +1 -0
  182. package/dist/services/logs/TempFileService.js +90 -0
  183. package/dist/services/logs/TempFileService.js.map +1 -0
  184. package/dist/services/logs/index.d.ts +3 -0
  185. package/dist/services/logs/index.d.ts.map +1 -0
  186. package/dist/services/logs/index.js +4 -0
  187. package/dist/services/logs/index.js.map +1 -0
  188. package/dist/services/plan/PlanService.d.ts +70 -0
  189. package/dist/services/plan/PlanService.d.ts.map +1 -0
  190. package/dist/services/plan/PlanService.js +211 -0
  191. package/dist/services/plan/PlanService.js.map +1 -0
  192. package/dist/services/polling/GitHubDirectPollingAdapter.d.ts +16 -0
  193. package/dist/services/polling/GitHubDirectPollingAdapter.d.ts.map +1 -0
  194. package/dist/services/polling/GitHubDirectPollingAdapter.js +87 -0
  195. package/dist/services/polling/GitHubDirectPollingAdapter.js.map +1 -0
  196. package/dist/services/polling/HulaServerPollingAdapter.d.ts +23 -0
  197. package/dist/services/polling/HulaServerPollingAdapter.d.ts.map +1 -0
  198. package/dist/services/polling/HulaServerPollingAdapter.js +78 -0
  199. package/dist/services/polling/HulaServerPollingAdapter.js.map +1 -0
  200. package/dist/services/polling/IStatusPollingAdapter.d.ts +29 -0
  201. package/dist/services/polling/IStatusPollingAdapter.d.ts.map +1 -0
  202. package/dist/services/polling/IStatusPollingAdapter.js +2 -0
  203. package/dist/services/polling/IStatusPollingAdapter.js.map +1 -0
  204. package/dist/services/polling/StatusPollingAdapterFactory.d.ts +14 -0
  205. package/dist/services/polling/StatusPollingAdapterFactory.d.ts.map +1 -0
  206. package/dist/services/polling/StatusPollingAdapterFactory.js +41 -0
  207. package/dist/services/polling/StatusPollingAdapterFactory.js.map +1 -0
  208. package/dist/services/polling/index.d.ts +5 -0
  209. package/dist/services/polling/index.d.ts.map +1 -0
  210. package/dist/services/polling/index.js +5 -0
  211. package/dist/services/polling/index.js.map +1 -0
  212. package/dist/services/preview/PreviewService.d.ts +86 -0
  213. package/dist/services/preview/PreviewService.d.ts.map +1 -0
  214. package/dist/services/preview/PreviewService.js +439 -0
  215. package/dist/services/preview/PreviewService.js.map +1 -0
  216. package/dist/services/tracking/ProjectTrackingAdapter.d.ts +41 -0
  217. package/dist/services/tracking/ProjectTrackingAdapter.d.ts.map +1 -0
  218. package/dist/services/tracking/ProjectTrackingAdapter.js +230 -0
  219. package/dist/services/tracking/ProjectTrackingAdapter.js.map +1 -0
  220. package/dist/services/tracking/RemoteTrackingAdapter.d.ts +62 -0
  221. package/dist/services/tracking/RemoteTrackingAdapter.d.ts.map +1 -0
  222. package/dist/services/tracking/RemoteTrackingAdapter.js +242 -0
  223. package/dist/services/tracking/RemoteTrackingAdapter.js.map +1 -0
  224. package/dist/services/tracking/TrackingAdapterFactory.d.ts +25 -0
  225. package/dist/services/tracking/TrackingAdapterFactory.d.ts.map +1 -0
  226. package/dist/services/tracking/TrackingAdapterFactory.js +55 -0
  227. package/dist/services/tracking/TrackingAdapterFactory.js.map +1 -0
  228. package/dist/services/tracking/TrackingService.d.ts +104 -0
  229. package/dist/services/tracking/TrackingService.d.ts.map +1 -0
  230. package/dist/services/tracking/TrackingService.js +256 -0
  231. package/dist/services/tracking/TrackingService.js.map +1 -0
  232. package/dist/services/tracking/UntrackedIssuesService.d.ts +20 -0
  233. package/dist/services/tracking/UntrackedIssuesService.d.ts.map +1 -0
  234. package/dist/services/tracking/UntrackedIssuesService.js +148 -0
  235. package/dist/services/tracking/UntrackedIssuesService.js.map +1 -0
  236. package/dist/services/tracking/local-file-migration.d.ts +16 -0
  237. package/dist/services/tracking/local-file-migration.d.ts.map +1 -0
  238. package/dist/services/tracking/local-file-migration.js +86 -0
  239. package/dist/services/tracking/local-file-migration.js.map +1 -0
  240. package/dist/templates/planning-instructions.md +752 -0
  241. package/dist/templates/proceed-instructions.md +453 -0
  242. package/dist/templates/scripts/hula-fix-commit.sh +110 -0
  243. package/dist/templates/scripts/hula-fix-setup.sh +145 -0
  244. package/dist/templates/scripts/hula-launch-run.sh +89 -0
  245. package/dist/templates/scripts/hula-merge-local.sh +138 -0
  246. package/dist/templates/scripts/hula-merge-remote.sh +74 -0
  247. package/dist/templates/scripts/hula-read-config.sh +38 -0
  248. package/dist/templates/scripts/hula-verify-gather.sh +135 -0
  249. package/dist/templates/scripts/hula-verify-post.sh +84 -0
  250. package/dist/templates/skills/hula-confirm/SKILL.md +361 -0
  251. package/dist/templates/skills/hula-create/SKILL.md +211 -0
  252. package/dist/templates/skills/hula-fix/SKILL.md +224 -0
  253. package/dist/templates/skills/hula-launch/SKILL.md +159 -0
  254. package/dist/templates/skills/hula-log/SKILL.md +105 -0
  255. package/dist/templates/skills/hula-merge/SKILL.md +387 -0
  256. package/dist/templates/skills/hula-plan/SKILL.md +148 -0
  257. package/dist/templates/skills/hula-upload/SKILL.md +115 -0
  258. package/dist/templates/skills/hula-verify/SKILL.md +754 -0
  259. package/dist/types/common.schema.d.ts +46 -0
  260. package/dist/types/common.schema.d.ts.map +1 -0
  261. package/dist/types/common.schema.js +60 -0
  262. package/dist/types/common.schema.js.map +1 -0
  263. package/dist/types/config.schema.d.ts +443 -0
  264. package/dist/types/config.schema.d.ts.map +1 -0
  265. package/dist/types/config.schema.js +126 -0
  266. package/dist/types/config.schema.js.map +1 -0
  267. package/dist/types/index.d.ts +6 -0
  268. package/dist/types/index.d.ts.map +1 -0
  269. package/dist/types/index.js +7 -0
  270. package/dist/types/index.js.map +1 -0
  271. package/dist/types/issue.schema.d.ts +136 -0
  272. package/dist/types/issue.schema.d.ts.map +1 -0
  273. package/dist/types/issue.schema.js +49 -0
  274. package/dist/types/issue.schema.js.map +1 -0
  275. package/dist/types/pr.schema.d.ts +118 -0
  276. package/dist/types/pr.schema.d.ts.map +1 -0
  277. package/dist/types/pr.schema.js +40 -0
  278. package/dist/types/pr.schema.js.map +1 -0
  279. package/dist/types/tracking.schema.d.ts +340 -0
  280. package/dist/types/tracking.schema.d.ts.map +1 -0
  281. package/dist/types/tracking.schema.js +56 -0
  282. package/dist/types/tracking.schema.js.map +1 -0
  283. package/dist/utils/browser-launcher.d.ts +60 -0
  284. package/dist/utils/browser-launcher.d.ts.map +1 -0
  285. package/dist/utils/browser-launcher.js +263 -0
  286. package/dist/utils/browser-launcher.js.map +1 -0
  287. package/dist/utils/cache.d.ts +44 -0
  288. package/dist/utils/cache.d.ts.map +1 -0
  289. package/dist/utils/cache.js +94 -0
  290. package/dist/utils/cache.js.map +1 -0
  291. package/dist/utils/config-parser.d.ts +16 -0
  292. package/dist/utils/config-parser.d.ts.map +1 -0
  293. package/dist/utils/config-parser.js +210 -0
  294. package/dist/utils/config-parser.js.map +1 -0
  295. package/dist/utils/editor.d.ts +21 -0
  296. package/dist/utils/editor.d.ts.map +1 -0
  297. package/dist/utils/editor.js +213 -0
  298. package/dist/utils/editor.js.map +1 -0
  299. package/dist/utils/git-utils.d.ts +5 -0
  300. package/dist/utils/git-utils.d.ts.map +1 -0
  301. package/dist/utils/git-utils.js +18 -0
  302. package/dist/utils/git-utils.js.map +1 -0
  303. package/dist/utils/github-cli.d.ts +62 -0
  304. package/dist/utils/github-cli.d.ts.map +1 -0
  305. package/dist/utils/github-cli.js +492 -0
  306. package/dist/utils/github-cli.js.map +1 -0
  307. package/dist/utils/logger.d.ts +45 -0
  308. package/dist/utils/logger.d.ts.map +1 -0
  309. package/dist/utils/logger.js +118 -0
  310. package/dist/utils/logger.js.map +1 -0
  311. package/dist/utils/open-url.d.ts +19 -0
  312. package/dist/utils/open-url.d.ts.map +1 -0
  313. package/dist/utils/open-url.js +37 -0
  314. package/dist/utils/open-url.js.map +1 -0
  315. package/dist/utils/project-resolver.d.ts +13 -0
  316. package/dist/utils/project-resolver.d.ts.map +1 -0
  317. package/dist/utils/project-resolver.js +35 -0
  318. package/dist/utils/project-resolver.js.map +1 -0
  319. package/dist/utils/prompts.d.ts +80 -0
  320. package/dist/utils/prompts.d.ts.map +1 -0
  321. package/dist/utils/prompts.js +326 -0
  322. package/dist/utils/prompts.js.map +1 -0
  323. package/dist/utils/shell.d.ts +54 -0
  324. package/dist/utils/shell.d.ts.map +1 -0
  325. package/dist/utils/shell.js +152 -0
  326. package/dist/utils/shell.js.map +1 -0
  327. package/dist/utils/validators.d.ts +32 -0
  328. package/dist/utils/validators.d.ts.map +1 -0
  329. package/dist/utils/validators.js +64 -0
  330. package/dist/utils/validators.js.map +1 -0
  331. package/package.json +73 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IssueService.js","sourceRoot":"","sources":["../../../src/services/github/IssueService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type Priority } from "../../types/index.js";
2
+ /**
3
+ * Service for GitHub label operations
4
+ * Single Responsibility: Label CRUD operations
5
+ */
6
+ export declare class LabelService {
7
+ /**
8
+ * Get labels for an issue
9
+ */
10
+ getLabels(issueNumber: number): Promise<string[]>;
11
+ /**
12
+ * Create a label if it doesn't exist
13
+ */
14
+ ensureLabelExists(name: string, color: string, description?: string): Promise<void>;
15
+ /**
16
+ * Add a label to an issue
17
+ */
18
+ addLabel(issueNumber: number, label: string): Promise<void>;
19
+ /**
20
+ * Remove a label from an issue
21
+ */
22
+ removeLabel(issueNumber: number, label: string): Promise<void>;
23
+ /**
24
+ * Get current priority label from an issue
25
+ */
26
+ getPriority(issueNumber: number): Promise<Priority | null>;
27
+ /**
28
+ * Set priority label for an issue
29
+ */
30
+ setPriority(issueNumber: number, priority: Priority): Promise<void>;
31
+ /**
32
+ * Ensure all priority labels exist in the repository
33
+ */
34
+ ensurePriorityLabelsExist(): Promise<void>;
35
+ }
36
+ //# sourceMappingURL=LabelService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LabelService.d.ts","sourceRoot":"","sources":["../../../src/services/github/LabelService.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE9E;;;GAGG;AACH,qBAAa,YAAY;IACvB;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUvD;;OAEG;IACG,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAsBhB;;OAEG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjE;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpE;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAehE;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCzE;;OAEG;IACG,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;CAcjD"}
@@ -0,0 +1,122 @@
1
+ import { ghApi, getRepoInfo } from "../../utils/github-cli.js";
2
+ import { logger } from "../../utils/logger.js";
3
+ import { DEFAULT_PRIORITY_LEVELS } from "../../types/index.js";
4
+ /**
5
+ * Service for GitHub label operations
6
+ * Single Responsibility: Label CRUD operations
7
+ */
8
+ export class LabelService {
9
+ /**
10
+ * Get labels for an issue
11
+ */
12
+ async getLabels(issueNumber) {
13
+ const repo = await getRepoInfo();
14
+ const response = await ghApi(`/repos/${repo.owner}/${repo.name}/issues/${issueNumber}/labels`);
15
+ return response.map((label) => label.name);
16
+ }
17
+ /**
18
+ * Create a label if it doesn't exist
19
+ */
20
+ async ensureLabelExists(name, color, description) {
21
+ const repo = await getRepoInfo();
22
+ try {
23
+ // Check if label exists
24
+ await ghApi(`/repos/${repo.owner}/${repo.name}/labels/${name}`);
25
+ logger.debug(`Label "${name}" already exists`);
26
+ }
27
+ catch {
28
+ // Label doesn't exist, create it
29
+ logger.debug(`Creating label "${name}"...`);
30
+ await ghApi(`/repos/${repo.owner}/${repo.name}/labels`, {
31
+ method: "POST",
32
+ fields: {
33
+ name,
34
+ color: color.replace("#", ""), // Remove # if present
35
+ description: description ?? "",
36
+ },
37
+ });
38
+ logger.debug(`Created label "${name}"`);
39
+ }
40
+ }
41
+ /**
42
+ * Add a label to an issue
43
+ */
44
+ async addLabel(issueNumber, label) {
45
+ const repo = await getRepoInfo();
46
+ logger.debug(`Adding label "${label}" to issue #${issueNumber}`);
47
+ await ghApi(`/repos/${repo.owner}/${repo.name}/issues/${issueNumber}/labels`, {
48
+ method: "POST",
49
+ fields: {
50
+ labels: [label],
51
+ },
52
+ });
53
+ }
54
+ /**
55
+ * Remove a label from an issue
56
+ */
57
+ async removeLabel(issueNumber, label) {
58
+ const repo = await getRepoInfo();
59
+ logger.debug(`Removing label "${label}" from issue #${issueNumber}`);
60
+ try {
61
+ await ghApi(`/repos/${repo.owner}/${repo.name}/issues/${issueNumber}/labels/${encodeURIComponent(label)}`, {
62
+ method: "DELETE",
63
+ });
64
+ }
65
+ catch (error) {
66
+ // Ignore error if label doesn't exist on issue
67
+ logger.debug(`Could not remove label "${label}": ${error instanceof Error ? error.message : String(error)}`);
68
+ }
69
+ }
70
+ /**
71
+ * Get current priority label from an issue
72
+ */
73
+ async getPriority(issueNumber) {
74
+ const labels = await this.getLabels(issueNumber);
75
+ // Find priority label
76
+ for (const level of DEFAULT_PRIORITY_LEVELS) {
77
+ const priorityLabel = level.label ?? `priority:${level.name.toLowerCase()}`;
78
+ if (labels.includes(priorityLabel)) {
79
+ return level.name;
80
+ }
81
+ }
82
+ return null;
83
+ }
84
+ /**
85
+ * Set priority label for an issue
86
+ */
87
+ async setPriority(issueNumber, priority) {
88
+ // Get priority configuration
89
+ const priorityLevel = DEFAULT_PRIORITY_LEVELS.find((level) => level.name === priority);
90
+ if (!priorityLevel) {
91
+ throw new Error(`Invalid priority: ${priority}`);
92
+ }
93
+ const priorityLabel = priorityLevel.label ?? `priority:${priority.toLowerCase()}`;
94
+ // Ensure label exists
95
+ await this.ensureLabelExists(priorityLabel, priorityLevel.color, `Priority: ${priority}`);
96
+ // Remove existing priority labels
97
+ const currentLabels = await this.getLabels(issueNumber);
98
+ for (const level of DEFAULT_PRIORITY_LEVELS) {
99
+ const label = level.label ?? `priority:${level.name.toLowerCase()}`;
100
+ if (currentLabels.includes(label) && label !== priorityLabel) {
101
+ await this.removeLabel(issueNumber, label);
102
+ }
103
+ }
104
+ // Add new priority label
105
+ if (!currentLabels.includes(priorityLabel)) {
106
+ await this.addLabel(issueNumber, priorityLabel);
107
+ }
108
+ logger.success(`Set priority to ${priority} for issue #${issueNumber}`);
109
+ }
110
+ /**
111
+ * Ensure all priority labels exist in the repository
112
+ */
113
+ async ensurePriorityLabelsExist() {
114
+ logger.debug("Ensuring priority labels exist...");
115
+ for (const level of DEFAULT_PRIORITY_LEVELS) {
116
+ const label = level.label ?? `priority:${level.name.toLowerCase()}`;
117
+ await this.ensureLabelExists(label, level.color, `Priority: ${level.name}`);
118
+ }
119
+ logger.debug("All priority labels exist");
120
+ }
121
+ }
122
+ //# sourceMappingURL=LabelService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LabelService.js","sourceRoot":"","sources":["../../../src/services/github/LabelService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { type PullRequest, type PRFilters, type MergeOptions } from "../../types/index.js";
2
+ /**
3
+ * Service for GitHub pull request operations
4
+ * Single Responsibility: PR operations
5
+ */
6
+ export declare class PRService {
7
+ /**
8
+ * List pull requests with filters
9
+ * Note: GitHub API doesn't support state="all" for PRs, so we fetch both open and closed separately
10
+ */
11
+ list(filters?: PRFilters): Promise<PullRequest[]>;
12
+ /**
13
+ * Get a specific PR by number
14
+ */
15
+ get(prNumber: number): Promise<PullRequest>;
16
+ /**
17
+ * Get PR for a specific issue
18
+ */
19
+ getByIssue(issueNumber: number, openOnly?: boolean): Promise<PullRequest | null>;
20
+ /**
21
+ * Merge a pull request
22
+ */
23
+ merge(prNumber: number, options: MergeOptions): Promise<void>;
24
+ /**
25
+ * Checkout a PR branch locally
26
+ */
27
+ checkout(prNumber: number): Promise<void>;
28
+ /**
29
+ * Get PR diff
30
+ */
31
+ getDiff(prNumber: number): Promise<string>;
32
+ /**
33
+ * Wait for PR to be created for an issue
34
+ */
35
+ waitForCreation(issueNumber: number, timeoutSeconds?: number): Promise<PullRequest | null>;
36
+ /**
37
+ * Delete a branch
38
+ */
39
+ deleteBranch(branchName: string): Promise<void>;
40
+ /**
41
+ * Get PR timeline events
42
+ */
43
+ getTimeline(prNumber: number): Promise<unknown[]>;
44
+ /**
45
+ * Get PR review comments
46
+ */
47
+ getReviewComments(prNumber: number): Promise<unknown[]>;
48
+ /**
49
+ * Check if PR is mergeable
50
+ */
51
+ isMergeable(prNumber: number): Promise<boolean>;
52
+ /**
53
+ * Check if PR is a draft
54
+ */
55
+ isDraft(prNumber: number): Promise<boolean>;
56
+ /**
57
+ * Convert draft PR to ready for review
58
+ */
59
+ convertToReady(prNumber: number): Promise<void>;
60
+ /**
61
+ * Get all PRs for an issue (including closed)
62
+ */
63
+ getAllByIssue(issueNumber: number): Promise<PullRequest[]>;
64
+ /**
65
+ * Request review from GitHub Copilot
66
+ */
67
+ requestCopilotReview(prNumber: number): Promise<void>;
68
+ /**
69
+ * Get the latest Copilot comment on the PR linked to an issue
70
+ */
71
+ getLatestCopilotCommentForIssue(issueNumber: number): Promise<{
72
+ author: string;
73
+ date: string;
74
+ body: string;
75
+ } | null>;
76
+ }
77
+ //# sourceMappingURL=PRService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PRService.d.ts","sourceRoot":"","sources":["../../../src/services/github/PRService.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,qBAAa,SAAS;IACpB;;;OAGG;IACG,IAAI,CAAC,OAAO,GAAE,SAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA8B3D;;OAEG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAoBjD;;OAEG;IACG,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,OAAe,GACxB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAoC9B;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BnE;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc/C;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAahD;;OAEG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,cAAc,SAAM,GACnB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAsB9B;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrD;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAUvD;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAU7D;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKjD;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrD;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAuBhE;;OAEG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3D;;OAEG;IACG,+BAA+B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QAClE,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,IAAI,CAAC;CAqDV"}
@@ -0,0 +1,287 @@
1
+ import { ghApi, getRepoInfo } from "../../utils/github-cli.js";
2
+ import { runCommand } from "../../utils/shell.js";
3
+ import { logger } from "../../utils/logger.js";
4
+ import { globalCache } from "../../utils/cache.js";
5
+ import { PullRequestSchema, } from "../../types/index.js";
6
+ /**
7
+ * Service for GitHub pull request operations
8
+ * Single Responsibility: PR operations
9
+ */
10
+ export class PRService {
11
+ /**
12
+ * List pull requests with filters
13
+ * Note: GitHub API doesn't support state="all" for PRs, so we fetch both open and closed separately
14
+ */
15
+ async list(filters = {}) {
16
+ const repo = await getRepoInfo();
17
+ // Handle state="all" by fetching both open and closed PRs
18
+ if (filters.state === "all") {
19
+ // Fetch open and closed PRs separately
20
+ const [openPRs, closedPRs] = await Promise.all([
21
+ this.list({ ...filters, state: "open" }),
22
+ this.list({ ...filters, state: "closed" }),
23
+ ]);
24
+ return [...openPRs, ...closedPRs];
25
+ }
26
+ // Build query parameters
27
+ const params = [];
28
+ if (filters.state)
29
+ params.push(`state=${filters.state}`);
30
+ if (filters.head)
31
+ params.push(`head=${filters.head}`);
32
+ if (filters.base)
33
+ params.push(`base=${filters.base}`);
34
+ if (filters.sort)
35
+ params.push(`sort=${filters.sort}`);
36
+ if (filters.direction)
37
+ params.push(`direction=${filters.direction}`);
38
+ const queryString = params.length > 0 ? `?${params.join("&")}` : "";
39
+ const response = await ghApi(`/repos/${repo.owner}/${repo.name}/pulls${queryString}`);
40
+ return response.map((pr) => PullRequestSchema.parse(pr));
41
+ }
42
+ /**
43
+ * Get a specific PR by number
44
+ */
45
+ async get(prNumber) {
46
+ const cacheKey = `pr:${prNumber}`;
47
+ const cached = globalCache.get(cacheKey);
48
+ if (cached) {
49
+ return cached;
50
+ }
51
+ const repo = await getRepoInfo();
52
+ const response = await ghApi(`/repos/${repo.owner}/${repo.name}/pulls/${prNumber}`);
53
+ const pr = PullRequestSchema.parse(response);
54
+ // Cache for 2 minutes
55
+ globalCache.set(cacheKey, pr, 120);
56
+ return pr;
57
+ }
58
+ /**
59
+ * Get PR for a specific issue
60
+ */
61
+ async getByIssue(issueNumber, openOnly = false) {
62
+ try {
63
+ // Search for PRs that reference this issue (all states by default, or just open if specified)
64
+ const prs = openOnly
65
+ ? await this.list({ state: "open" })
66
+ : await this.list({ state: "all" });
67
+ const repo = await getRepoInfo();
68
+ // Create multiple search patterns to match different ways issues can be referenced
69
+ const patterns = [
70
+ `#${issueNumber}`, // #1518
71
+ `${repo.owner}/${repo.name}#${issueNumber}`, // NoStackApp/zmanenu#1518
72
+ `Fixes #${issueNumber}`, // Fixes #1518
73
+ `Fixes ${repo.owner}/${repo.name}#${issueNumber}`, // Fixes NoStackApp/zmanenu#1518
74
+ `Closes #${issueNumber}`, // Closes #1518
75
+ `Closes ${repo.owner}/${repo.name}#${issueNumber}`, // Closes NoStackApp/zmanenu#1518
76
+ `Resolves #${issueNumber}`, // Resolves #1518
77
+ `Resolves ${repo.owner}/${repo.name}#${issueNumber}`, // Resolves NoStackApp/zmanenu#1518
78
+ ];
79
+ // Find PR that has the issue number in title or body
80
+ const matchingPR = prs.find((pr) => {
81
+ const searchText = `${pr.title} ${pr.body || ""}`;
82
+ return patterns.some((pattern) => searchText.includes(pattern));
83
+ });
84
+ return matchingPR ?? null;
85
+ }
86
+ catch (error) {
87
+ logger.debug(`Error finding PR for issue #${issueNumber}: ${String(error)}`);
88
+ return null;
89
+ }
90
+ }
91
+ /**
92
+ * Merge a pull request
93
+ */
94
+ async merge(prNumber, options) {
95
+ const repo = await getRepoInfo();
96
+ logger.debug(`Merging PR #${prNumber} with method: ${options.mergeMethod}`);
97
+ await ghApi(`/repos/${repo.owner}/${repo.name}/pulls/${prNumber}/merge`, {
98
+ method: "PUT",
99
+ fields: {
100
+ merge_method: options.mergeMethod,
101
+ ...(options.commitTitle ? { commit_title: options.commitTitle } : {}),
102
+ ...(options.commitMessage
103
+ ? { commit_message: options.commitMessage }
104
+ : {}),
105
+ },
106
+ });
107
+ // Delete branch if requested
108
+ if (options.deleteBranch) {
109
+ const pr = await this.get(prNumber);
110
+ await this.deleteBranch(pr.head.ref);
111
+ }
112
+ // Invalidate cache
113
+ globalCache.delete(`pr:${prNumber}`);
114
+ }
115
+ /**
116
+ * Checkout a PR branch locally
117
+ */
118
+ async checkout(prNumber) {
119
+ const pr = await this.get(prNumber);
120
+ logger.info(`Checking out PR #${prNumber}: ${pr.head.ref}`);
121
+ // Fetch the branch
122
+ await runCommand(`git fetch origin ${pr.head.ref}`);
123
+ // Checkout the branch
124
+ await runCommand(`git checkout ${pr.head.ref}`);
125
+ logger.success(`Checked out branch: ${pr.head.ref}`);
126
+ }
127
+ /**
128
+ * Get PR diff
129
+ */
130
+ async getDiff(prNumber) {
131
+ const repo = await getRepoInfo();
132
+ const diff = await ghApi(`/repos/${repo.owner}/${repo.name}/pulls/${prNumber}`, {
133
+ method: "GET",
134
+ });
135
+ return diff;
136
+ }
137
+ /**
138
+ * Wait for PR to be created for an issue
139
+ */
140
+ async waitForCreation(issueNumber, timeoutSeconds = 300) {
141
+ const startTime = Date.now();
142
+ const pollIntervalMs = 5000; // 5 seconds
143
+ logger.info(`Waiting for PR creation for issue #${issueNumber}...`);
144
+ while (Date.now() - startTime < timeoutSeconds * 1000) {
145
+ const pr = await this.getByIssue(issueNumber);
146
+ if (pr) {
147
+ logger.success(`PR #${pr.number} found!`);
148
+ return pr;
149
+ }
150
+ // Wait before next poll
151
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
152
+ }
153
+ logger.warning(`Timeout waiting for PR creation for issue #${issueNumber}`);
154
+ return null;
155
+ }
156
+ /**
157
+ * Delete a branch
158
+ */
159
+ async deleteBranch(branchName) {
160
+ const repo = await getRepoInfo();
161
+ logger.debug(`Deleting branch: ${branchName}`);
162
+ try {
163
+ await ghApi(`/repos/${repo.owner}/${repo.name}/git/refs/heads/${branchName}`, {
164
+ method: "DELETE",
165
+ });
166
+ logger.success(`Deleted branch: ${branchName}`);
167
+ }
168
+ catch (error) {
169
+ logger.warning(`Could not delete branch ${branchName}: ${String(error)}`);
170
+ }
171
+ }
172
+ /**
173
+ * Get PR timeline events
174
+ */
175
+ async getTimeline(prNumber) {
176
+ const repo = await getRepoInfo();
177
+ const timeline = await ghApi(`/repos/${repo.owner}/${repo.name}/issues/${prNumber}/timeline`);
178
+ return timeline;
179
+ }
180
+ /**
181
+ * Get PR review comments
182
+ */
183
+ async getReviewComments(prNumber) {
184
+ const repo = await getRepoInfo();
185
+ const comments = await ghApi(`/repos/${repo.owner}/${repo.name}/pulls/${prNumber}/comments`);
186
+ return comments;
187
+ }
188
+ /**
189
+ * Check if PR is mergeable
190
+ */
191
+ async isMergeable(prNumber) {
192
+ const pr = await this.get(prNumber);
193
+ return pr.mergeable ?? false;
194
+ }
195
+ /**
196
+ * Check if PR is a draft
197
+ */
198
+ async isDraft(prNumber) {
199
+ const pr = await this.get(prNumber);
200
+ return pr.draft ?? false;
201
+ }
202
+ /**
203
+ * Convert draft PR to ready for review
204
+ */
205
+ async convertToReady(prNumber) {
206
+ logger.debug(`Converting PR #${prNumber} to ready for review`);
207
+ try {
208
+ // Use gh CLI to mark PR as ready
209
+ await runCommand(`gh pr ready ${prNumber}`);
210
+ // Invalidate cache
211
+ globalCache.delete(`pr:${prNumber}`);
212
+ logger.success(`PR #${prNumber} marked as ready for review`);
213
+ }
214
+ catch (error) {
215
+ throw new Error(`Failed to mark PR #${prNumber} as ready: ${error instanceof Error ? error.message : String(error)}`);
216
+ }
217
+ }
218
+ /**
219
+ * Get all PRs for an issue (including closed)
220
+ */
221
+ async getAllByIssue(issueNumber) {
222
+ try {
223
+ // Search for all PRs that reference this issue
224
+ const allPrs = await this.list({ state: "all" });
225
+ // Find all PRs that reference the issue
226
+ const matchingPRs = allPrs.filter((pr) => pr.title.includes(`#${issueNumber}`) ||
227
+ pr.body?.includes(`#${issueNumber}`) ||
228
+ pr.body?.includes(`Fixes #${issueNumber}`) ||
229
+ pr.body?.includes(`Closes #${issueNumber}`));
230
+ return matchingPRs;
231
+ }
232
+ catch (error) {
233
+ logger.debug(`Error finding PRs for issue #${issueNumber}: ${String(error)}`);
234
+ return [];
235
+ }
236
+ }
237
+ /**
238
+ * Request review from GitHub Copilot
239
+ */
240
+ async requestCopilotReview(prNumber) {
241
+ // This would require GitHub Copilot API integration
242
+ // For now, we'll just add a comment requesting review
243
+ const repo = await getRepoInfo();
244
+ await ghApi(`/repos/${repo.owner}/${repo.name}/issues/${prNumber}/comments`, {
245
+ method: "POST",
246
+ fields: {
247
+ body: "@github-copilot review this PR please",
248
+ },
249
+ });
250
+ }
251
+ /**
252
+ * Get the latest Copilot comment on the PR linked to an issue
253
+ */
254
+ async getLatestCopilotCommentForIssue(issueNumber) {
255
+ try {
256
+ // Find PR linked to issue
257
+ const prOutput = await runCommand(`gh pr list --search "closes:#${issueNumber} OR fixes:#${issueNumber}" --json number --limit 1`, { silent: true });
258
+ const prs = JSON.parse(prOutput);
259
+ if (prs.length === 0 || !prs[0]) {
260
+ return null;
261
+ }
262
+ const prNumber = prs[0].number;
263
+ const commentsOutput = await runCommand(`gh pr view ${prNumber} --json comments`, { silent: true });
264
+ const commentsData = JSON.parse(commentsOutput);
265
+ if (commentsData.comments.length > 0) {
266
+ // Filter for Copilot comments
267
+ const copilotComments = commentsData.comments.filter((comment) => comment.author.login.toLowerCase().includes("copilot"));
268
+ const lastComment = copilotComments.length > 0
269
+ ? copilotComments[copilotComments.length - 1]
270
+ : null;
271
+ if (lastComment) {
272
+ return {
273
+ author: lastComment.author.login,
274
+ date: lastComment.createdAt,
275
+ body: lastComment.body,
276
+ };
277
+ }
278
+ }
279
+ return null;
280
+ }
281
+ catch (error) {
282
+ logger.error(`Failed to get latest comment: ${String(error)}`);
283
+ return null;
284
+ }
285
+ }
286
+ }
287
+ //# sourceMappingURL=PRService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PRService.js","sourceRoot":"","sources":["../../../src/services/github/PRService.ts"],"names":[],"mappings":"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"}