@akiojin/gwt 2.0.0 → 2.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 (336) hide show
  1. package/dist/claude-history.d.ts +60 -0
  2. package/dist/claude-history.d.ts.map +1 -0
  3. package/dist/claude-history.js +606 -0
  4. package/dist/claude-history.js.map +1 -0
  5. package/dist/claude.d.ts +12 -0
  6. package/dist/claude.d.ts.map +1 -0
  7. package/dist/claude.js +222 -0
  8. package/dist/claude.js.map +1 -0
  9. package/dist/cli/ui/components/App.d.ts +22 -0
  10. package/dist/cli/ui/components/App.d.ts.map +1 -0
  11. package/dist/cli/ui/components/App.js +557 -0
  12. package/dist/cli/ui/components/App.js.map +1 -0
  13. package/dist/cli/ui/components/common/Confirm.d.ts +13 -0
  14. package/dist/cli/ui/components/common/Confirm.d.ts.map +1 -0
  15. package/dist/cli/ui/components/common/Confirm.js +20 -0
  16. package/dist/cli/ui/components/common/Confirm.js.map +1 -0
  17. package/dist/cli/ui/components/common/ErrorBoundary.d.ts +23 -0
  18. package/dist/cli/ui/components/common/ErrorBoundary.d.ts.map +1 -0
  19. package/dist/cli/ui/components/common/ErrorBoundary.js +37 -0
  20. package/dist/cli/ui/components/common/ErrorBoundary.js.map +1 -0
  21. package/dist/cli/ui/components/common/Input.d.ts +14 -0
  22. package/dist/cli/ui/components/common/Input.d.ts.map +1 -0
  23. package/dist/cli/ui/components/common/Input.js +14 -0
  24. package/dist/cli/ui/components/common/Input.js.map +1 -0
  25. package/dist/cli/ui/components/common/LoadingIndicator.d.ts +19 -0
  26. package/dist/cli/ui/components/common/LoadingIndicator.d.ts.map +1 -0
  27. package/dist/cli/ui/components/common/LoadingIndicator.js +61 -0
  28. package/dist/cli/ui/components/common/LoadingIndicator.js.map +1 -0
  29. package/dist/cli/ui/components/common/Select.d.ts +30 -0
  30. package/dist/cli/ui/components/common/Select.d.ts.map +1 -0
  31. package/dist/cli/ui/components/common/Select.js +140 -0
  32. package/dist/cli/ui/components/common/Select.js.map +1 -0
  33. package/dist/cli/ui/components/parts/Footer.d.ts +15 -0
  34. package/dist/cli/ui/components/parts/Footer.d.ts.map +1 -0
  35. package/dist/cli/ui/components/parts/Footer.js +20 -0
  36. package/dist/cli/ui/components/parts/Footer.js.map +1 -0
  37. package/dist/cli/ui/components/parts/Header.d.ts +29 -0
  38. package/dist/cli/ui/components/parts/Header.d.ts.map +1 -0
  39. package/dist/cli/ui/components/parts/Header.js +19 -0
  40. package/dist/cli/ui/components/parts/Header.js.map +1 -0
  41. package/dist/cli/ui/components/parts/MergeStatusList.d.ts +13 -0
  42. package/dist/cli/ui/components/parts/MergeStatusList.d.ts.map +1 -0
  43. package/dist/cli/ui/components/parts/MergeStatusList.js +52 -0
  44. package/dist/cli/ui/components/parts/MergeStatusList.js.map +1 -0
  45. package/dist/cli/ui/components/parts/ProgressBar.d.ts +13 -0
  46. package/dist/cli/ui/components/parts/ProgressBar.d.ts.map +1 -0
  47. package/dist/cli/ui/components/parts/ProgressBar.js +53 -0
  48. package/dist/cli/ui/components/parts/ProgressBar.js.map +1 -0
  49. package/dist/cli/ui/components/parts/ScrollableList.d.ts +12 -0
  50. package/dist/cli/ui/components/parts/ScrollableList.d.ts.map +1 -0
  51. package/dist/cli/ui/components/parts/ScrollableList.js +11 -0
  52. package/dist/cli/ui/components/parts/ScrollableList.js.map +1 -0
  53. package/dist/cli/ui/components/parts/Stats.d.ts +13 -0
  54. package/dist/cli/ui/components/parts/Stats.d.ts.map +1 -0
  55. package/dist/cli/ui/components/parts/Stats.js +42 -0
  56. package/dist/cli/ui/components/parts/Stats.js.map +1 -0
  57. package/dist/cli/ui/components/screens/AIToolSelectorScreen.d.ts +20 -0
  58. package/dist/cli/ui/components/screens/AIToolSelectorScreen.d.ts.map +1 -0
  59. package/dist/cli/ui/components/screens/AIToolSelectorScreen.js +77 -0
  60. package/dist/cli/ui/components/screens/AIToolSelectorScreen.js.map +1 -0
  61. package/dist/cli/ui/components/screens/BatchMergeProgressScreen.d.ts +14 -0
  62. package/dist/cli/ui/components/screens/BatchMergeProgressScreen.d.ts.map +1 -0
  63. package/dist/cli/ui/components/screens/BatchMergeProgressScreen.js +41 -0
  64. package/dist/cli/ui/components/screens/BatchMergeProgressScreen.js.map +1 -0
  65. package/dist/cli/ui/components/screens/BatchMergeResultScreen.d.ts +14 -0
  66. package/dist/cli/ui/components/screens/BatchMergeResultScreen.d.ts.map +1 -0
  67. package/dist/cli/ui/components/screens/BatchMergeResultScreen.js +71 -0
  68. package/dist/cli/ui/components/screens/BatchMergeResultScreen.js.map +1 -0
  69. package/dist/cli/ui/components/screens/BranchCreatorScreen.d.ts +15 -0
  70. package/dist/cli/ui/components/screens/BranchCreatorScreen.d.ts.map +1 -0
  71. package/dist/cli/ui/components/screens/BranchCreatorScreen.js +142 -0
  72. package/dist/cli/ui/components/screens/BranchCreatorScreen.js.map +1 -0
  73. package/dist/cli/ui/components/screens/BranchListScreen.d.ts +39 -0
  74. package/dist/cli/ui/components/screens/BranchListScreen.d.ts.map +1 -0
  75. package/dist/cli/ui/components/screens/BranchListScreen.js +172 -0
  76. package/dist/cli/ui/components/screens/BranchListScreen.js.map +1 -0
  77. package/dist/cli/ui/components/screens/ExecutionModeSelectorScreen.d.ts +29 -0
  78. package/dist/cli/ui/components/screens/ExecutionModeSelectorScreen.d.ts.map +1 -0
  79. package/dist/cli/ui/components/screens/ExecutionModeSelectorScreen.js +92 -0
  80. package/dist/cli/ui/components/screens/ExecutionModeSelectorScreen.js.map +1 -0
  81. package/dist/cli/ui/components/screens/PRCleanupScreen.d.ts +23 -0
  82. package/dist/cli/ui/components/screens/PRCleanupScreen.d.ts.map +1 -0
  83. package/dist/cli/ui/components/screens/PRCleanupScreen.js +94 -0
  84. package/dist/cli/ui/components/screens/PRCleanupScreen.js.map +1 -0
  85. package/dist/cli/ui/components/screens/SessionSelectorScreen.d.ts +17 -0
  86. package/dist/cli/ui/components/screens/SessionSelectorScreen.d.ts.map +1 -0
  87. package/dist/cli/ui/components/screens/SessionSelectorScreen.js +55 -0
  88. package/dist/cli/ui/components/screens/SessionSelectorScreen.js.map +1 -0
  89. package/dist/cli/ui/components/screens/WorktreeManagerScreen.d.ts +20 -0
  90. package/dist/cli/ui/components/screens/WorktreeManagerScreen.d.ts.map +1 -0
  91. package/dist/cli/ui/components/screens/WorktreeManagerScreen.js +65 -0
  92. package/dist/cli/ui/components/screens/WorktreeManagerScreen.js.map +1 -0
  93. package/dist/cli/ui/hooks/useBatchMerge.d.ts +17 -0
  94. package/dist/cli/ui/hooks/useBatchMerge.d.ts.map +1 -0
  95. package/dist/cli/ui/hooks/useBatchMerge.js +77 -0
  96. package/dist/cli/ui/hooks/useBatchMerge.js.map +1 -0
  97. package/dist/cli/ui/hooks/useGitData.d.ts +20 -0
  98. package/dist/cli/ui/hooks/useGitData.d.ts.map +1 -0
  99. package/dist/cli/ui/hooks/useGitData.js +116 -0
  100. package/dist/cli/ui/hooks/useGitData.js.map +1 -0
  101. package/dist/cli/ui/hooks/useScreenState.d.ts +12 -0
  102. package/dist/cli/ui/hooks/useScreenState.d.ts.map +1 -0
  103. package/dist/cli/ui/hooks/useScreenState.js +30 -0
  104. package/dist/cli/ui/hooks/useScreenState.js.map +1 -0
  105. package/dist/cli/ui/hooks/useTerminalSize.d.ts +9 -0
  106. package/dist/cli/ui/hooks/useTerminalSize.d.ts.map +1 -0
  107. package/dist/cli/ui/hooks/useTerminalSize.js +24 -0
  108. package/dist/cli/ui/hooks/useTerminalSize.js.map +1 -0
  109. package/dist/cli/ui/screens/BranchActionSelectorScreen.d.ts +21 -0
  110. package/dist/cli/ui/screens/BranchActionSelectorScreen.d.ts.map +1 -0
  111. package/dist/cli/ui/screens/BranchActionSelectorScreen.js +61 -0
  112. package/dist/cli/ui/screens/BranchActionSelectorScreen.js.map +1 -0
  113. package/dist/cli/ui/types.d.ts +245 -0
  114. package/dist/cli/ui/types.d.ts.map +1 -0
  115. package/dist/cli/ui/types.js +2 -0
  116. package/dist/cli/ui/types.js.map +1 -0
  117. package/dist/cli/ui/utils/baseBranch.d.ts +4 -0
  118. package/dist/cli/ui/utils/baseBranch.d.ts.map +1 -0
  119. package/dist/cli/ui/utils/baseBranch.js +17 -0
  120. package/dist/cli/ui/utils/baseBranch.js.map +1 -0
  121. package/dist/cli/ui/utils/branchFormatter.d.ts +13 -0
  122. package/dist/cli/ui/utils/branchFormatter.d.ts.map +1 -0
  123. package/dist/cli/ui/utils/branchFormatter.js +202 -0
  124. package/dist/cli/ui/utils/branchFormatter.js.map +1 -0
  125. package/dist/cli/ui/utils/statisticsCalculator.d.ts +9 -0
  126. package/dist/cli/ui/utils/statisticsCalculator.d.ts.map +1 -0
  127. package/dist/cli/ui/utils/statisticsCalculator.js +37 -0
  128. package/dist/cli/ui/utils/statisticsCalculator.js.map +1 -0
  129. package/dist/client/assets/index-CqaYsI0z.js +81 -0
  130. package/dist/client/assets/index-Dy3OxWpP.css +32 -0
  131. package/dist/client/index.html +13 -0
  132. package/dist/codex.d.ts +12 -0
  133. package/dist/codex.d.ts.map +1 -0
  134. package/dist/codex.js +106 -0
  135. package/dist/codex.js.map +1 -0
  136. package/dist/config/builtin-tools.d.ts +19 -0
  137. package/dist/config/builtin-tools.d.ts.map +1 -0
  138. package/dist/config/builtin-tools.js +40 -0
  139. package/dist/config/builtin-tools.js.map +1 -0
  140. package/dist/config/constants.d.ts +74 -0
  141. package/dist/config/constants.d.ts.map +1 -0
  142. package/dist/config/constants.js +90 -0
  143. package/dist/config/constants.js.map +1 -0
  144. package/dist/config/env-history.d.ts +4 -0
  145. package/dist/config/env-history.d.ts.map +1 -0
  146. package/dist/config/env-history.js +34 -0
  147. package/dist/config/env-history.js.map +1 -0
  148. package/dist/config/index.d.ts +24 -0
  149. package/dist/config/index.d.ts.map +1 -0
  150. package/dist/config/index.js +144 -0
  151. package/dist/config/index.js.map +1 -0
  152. package/dist/config/tools.d.ts +40 -0
  153. package/dist/config/tools.d.ts.map +1 -0
  154. package/dist/config/tools.js +238 -0
  155. package/dist/config/tools.js.map +1 -0
  156. package/dist/git.d.ts +145 -0
  157. package/dist/git.d.ts.map +1 -0
  158. package/dist/git.js +871 -0
  159. package/dist/git.js.map +1 -0
  160. package/dist/github.d.ts +14 -0
  161. package/dist/github.d.ts.map +1 -0
  162. package/dist/github.js +123 -0
  163. package/dist/github.js.map +1 -0
  164. package/dist/index.d.ts +15 -0
  165. package/dist/index.d.ts.map +1 -0
  166. package/dist/index.js +510 -0
  167. package/dist/index.js.map +1 -0
  168. package/dist/launcher.d.ts +30 -0
  169. package/dist/launcher.d.ts.map +1 -0
  170. package/dist/launcher.js +116 -0
  171. package/dist/launcher.js.map +1 -0
  172. package/dist/repositories/git.repository.d.ts +38 -0
  173. package/dist/repositories/git.repository.d.ts.map +1 -0
  174. package/dist/repositories/git.repository.js +117 -0
  175. package/dist/repositories/git.repository.js.map +1 -0
  176. package/dist/repositories/github.repository.d.ts +16 -0
  177. package/dist/repositories/github.repository.d.ts.map +1 -0
  178. package/dist/repositories/github.repository.js +61 -0
  179. package/dist/repositories/github.repository.js.map +1 -0
  180. package/dist/repositories/worktree.repository.d.ts +18 -0
  181. package/dist/repositories/worktree.repository.d.ts.map +1 -0
  182. package/dist/repositories/worktree.repository.js +57 -0
  183. package/dist/repositories/worktree.repository.js.map +1 -0
  184. package/dist/services/BatchMergeService.d.ts +45 -0
  185. package/dist/services/BatchMergeService.d.ts.map +1 -0
  186. package/dist/services/BatchMergeService.js +197 -0
  187. package/dist/services/BatchMergeService.js.map +1 -0
  188. package/dist/services/WorktreeOrchestrator.d.ts +37 -0
  189. package/dist/services/WorktreeOrchestrator.d.ts.map +1 -0
  190. package/dist/services/WorktreeOrchestrator.js +74 -0
  191. package/dist/services/WorktreeOrchestrator.js.map +1 -0
  192. package/dist/services/dependency-installer.d.ts +26 -0
  193. package/dist/services/dependency-installer.d.ts.map +1 -0
  194. package/dist/services/dependency-installer.js +139 -0
  195. package/dist/services/dependency-installer.js.map +1 -0
  196. package/dist/services/git.service.d.ts +27 -0
  197. package/dist/services/git.service.d.ts.map +1 -0
  198. package/dist/services/git.service.js +95 -0
  199. package/dist/services/git.service.js.map +1 -0
  200. package/dist/services/github.service.d.ts +14 -0
  201. package/dist/services/github.service.d.ts.map +1 -0
  202. package/dist/services/github.service.js +52 -0
  203. package/dist/services/github.service.js.map +1 -0
  204. package/dist/services/worktree.service.d.ts +20 -0
  205. package/dist/services/worktree.service.d.ts.map +1 -0
  206. package/dist/services/worktree.service.js +52 -0
  207. package/dist/services/worktree.service.js.map +1 -0
  208. package/dist/types/api.d.ts +211 -0
  209. package/dist/types/api.d.ts.map +1 -0
  210. package/dist/types/api.js +8 -0
  211. package/dist/types/api.js.map +1 -0
  212. package/dist/types/tools.d.ts +201 -0
  213. package/dist/types/tools.d.ts.map +1 -0
  214. package/dist/types/tools.js +8 -0
  215. package/dist/types/tools.js.map +1 -0
  216. package/dist/utils/spinner.d.ts +6 -0
  217. package/dist/utils/spinner.d.ts.map +1 -0
  218. package/dist/utils/spinner.js +47 -0
  219. package/dist/utils/spinner.js.map +1 -0
  220. package/dist/utils/terminal.d.ts +20 -0
  221. package/dist/utils/terminal.d.ts.map +1 -0
  222. package/dist/utils/terminal.js +232 -0
  223. package/dist/utils/terminal.js.map +1 -0
  224. package/dist/utils.d.ts +9 -0
  225. package/dist/utils.d.ts.map +1 -0
  226. package/dist/utils.js +48 -0
  227. package/dist/utils.js.map +1 -0
  228. package/dist/web/client/src/components/BranchGraph.d.ts +8 -0
  229. package/dist/web/client/src/components/BranchGraph.d.ts.map +1 -0
  230. package/dist/web/client/src/components/BranchGraph.js +125 -0
  231. package/dist/web/client/src/components/BranchGraph.js.map +1 -0
  232. package/dist/web/client/src/components/EnvEditor.d.ts +20 -0
  233. package/dist/web/client/src/components/EnvEditor.d.ts.map +1 -0
  234. package/dist/web/client/src/components/EnvEditor.js +65 -0
  235. package/dist/web/client/src/components/EnvEditor.js.map +1 -0
  236. package/dist/web/client/src/components/Terminal.d.ts +15 -0
  237. package/dist/web/client/src/components/Terminal.d.ts.map +1 -0
  238. package/dist/web/client/src/components/Terminal.js +112 -0
  239. package/dist/web/client/src/components/Terminal.js.map +1 -0
  240. package/dist/web/client/src/hooks/useBranches.d.ts +16 -0
  241. package/dist/web/client/src/hooks/useBranches.d.ts.map +1 -0
  242. package/dist/web/client/src/hooks/useBranches.js +35 -0
  243. package/dist/web/client/src/hooks/useBranches.js.map +1 -0
  244. package/dist/web/client/src/hooks/useConfig.d.ts +13 -0
  245. package/dist/web/client/src/hooks/useConfig.d.ts.map +1 -0
  246. package/dist/web/client/src/hooks/useConfig.js +27 -0
  247. package/dist/web/client/src/hooks/useConfig.js.map +1 -0
  248. package/dist/web/client/src/hooks/useSessions.d.ts +21 -0
  249. package/dist/web/client/src/hooks/useSessions.d.ts.map +1 -0
  250. package/dist/web/client/src/hooks/useSessions.js +49 -0
  251. package/dist/web/client/src/hooks/useSessions.js.map +1 -0
  252. package/dist/web/client/src/hooks/useWorktrees.d.ts +17 -0
  253. package/dist/web/client/src/hooks/useWorktrees.d.ts.map +1 -0
  254. package/dist/web/client/src/hooks/useWorktrees.js +41 -0
  255. package/dist/web/client/src/hooks/useWorktrees.js.map +1 -0
  256. package/dist/web/client/src/lib/api.d.ts +82 -0
  257. package/dist/web/client/src/lib/api.d.ts.map +1 -0
  258. package/dist/web/client/src/lib/api.js +147 -0
  259. package/dist/web/client/src/lib/api.js.map +1 -0
  260. package/dist/web/client/src/lib/websocket.d.ts +52 -0
  261. package/dist/web/client/src/lib/websocket.d.ts.map +1 -0
  262. package/dist/web/client/src/lib/websocket.js +137 -0
  263. package/dist/web/client/src/lib/websocket.js.map +1 -0
  264. package/dist/web/client/src/main.d.ts +2 -0
  265. package/dist/web/client/src/main.d.ts.map +1 -0
  266. package/dist/web/client/src/main.js +23 -0
  267. package/dist/web/client/src/main.js.map +1 -0
  268. package/dist/web/client/src/pages/BranchDetailPage.d.ts +3 -0
  269. package/dist/web/client/src/pages/BranchDetailPage.d.ts.map +1 -0
  270. package/dist/web/client/src/pages/BranchDetailPage.js +519 -0
  271. package/dist/web/client/src/pages/BranchDetailPage.js.map +1 -0
  272. package/dist/web/client/src/pages/BranchListPage.d.ts +3 -0
  273. package/dist/web/client/src/pages/BranchListPage.d.ts.map +1 -0
  274. package/dist/web/client/src/pages/BranchListPage.js +150 -0
  275. package/dist/web/client/src/pages/BranchListPage.js.map +1 -0
  276. package/dist/web/client/src/pages/ConfigManagementPage.d.ts +3 -0
  277. package/dist/web/client/src/pages/ConfigManagementPage.d.ts.map +1 -0
  278. package/dist/web/client/src/pages/ConfigManagementPage.js +125 -0
  279. package/dist/web/client/src/pages/ConfigManagementPage.js.map +1 -0
  280. package/dist/web/client/src/router.d.ts +9 -0
  281. package/dist/web/client/src/router.d.ts.map +1 -0
  282. package/dist/web/client/src/router.js +27 -0
  283. package/dist/web/client/src/router.js.map +1 -0
  284. package/dist/web/client/vite.config.d.ts +3 -0
  285. package/dist/web/client/vite.config.d.ts.map +1 -0
  286. package/dist/web/client/vite.config.js +21 -0
  287. package/dist/web/client/vite.config.js.map +1 -0
  288. package/dist/web/server/env/importer.d.ts +3 -0
  289. package/dist/web/server/env/importer.d.ts.map +1 -0
  290. package/dist/web/server/env/importer.js +47 -0
  291. package/dist/web/server/env/importer.js.map +1 -0
  292. package/dist/web/server/index.d.ts +11 -0
  293. package/dist/web/server/index.d.ts.map +1 -0
  294. package/dist/web/server/index.js +62 -0
  295. package/dist/web/server/index.js.map +1 -0
  296. package/dist/web/server/pty/manager.d.ts +50 -0
  297. package/dist/web/server/pty/manager.d.ts.map +1 -0
  298. package/dist/web/server/pty/manager.js +143 -0
  299. package/dist/web/server/pty/manager.js.map +1 -0
  300. package/dist/web/server/routes/branches.d.ts +11 -0
  301. package/dist/web/server/routes/branches.d.ts.map +1 -0
  302. package/dist/web/server/routes/branches.js +97 -0
  303. package/dist/web/server/routes/branches.js.map +1 -0
  304. package/dist/web/server/routes/config.d.ts +6 -0
  305. package/dist/web/server/routes/config.d.ts.map +1 -0
  306. package/dist/web/server/routes/config.js +162 -0
  307. package/dist/web/server/routes/config.js.map +1 -0
  308. package/dist/web/server/routes/index.d.ts +13 -0
  309. package/dist/web/server/routes/index.d.ts.map +1 -0
  310. package/dist/web/server/routes/index.js +29 -0
  311. package/dist/web/server/routes/index.js.map +1 -0
  312. package/dist/web/server/routes/sessions.d.ts +12 -0
  313. package/dist/web/server/routes/sessions.d.ts.map +1 -0
  314. package/dist/web/server/routes/sessions.js +95 -0
  315. package/dist/web/server/routes/sessions.js.map +1 -0
  316. package/dist/web/server/routes/worktrees.d.ts +11 -0
  317. package/dist/web/server/routes/worktrees.d.ts.map +1 -0
  318. package/dist/web/server/routes/worktrees.js +80 -0
  319. package/dist/web/server/routes/worktrees.js.map +1 -0
  320. package/dist/web/server/services/branches.d.ts +17 -0
  321. package/dist/web/server/services/branches.d.ts.map +1 -0
  322. package/dist/web/server/services/branches.js +262 -0
  323. package/dist/web/server/services/branches.js.map +1 -0
  324. package/dist/web/server/services/worktrees.d.ts +24 -0
  325. package/dist/web/server/services/worktrees.d.ts.map +1 -0
  326. package/dist/web/server/services/worktrees.js +60 -0
  327. package/dist/web/server/services/worktrees.js.map +1 -0
  328. package/dist/web/server/websocket/handler.d.ts +41 -0
  329. package/dist/web/server/websocket/handler.d.ts.map +1 -0
  330. package/dist/web/server/websocket/handler.js +143 -0
  331. package/dist/web/server/websocket/handler.js.map +1 -0
  332. package/dist/worktree.d.ts +53 -0
  333. package/dist/worktree.d.ts.map +1 -0
  334. package/dist/worktree.js +489 -0
  335. package/dist/worktree.js.map +1 -0
  336. package/package.json +1 -1
package/dist/index.js ADDED
@@ -0,0 +1,510 @@
1
+ #!/usr/bin/env node
2
+ import { isGitRepository, getRepositoryRoot, branchExists, fetchAllRemotes, pullFastForward, getBranchDivergenceStatuses, GitError, } from "./git.js";
3
+ import { launchClaudeCode } from "./claude.js";
4
+ import { launchCodexCLI, CodexError } from "./codex.js";
5
+ import { WorktreeOrchestrator, } from "./services/WorktreeOrchestrator.js";
6
+ import chalk from "chalk";
7
+ import { worktreeExists, isProtectedBranchName, switchToProtectedBranch, WorktreeError, } from "./worktree.js";
8
+ import { getTerminalStreams, waitForUserAcknowledgement, } from "./utils/terminal.js";
9
+ import { getToolById, getSharedEnvironment } from "./config/tools.js";
10
+ import { launchCustomAITool } from "./launcher.js";
11
+ import { saveSession } from "./config/index.js";
12
+ import { getPackageVersion } from "./utils.js";
13
+ import readline from "node:readline";
14
+ import { installDependenciesForWorktree, DependencyInstallError, } from "./services/dependency-installer.js";
15
+ const ERROR_PROMPT = chalk.yellow("Review the error details, then press Enter to continue.");
16
+ async function waitForErrorAcknowledgement() {
17
+ await waitForUserAcknowledgement(ERROR_PROMPT);
18
+ }
19
+ /**
20
+ * Simple print functions (replacing legacy UI display functions)
21
+ */
22
+ function printError(message) {
23
+ console.error(chalk.red(`❌ ${message}`));
24
+ }
25
+ function printInfo(message) {
26
+ console.log(chalk.blue(`ℹ️ ${message}`));
27
+ }
28
+ function printWarning(message) {
29
+ console.warn(chalk.yellow(`⚠️ ${message}`));
30
+ }
31
+ function isGitRelatedError(error) {
32
+ if (!error) {
33
+ return false;
34
+ }
35
+ if (error instanceof GitError || error instanceof WorktreeError) {
36
+ return true;
37
+ }
38
+ if (error instanceof Error) {
39
+ return error.name === "GitError" || error.name === "WorktreeError";
40
+ }
41
+ if (typeof error === "object" &&
42
+ "name" in error) {
43
+ const name = error.name;
44
+ return name === "GitError" || name === "WorktreeError";
45
+ }
46
+ return false;
47
+ }
48
+ function isRecoverableError(error) {
49
+ if (!error) {
50
+ return false;
51
+ }
52
+ if (error instanceof GitError ||
53
+ error instanceof WorktreeError ||
54
+ error instanceof CodexError ||
55
+ error instanceof DependencyInstallError) {
56
+ return true;
57
+ }
58
+ if (error instanceof Error) {
59
+ return (error.name === "GitError" ||
60
+ error.name === "WorktreeError" ||
61
+ error.name === "CodexError" ||
62
+ error.name === "DependencyInstallError");
63
+ }
64
+ if (typeof error === "object" &&
65
+ "name" in error) {
66
+ const name = error.name;
67
+ return (name === "GitError" ||
68
+ name === "WorktreeError" ||
69
+ name === "CodexError" ||
70
+ name === "DependencyInstallError");
71
+ }
72
+ return false;
73
+ }
74
+ async function runGitStep(description, step) {
75
+ try {
76
+ const value = await step();
77
+ return { ok: true, value };
78
+ }
79
+ catch (error) {
80
+ if (isGitRelatedError(error)) {
81
+ const details = error instanceof Error ? error.message : String(error);
82
+ printWarning(`Git operation failed (${description}). Error: ${details}`);
83
+ await waitForErrorAcknowledgement();
84
+ return { ok: false };
85
+ }
86
+ throw error;
87
+ }
88
+ }
89
+ async function runDependencyInstallStep(description, step) {
90
+ try {
91
+ const value = await step();
92
+ return { ok: true, value };
93
+ }
94
+ catch (error) {
95
+ if (error instanceof DependencyInstallError) {
96
+ const details = error.message ?? "";
97
+ // 依存インストールが失敗してもワークフロー自体は継続させる
98
+ printError(`Failed to complete ${description}. ${details}`);
99
+ await waitForErrorAcknowledgement();
100
+ const fallbackResult = {
101
+ skipped: true,
102
+ manager: null,
103
+ lockfile: null,
104
+ reason: "unknown-error",
105
+ message: details,
106
+ };
107
+ return { ok: true, value: fallbackResult };
108
+ }
109
+ throw error;
110
+ }
111
+ }
112
+ async function waitForEnter(promptMessage) {
113
+ if (!process.stdin.isTTY) {
114
+ return;
115
+ }
116
+ await new Promise((resolve) => {
117
+ const rl = readline.createInterface({
118
+ input: process.stdin,
119
+ output: process.stdout,
120
+ });
121
+ rl.question(`${promptMessage}\n`, () => {
122
+ rl.close();
123
+ resolve();
124
+ });
125
+ });
126
+ }
127
+ function showHelp() {
128
+ console.log(`
129
+ Worktree Manager
130
+
131
+ Usage: gwt [options]
132
+
133
+ Options:
134
+ -h, --help Show this help message
135
+ -v, --version Show version information
136
+
137
+ Description:
138
+ Interactive Git worktree manager with AI tool selection (Claude Code / Codex CLI) and graphical branch selection.
139
+ Launch without additional options to open the interactive menu.
140
+ `);
141
+ }
142
+ /**
143
+ * Display application version
144
+ * Reads version from package.json and outputs to stdout
145
+ * Exits with code 1 if version cannot be retrieved
146
+ */
147
+ async function showVersion() {
148
+ const version = await getPackageVersion();
149
+ if (version) {
150
+ console.log(version);
151
+ }
152
+ else {
153
+ console.error("Error: Unable to retrieve version information");
154
+ await waitForErrorAcknowledgement();
155
+ process.exit(1);
156
+ }
157
+ }
158
+ /**
159
+ * Main function for Ink.js UI
160
+ * Returns SelectionResult if user made selections, undefined if user quit
161
+ */
162
+ async function mainInkUI() {
163
+ const { render } = await import("ink");
164
+ const React = await import("react");
165
+ const { App } = await import("./cli/ui/components/App.js");
166
+ const terminal = getTerminalStreams();
167
+ let selectionResult;
168
+ if (typeof terminal.stdin.resume === "function") {
169
+ terminal.stdin.resume();
170
+ }
171
+ const { unmount, waitUntilExit } = render(React.createElement(App, {
172
+ onExit: (result) => {
173
+ selectionResult = result;
174
+ },
175
+ }), {
176
+ stdin: terminal.stdin,
177
+ stdout: terminal.stdout,
178
+ stderr: terminal.stderr,
179
+ });
180
+ // Wait for user to exit
181
+ try {
182
+ await waitUntilExit();
183
+ }
184
+ finally {
185
+ terminal.exitRawMode();
186
+ if (typeof terminal.stdin.pause === "function") {
187
+ terminal.stdin.pause();
188
+ }
189
+ // Inkが残した data リスナーが子プロセス入力を奪わないようクリーンアップ
190
+ terminal.stdin.removeAllListeners?.("data");
191
+ terminal.stdin.removeAllListeners?.("keypress");
192
+ terminal.stdin.removeAllListeners?.("readable");
193
+ unmount();
194
+ }
195
+ return selectionResult;
196
+ }
197
+ /**
198
+ * Handle AI tool workflow
199
+ */
200
+ export async function handleAIToolWorkflow(selectionResult) {
201
+ const { branch, displayName, branchType, remoteBranch, tool, mode, skipPermissions, } = selectionResult;
202
+ const branchLabel = displayName ?? branch;
203
+ printInfo(`Selected: ${branchLabel} with ${tool} (${mode} mode, skipPermissions: ${skipPermissions})`);
204
+ try {
205
+ // Get repository root
206
+ const repoRootResult = await runGitStep("retrieve repository root", () => getRepositoryRoot());
207
+ if (!repoRootResult.ok) {
208
+ return;
209
+ }
210
+ const repoRoot = repoRootResult.value;
211
+ // Determine ensure options (local vs remote branch)
212
+ const ensureOptions = {};
213
+ if (branchType === "remote") {
214
+ const remoteRef = remoteBranch ?? branch;
215
+ const localExists = await branchExists(branch);
216
+ ensureOptions.baseBranch = remoteRef;
217
+ ensureOptions.isNewBranch = !localExists;
218
+ }
219
+ const existingWorktree = await worktreeExists(branch);
220
+ const isProtectedBranch = isProtectedBranchName(branch) ||
221
+ (remoteBranch ? isProtectedBranchName(remoteBranch) : false);
222
+ let protectedCheckoutResult = "none";
223
+ if (isProtectedBranch) {
224
+ const protectedRemoteRef = remoteBranch ??
225
+ (branchType === "remote" ? (displayName ?? branch) : null);
226
+ const switchResult = await runGitStep(`check out protected branch '${branch}'`, () => switchToProtectedBranch({
227
+ branchName: branch,
228
+ repoRoot,
229
+ remoteRef: protectedRemoteRef ?? null,
230
+ }));
231
+ if (!switchResult.ok) {
232
+ return;
233
+ }
234
+ protectedCheckoutResult = switchResult.value;
235
+ ensureOptions.isNewBranch = false;
236
+ }
237
+ const willCreateWorktree = !existingWorktree && !isProtectedBranch;
238
+ const orchestrator = new WorktreeOrchestrator();
239
+ // Ensure worktree exists (using orchestrator)
240
+ if (willCreateWorktree) {
241
+ const targetLabel = ensureOptions.isNewBranch
242
+ ? `base ${ensureOptions.baseBranch ?? branch}`
243
+ : `branch ${branch}`;
244
+ printInfo(`Creating worktree for ${targetLabel}. Progress indicator running...`);
245
+ }
246
+ const worktreeResult = await runGitStep(`prepare worktree (${branch})`, () => orchestrator.ensureWorktree(branch, repoRoot, ensureOptions));
247
+ if (!worktreeResult.ok) {
248
+ return;
249
+ }
250
+ const worktreePath = worktreeResult.value;
251
+ if (isProtectedBranch) {
252
+ if (protectedCheckoutResult === "remote" && remoteBranch) {
253
+ printInfo(`Created local tracking branch '${branch}' from ${remoteBranch} in repository root.`);
254
+ }
255
+ else if (protectedCheckoutResult === "local") {
256
+ printInfo(`Checked out protected branch '${branch}' in repository root.`);
257
+ }
258
+ else {
259
+ printInfo(`Using repository root for protected branch '${branch}'.`);
260
+ }
261
+ }
262
+ else if (existingWorktree) {
263
+ printInfo(`Reusing existing worktree: ${existingWorktree}`);
264
+ }
265
+ else if (ensureOptions.isNewBranch) {
266
+ const base = ensureOptions.baseBranch ?? "";
267
+ printInfo(`Created new worktree from ${base}: ${worktreePath}`);
268
+ }
269
+ else if (willCreateWorktree) {
270
+ printInfo(`Created worktree: ${worktreePath}`);
271
+ }
272
+ printInfo(`Worktree ready: ${worktreePath}`);
273
+ const dependencyResult = await runDependencyInstallStep(`dependency installation (${branch})`, () => installDependenciesForWorktree(worktreePath));
274
+ if (!dependencyResult.ok) {
275
+ return;
276
+ }
277
+ const dependencyStatus = dependencyResult.value;
278
+ if (dependencyStatus.skipped) {
279
+ let warningMessage;
280
+ switch (dependencyStatus.reason) {
281
+ case "missing-lockfile":
282
+ warningMessage =
283
+ "Skipping automatic install because no lockfiles (bun.lock / pnpm-lock.yaml / package-lock.json) or package.json were found. Run the appropriate package-manager install command manually if needed.";
284
+ break;
285
+ case "missing-binary":
286
+ warningMessage = `Package manager '${dependencyStatus.manager ?? "unknown"}' is not available in this environment; skipping automatic install.`;
287
+ break;
288
+ case "install-failed":
289
+ warningMessage = `Dependency installation failed via ${dependencyStatus.manager ?? "unknown"}. Continuing without reinstall.`;
290
+ break;
291
+ case "lockfile-access-error":
292
+ warningMessage =
293
+ "Unable to read dependency lockfiles due to a filesystem error. Continuing without reinstall.";
294
+ break;
295
+ default:
296
+ warningMessage =
297
+ "Skipping automatic dependency install due to an unexpected error. Continuing without reinstall.";
298
+ }
299
+ if (dependencyStatus.message) {
300
+ warningMessage = `${warningMessage}\nDetails: ${dependencyStatus.message}`;
301
+ }
302
+ printWarning(warningMessage);
303
+ }
304
+ else {
305
+ printInfo(`Dependencies synced via ${dependencyStatus.manager}.`);
306
+ }
307
+ // Update remotes and attempt fast-forward pull
308
+ const fetchResult = await runGitStep("fetch remotes", () => fetchAllRemotes({ cwd: repoRoot }));
309
+ if (!fetchResult.ok) {
310
+ return;
311
+ }
312
+ let fastForwardError = null;
313
+ try {
314
+ await pullFastForward(worktreePath);
315
+ printInfo(`Fast-forward pull finished for ${branch}.`);
316
+ }
317
+ catch (error) {
318
+ fastForwardError =
319
+ error instanceof Error ? error : new Error(String(error));
320
+ printWarning(`Fast-forward pull failed for ${branch}. Checking for divergence before continuing...`);
321
+ }
322
+ const divergenceBranches = new Set();
323
+ const sanitizeBranchName = (value) => {
324
+ if (!value)
325
+ return null;
326
+ return value.replace(/^origin\//, "");
327
+ };
328
+ const sanitizedBranch = sanitizeBranchName(branch);
329
+ if (sanitizedBranch) {
330
+ divergenceBranches.add(sanitizedBranch);
331
+ }
332
+ const sanitizedRemoteBranch = sanitizeBranchName(remoteBranch);
333
+ if (sanitizedRemoteBranch) {
334
+ divergenceBranches.add(sanitizedRemoteBranch);
335
+ }
336
+ const divergenceResult = await runGitStep("check branch divergence", () => getBranchDivergenceStatuses({
337
+ cwd: repoRoot,
338
+ branches: Array.from(divergenceBranches),
339
+ }));
340
+ if (!divergenceResult.ok) {
341
+ return;
342
+ }
343
+ const divergenceStatuses = divergenceResult.value;
344
+ const divergedBranches = divergenceStatuses.filter((status) => status.remoteAhead > 0 && status.localAhead > 0);
345
+ if (divergedBranches.length > 0) {
346
+ printWarning("Potential merge conflicts detected when pulling the following local branches:");
347
+ divergedBranches.forEach(({ branch: divergedBranch, remoteAhead, localAhead }) => {
348
+ const highlight = divergedBranch === branch ? " (selected branch)" : "";
349
+ console.warn(chalk.yellow(` • ${divergedBranch}${highlight} remote:+${remoteAhead} local:+${localAhead}`));
350
+ });
351
+ printWarning("Resolve these divergences (e.g., rebase or merge) before launching to avoid conflicts.");
352
+ await waitForEnter("Press Enter to continue.");
353
+ printWarning("Skipping AI tool launch until divergences are resolved. Returning to main menu...");
354
+ return;
355
+ }
356
+ else if (fastForwardError) {
357
+ printWarning(`Fast-forward pull could not complete (${fastForwardError.message}). Continuing without blocking.`);
358
+ }
359
+ // Get tool definition and shared environment overrides
360
+ const [toolConfig, sharedEnv] = await Promise.all([
361
+ getToolById(tool),
362
+ getSharedEnvironment(),
363
+ ]);
364
+ if (!toolConfig) {
365
+ throw new Error(`Tool not found: ${tool}`);
366
+ }
367
+ // Launch selected AI tool
368
+ // Builtin tools use their dedicated launch functions
369
+ // Custom tools use the generic launchCustomAITool function
370
+ if (tool === "claude-code") {
371
+ await launchClaudeCode(worktreePath, {
372
+ mode: mode === "resume"
373
+ ? "resume"
374
+ : mode === "continue"
375
+ ? "continue"
376
+ : "normal",
377
+ skipPermissions,
378
+ envOverrides: sharedEnv,
379
+ });
380
+ }
381
+ else if (tool === "codex-cli") {
382
+ await launchCodexCLI(worktreePath, {
383
+ mode: mode === "resume"
384
+ ? "resume"
385
+ : mode === "continue"
386
+ ? "continue"
387
+ : "normal",
388
+ bypassApprovals: skipPermissions,
389
+ envOverrides: sharedEnv,
390
+ });
391
+ }
392
+ else {
393
+ // Custom tool
394
+ printInfo(`Launching custom tool: ${toolConfig.displayName}`);
395
+ await launchCustomAITool(toolConfig, {
396
+ mode: mode === "resume"
397
+ ? "resume"
398
+ : mode === "continue"
399
+ ? "continue"
400
+ : "normal",
401
+ skipPermissions,
402
+ cwd: worktreePath,
403
+ sharedEnv,
404
+ });
405
+ }
406
+ // Save session with lastUsedTool
407
+ await saveSession({
408
+ lastWorktreePath: worktreePath,
409
+ lastBranch: branch,
410
+ lastUsedTool: tool,
411
+ timestamp: Date.now(),
412
+ repositoryRoot: repoRoot,
413
+ });
414
+ printInfo("Session completed successfully. Returning to main menu...");
415
+ return;
416
+ }
417
+ catch (error) {
418
+ // Handle recoverable errors (Git, Worktree, Codex errors)
419
+ if (isRecoverableError(error)) {
420
+ const details = error instanceof Error ? error.message : String(error);
421
+ printError(`Error during workflow: ${details}`);
422
+ await waitForErrorAcknowledgement();
423
+ return;
424
+ }
425
+ // Re-throw non-recoverable errors
426
+ throw error;
427
+ }
428
+ }
429
+ function logLoopError(error, context) {
430
+ const label = context === "ui" ? "UI" : "workflow";
431
+ if (error instanceof Error) {
432
+ printError(`${label} error: ${error.message}`);
433
+ }
434
+ else {
435
+ printError(`${label} error: ${String(error)}`);
436
+ }
437
+ }
438
+ export async function runInteractiveLoop(uiHandler = mainInkUI, workflowHandler = handleAIToolWorkflow) {
439
+ // Main loop: UI → AI Tool → back to UI
440
+ while (true) {
441
+ let selectionResult;
442
+ try {
443
+ selectionResult = await uiHandler();
444
+ }
445
+ catch (error) {
446
+ logLoopError(error, "ui");
447
+ await waitForErrorAcknowledgement();
448
+ continue;
449
+ }
450
+ if (!selectionResult) {
451
+ // User quit (pressed q without making selections)
452
+ printInfo("Goodbye!");
453
+ break;
454
+ }
455
+ try {
456
+ await workflowHandler(selectionResult);
457
+ }
458
+ catch (error) {
459
+ logLoopError(error, "workflow");
460
+ await waitForErrorAcknowledgement();
461
+ }
462
+ }
463
+ }
464
+ /**
465
+ * Main entry point
466
+ */
467
+ export async function main() {
468
+ // Parse command line arguments
469
+ const args = process.argv.slice(2);
470
+ const showVersionFlag = args.includes("-v") || args.includes("--version");
471
+ const showHelpFlag = args.includes("-h") || args.includes("--help");
472
+ const serveCommand = args.includes("serve");
473
+ // Version flag has higher priority than help
474
+ if (showVersionFlag) {
475
+ await showVersion();
476
+ return;
477
+ }
478
+ if (showHelpFlag) {
479
+ showHelp();
480
+ return;
481
+ }
482
+ // Start Web UI server if 'serve' command is provided
483
+ if (serveCommand) {
484
+ const { startWebServer } = await import("./web/server/index.js");
485
+ await startWebServer();
486
+ return;
487
+ }
488
+ // Check if current directory is a Git repository
489
+ if (!(await isGitRepository())) {
490
+ printError(`Current directory is not a Git repository: ${process.cwd()}`);
491
+ printInfo("Please run this command from within a Git repository or worktree directory.");
492
+ // Docker環境でよくある問題: safe.directory設定
493
+ printInfo("\\nIf you're running in Docker, you may need to configure Git safe.directory:");
494
+ printInfo(" git config --global --add safe.directory '*'");
495
+ printInfo("\\nOr run with DEBUG=1 for more information:");
496
+ printInfo(" DEBUG=1 bun run start");
497
+ await waitForErrorAcknowledgement();
498
+ process.exit(1);
499
+ }
500
+ await runInteractiveLoop();
501
+ }
502
+ // Run the application if this module is executed directly
503
+ if (import.meta.url === `file://${process.argv[1]}`) {
504
+ main().catch(async (error) => {
505
+ console.error("Fatal error:", error);
506
+ await waitForErrorAcknowledgement();
507
+ process.exit(1);
508
+ });
509
+ }
510
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * カスタムツール起動機能
3
+ *
4
+ * カスタムAIツールの起動処理を管理します。
5
+ * 3つの実行タイプ(path, bunx, command)をサポートします。
6
+ */
7
+ import type { CustomAITool, LaunchOptions } from "./types/tools.js";
8
+ /**
9
+ * コマンド名をPATH環境変数から解決
10
+ *
11
+ * Unix/Linuxではwhichコマンド、Windowsではwhereコマンドを使用して、
12
+ * コマンド名を絶対パスに解決します。
13
+ *
14
+ * @param commandName - 解決するコマンド名
15
+ * @returns コマンドの絶対パス
16
+ * @throws コマンドが見つからない場合
17
+ */
18
+ export declare function resolveCommand(commandName: string): Promise<string>;
19
+ /**
20
+ * カスタムAIツールを起動
21
+ *
22
+ * ツールの実行タイプ(path/bunx/command)に応じて適切な方法で起動します。
23
+ * stdio: "inherit" で起動するため、ツールの入出力は親プロセスに継承されます。
24
+ *
25
+ * @param tool - カスタムツール定義
26
+ * @param options - 起動オプション
27
+ * @throws 起動に失敗した場合
28
+ */
29
+ export declare function launchCustomAITool(tool: CustomAITool, options?: LaunchOptions): Promise<void>;
30
+ //# sourceMappingURL=launcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEpE;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BzE;AAmCD;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA6Cf"}