@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
@@ -0,0 +1,144 @@
1
+ import { homedir } from "node:os";
2
+ import path from "node:path";
3
+ import { readFile, writeFile, mkdir } from "node:fs/promises";
4
+ const DEFAULT_CONFIG = {
5
+ defaultBaseBranch: "main",
6
+ skipPermissions: false,
7
+ enableGitHubIntegration: true,
8
+ enableDebugMode: false,
9
+ worktreeNamingPattern: "{repo}-{branch}",
10
+ };
11
+ /**
12
+ * 設定ファイルを読み込む
13
+ */
14
+ export async function loadConfig() {
15
+ const configPaths = [
16
+ path.join(process.cwd(), ".gwt.json"),
17
+ path.join(process.cwd(), ".claude-worktree.json"), // 後方互換性
18
+ path.join(homedir(), ".config", "gwt", "config.json"),
19
+ path.join(homedir(), ".config", "claude-worktree", "config.json"), // 後方互換性
20
+ path.join(homedir(), ".gwt.json"),
21
+ path.join(homedir(), ".claude-worktree.json"), // 後方互換性
22
+ ];
23
+ for (const configPath of configPaths) {
24
+ try {
25
+ const content = await readFile(configPath, "utf-8");
26
+ const userConfig = JSON.parse(content);
27
+ return { ...DEFAULT_CONFIG, ...userConfig };
28
+ }
29
+ catch (error) {
30
+ // 設定ファイルが見つからない場合は次を試す
31
+ if (process.env.DEBUG_CONFIG) {
32
+ console.error(`Failed to load config from ${configPath}:`, error instanceof Error ? error.message : String(error));
33
+ }
34
+ }
35
+ }
36
+ // 環境変数からも読み込み
37
+ return {
38
+ ...DEFAULT_CONFIG,
39
+ defaultBaseBranch: process.env.CLAUDE_WORKTREE_BASE_BRANCH ||
40
+ DEFAULT_CONFIG.defaultBaseBranch,
41
+ skipPermissions: process.env.CLAUDE_WORKTREE_SKIP_PERMISSIONS === "true",
42
+ enableGitHubIntegration: process.env.CLAUDE_WORKTREE_GITHUB !== "false",
43
+ enableDebugMode: process.env.DEBUG_CLEANUP === "true" || process.env.DEBUG === "true",
44
+ };
45
+ }
46
+ /**
47
+ * 設定値を取得する
48
+ */
49
+ let cachedConfig = null;
50
+ export async function getConfig() {
51
+ if (!cachedConfig) {
52
+ cachedConfig = await loadConfig();
53
+ }
54
+ return cachedConfig;
55
+ }
56
+ export function resetConfigCache() {
57
+ cachedConfig = null;
58
+ }
59
+ /**
60
+ * セッションデータの保存・読み込み
61
+ */
62
+ function getSessionFilePath(repositoryRoot) {
63
+ const sessionDir = path.join(homedir(), ".config", "gwt", "sessions");
64
+ const repoName = path.basename(repositoryRoot);
65
+ const repoHash = Buffer.from(repositoryRoot)
66
+ .toString("base64")
67
+ .replace(/[/+=]/g, "_");
68
+ return path.join(sessionDir, `${repoName}_${repoHash}.json`);
69
+ }
70
+ export async function saveSession(sessionData) {
71
+ try {
72
+ const sessionPath = getSessionFilePath(sessionData.repositoryRoot);
73
+ const sessionDir = path.dirname(sessionPath);
74
+ // ディレクトリを作成
75
+ await mkdir(sessionDir, { recursive: true });
76
+ await writeFile(sessionPath, JSON.stringify(sessionData, null, 2), "utf-8");
77
+ }
78
+ catch (error) {
79
+ // セッション保存の失敗は致命的ではないため、エラーをログに出力するのみ
80
+ if (process.env.DEBUG_SESSION) {
81
+ console.error("Failed to save session:", error instanceof Error ? error.message : String(error));
82
+ }
83
+ }
84
+ }
85
+ export async function loadSession(repositoryRoot) {
86
+ try {
87
+ const sessionPath = getSessionFilePath(repositoryRoot);
88
+ const content = await readFile(sessionPath, "utf-8");
89
+ const sessionData = JSON.parse(content);
90
+ // セッションが24時間以内のもののみ有効とする
91
+ const now = Date.now();
92
+ const sessionAge = now - sessionData.timestamp;
93
+ const maxAge = 24 * 60 * 60 * 1000; // 24時間
94
+ if (sessionAge > maxAge) {
95
+ return null;
96
+ }
97
+ return sessionData;
98
+ }
99
+ catch (error) {
100
+ if (process.env.DEBUG_SESSION) {
101
+ console.error("Failed to load session:", error instanceof Error ? error.message : String(error));
102
+ }
103
+ return null;
104
+ }
105
+ }
106
+ export async function getAllSessions() {
107
+ try {
108
+ const sessionDir = path.join(homedir(), ".config", "gwt", "sessions");
109
+ const { readdir } = await import("node:fs/promises");
110
+ const files = await readdir(sessionDir);
111
+ const sessions = [];
112
+ const now = Date.now();
113
+ const maxAge = 24 * 60 * 60 * 1000; // 24時間
114
+ for (const file of files) {
115
+ if (!file.endsWith(".json"))
116
+ continue;
117
+ try {
118
+ const filePath = path.join(sessionDir, file);
119
+ const content = await readFile(filePath, "utf-8");
120
+ const sessionData = JSON.parse(content);
121
+ // 有効期限内のセッションのみ
122
+ const sessionAge = now - sessionData.timestamp;
123
+ if (sessionAge <= maxAge) {
124
+ sessions.push(sessionData);
125
+ }
126
+ }
127
+ catch (error) {
128
+ if (process.env.DEBUG_SESSION) {
129
+ console.error(`Failed to load session file ${file}:`, error instanceof Error ? error.message : String(error));
130
+ }
131
+ }
132
+ }
133
+ // 最新のものから順にソート
134
+ sessions.sort((a, b) => b.timestamp - a.timestamp);
135
+ return sessions;
136
+ }
137
+ catch (error) {
138
+ if (process.env.DEBUG_SESSION) {
139
+ console.error("Failed to get all sessions:", error instanceof Error ? error.message : String(error));
140
+ }
141
+ return [];
142
+ }
143
+ }
144
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * カスタムツール設定管理
3
+ *
4
+ * ~/.gwt/tools.jsonから設定を読み込み、
5
+ * ビルトインツールと統合して管理します。
6
+ */
7
+ import type { ToolsConfig, CustomAITool, AIToolConfig } from "../types/tools.js";
8
+ /**
9
+ * ツール設定ファイルのパス
10
+ * 環境変数の優先順位: GWT_HOME > CLAUDE_WORKTREE_HOME (後方互換性) > ホームディレクトリ
11
+ */
12
+ export declare const WORKTREE_HOME: string;
13
+ export declare const CONFIG_DIR: string;
14
+ export declare const TOOLS_CONFIG_PATH: string;
15
+ /**
16
+ * ツール設定を読み込む
17
+ *
18
+ * ~/.gwt/tools.jsonから設定を読み込みます。
19
+ * ファイルが存在しない場合は空配列を返します。
20
+ *
21
+ * @returns ToolsConfig
22
+ * @throws JSON構文エラー時
23
+ */
24
+ export declare function loadToolsConfig(): Promise<ToolsConfig>;
25
+ export declare function saveToolsConfig(config: ToolsConfig): Promise<void>;
26
+ export declare function getSharedEnvironment(): Promise<Record<string, string>>;
27
+ /**
28
+ * IDでツールを検索
29
+ *
30
+ * @param id - ツールID
31
+ * @returns ツール設定(見つからない場合はundefined)
32
+ */
33
+ export declare function getToolById(id: string): Promise<CustomAITool | undefined>;
34
+ /**
35
+ * すべてのツール(ビルトイン+カスタム)を取得
36
+ *
37
+ * @returns AIToolConfigの配列
38
+ */
39
+ export declare function getAllTools(): Promise<AIToolConfig[]>;
40
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/config/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACb,MAAM,mBAAmB,CAAC;AAG3B;;;GAGG;AACH,eAAO,MAAM,aAAa,QAKX,CAAC;AAGhB,eAAO,MAAM,UAAU,QAAmC,CAAC;AAC3D,eAAO,MAAM,iBAAiB,QAAsC,CAAC;AA0CrE;;;;;;;;GAQG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAgC5D;AA2DD,wBAAsB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAcxE;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAG5E;AAsDD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAUnC;AAED;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAsB3D"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * カスタムツール設定管理
3
+ *
4
+ * ~/.gwt/tools.jsonから設定を読み込み、
5
+ * ビルトインツールと統合して管理します。
6
+ */
7
+ import { homedir } from "node:os";
8
+ import path from "node:path";
9
+ import { readFile, writeFile, mkdir, rename, access, cp } from "node:fs/promises";
10
+ import { BUILTIN_TOOLS } from "./builtin-tools.js";
11
+ /**
12
+ * ツール設定ファイルのパス
13
+ * 環境変数の優先順位: GWT_HOME > CLAUDE_WORKTREE_HOME (後方互換性) > ホームディレクトリ
14
+ */
15
+ export const WORKTREE_HOME = (process.env.GWT_HOME && process.env.GWT_HOME.trim().length > 0)
16
+ ? process.env.GWT_HOME
17
+ : (process.env.CLAUDE_WORKTREE_HOME && process.env.CLAUDE_WORKTREE_HOME.trim().length > 0)
18
+ ? process.env.CLAUDE_WORKTREE_HOME
19
+ : homedir();
20
+ const LEGACY_CONFIG_DIR = path.join(homedir(), ".claude-worktree");
21
+ export const CONFIG_DIR = path.join(WORKTREE_HOME, ".gwt");
22
+ export const TOOLS_CONFIG_PATH = path.join(CONFIG_DIR, "tools.json");
23
+ const TEMP_CONFIG_PATH = `${TOOLS_CONFIG_PATH}.tmp`;
24
+ /**
25
+ * レガシー設定ディレクトリから新しいディレクトリへ移行
26
+ */
27
+ async function migrateLegacyConfig() {
28
+ try {
29
+ // 新しいディレクトリが既に存在する場合は移行不要
30
+ try {
31
+ await access(CONFIG_DIR);
32
+ return;
33
+ }
34
+ catch {
35
+ // 新しいディレクトリが存在しない場合は続行
36
+ }
37
+ // レガシーディレクトリの存在を確認
38
+ try {
39
+ await access(LEGACY_CONFIG_DIR);
40
+ }
41
+ catch {
42
+ // レガシーディレクトリも存在しない場合は移行不要
43
+ return;
44
+ }
45
+ // レガシーディレクトリを新しいディレクトリにコピー
46
+ await mkdir(path.dirname(CONFIG_DIR), { recursive: true });
47
+ await cp(LEGACY_CONFIG_DIR, CONFIG_DIR, { recursive: true });
48
+ console.log(`✅ Migrated configuration from ${LEGACY_CONFIG_DIR} to ${CONFIG_DIR}`);
49
+ }
50
+ catch (error) {
51
+ // 移行に失敗しても継続(エラーログのみ)
52
+ if (process.env.DEBUG) {
53
+ console.error("Failed to migrate legacy config:", error);
54
+ }
55
+ }
56
+ }
57
+ const DEFAULT_CONFIG = {
58
+ version: "1.0.0",
59
+ env: {},
60
+ customTools: [],
61
+ };
62
+ /**
63
+ * ツール設定を読み込む
64
+ *
65
+ * ~/.gwt/tools.jsonから設定を読み込みます。
66
+ * ファイルが存在しない場合は空配列を返します。
67
+ *
68
+ * @returns ToolsConfig
69
+ * @throws JSON構文エラー時
70
+ */
71
+ export async function loadToolsConfig() {
72
+ // 最初の呼び出し時にレガシー設定の移行を試行
73
+ await migrateLegacyConfig();
74
+ try {
75
+ const content = await readFile(TOOLS_CONFIG_PATH, "utf-8");
76
+ const config = JSON.parse(content);
77
+ // 検証
78
+ validateToolsConfig(config);
79
+ return {
80
+ ...config,
81
+ env: config.env ?? {},
82
+ };
83
+ }
84
+ catch (error) {
85
+ // ファイルが存在しない場合は空配列を返す
86
+ if (error instanceof Error && "code" in error && error.code === "ENOENT") {
87
+ return { ...DEFAULT_CONFIG };
88
+ }
89
+ // JSON構文エラーの場合
90
+ if (error instanceof SyntaxError) {
91
+ throw new Error(`Failed to parse tools.json: ${error.message}\n` +
92
+ `Please check the JSON syntax in ${TOOLS_CONFIG_PATH}`);
93
+ }
94
+ // その他のエラー
95
+ throw error;
96
+ }
97
+ }
98
+ /**
99
+ * ToolsConfig全体を検証
100
+ *
101
+ * @param config - 検証対象の設定
102
+ * @throws 検証エラー時
103
+ */
104
+ function validateToolsConfig(config) {
105
+ // versionフィールドの検証
106
+ if (!config.version || typeof config.version !== "string") {
107
+ throw new Error("version field is required and must be a string");
108
+ }
109
+ // customToolsフィールドの検証
110
+ if (!Array.isArray(config.customTools)) {
111
+ throw new Error("customTools field must be an array");
112
+ }
113
+ if (config.env && typeof config.env !== "object") {
114
+ throw new Error("env field must be an object map of key/value pairs");
115
+ }
116
+ if (config.env) {
117
+ for (const [key, value] of Object.entries(config.env)) {
118
+ if (!key || typeof key !== "string") {
119
+ throw new Error("env keys must be non-empty strings");
120
+ }
121
+ if (typeof value !== "string") {
122
+ throw new Error(`env value for key "${key}" must be a string`);
123
+ }
124
+ }
125
+ }
126
+ // 各ツールの検証
127
+ const seenIds = new Set();
128
+ for (const tool of config.customTools) {
129
+ validateCustomAITool(tool);
130
+ // ID重複チェック
131
+ if (seenIds.has(tool.id)) {
132
+ throw new Error(`Duplicate tool ID found: "${tool.id}"\n` +
133
+ `Each tool must have a unique ID in ${TOOLS_CONFIG_PATH}`);
134
+ }
135
+ seenIds.add(tool.id);
136
+ // ビルトインツールとのID重複チェック
137
+ const builtinIds = BUILTIN_TOOLS.map((t) => t.id);
138
+ if (builtinIds.includes(tool.id)) {
139
+ throw new Error(`Tool ID "${tool.id}" conflicts with builtin tool\n` +
140
+ `Builtin tool IDs: ${builtinIds.join(", ")}`);
141
+ }
142
+ }
143
+ }
144
+ export async function saveToolsConfig(config) {
145
+ const normalized = {
146
+ version: config.version,
147
+ updatedAt: config.updatedAt ?? new Date().toISOString(),
148
+ env: config.env ?? {},
149
+ customTools: config.customTools,
150
+ };
151
+ validateToolsConfig(normalized);
152
+ await mkdir(CONFIG_DIR, { recursive: true });
153
+ const payload = JSON.stringify(normalized, null, 2);
154
+ await writeFile(TEMP_CONFIG_PATH, payload, { mode: 0o600 });
155
+ await rename(TEMP_CONFIG_PATH, TOOLS_CONFIG_PATH);
156
+ }
157
+ export async function getSharedEnvironment() {
158
+ const config = await loadToolsConfig();
159
+ return { ...(config.env ?? {}) };
160
+ }
161
+ /**
162
+ * CustomAITool単体を検証
163
+ *
164
+ * @param tool - 検証対象のツール
165
+ * @throws 検証エラー時
166
+ */
167
+ function validateCustomAITool(tool) {
168
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
169
+ const t = tool;
170
+ // 必須フィールドの存在チェック
171
+ const requiredFields = ["id", "displayName", "type", "command", "modeArgs"];
172
+ for (const field of requiredFields) {
173
+ if (!t[field]) {
174
+ throw new Error(`Required field "${field}" is missing in tool configuration`);
175
+ }
176
+ }
177
+ // id形式の検証(小文字英数字とハイフンのみ)
178
+ if (!/^[a-z0-9-]+$/.test(t.id)) {
179
+ throw new Error(`Invalid tool ID format: "${t.id}"\n` +
180
+ `Tool ID must contain only lowercase letters, numbers, and hyphens (pattern: ^[a-z0-9-]+$)`);
181
+ }
182
+ // typeフィールドの値検証
183
+ const validTypes = ["path", "bunx", "command"];
184
+ if (!validTypes.includes(t.type)) {
185
+ throw new Error(`Invalid type: "${t.type}"\n` +
186
+ `Type must be one of: ${validTypes.join(", ")}`);
187
+ }
188
+ // type='path'の場合、commandが絶対パスであることを確認
189
+ if (t.type === "path" && !path.isAbsolute(t.command)) {
190
+ throw new Error(`For type="path", command must be an absolute path: "${t.command}"`);
191
+ }
192
+ // modeArgsの検証(少なくとも1つのモードが定義されている)
193
+ if (!t.modeArgs.normal && !t.modeArgs.continue && !t.modeArgs.resume) {
194
+ throw new Error(`modeArgs must define at least one mode (normal, continue, or resume) for tool "${t.id}"`);
195
+ }
196
+ }
197
+ /**
198
+ * IDでツールを検索
199
+ *
200
+ * @param id - ツールID
201
+ * @returns ツール設定(見つからない場合はundefined)
202
+ */
203
+ export async function getToolById(id) {
204
+ // ビルトインツールから検索
205
+ const builtinTool = BUILTIN_TOOLS.find((t) => t.id === id);
206
+ if (builtinTool) {
207
+ return builtinTool;
208
+ }
209
+ // カスタムツールから検索
210
+ const config = await loadToolsConfig();
211
+ return config.customTools.find((t) => t.id === id);
212
+ }
213
+ /**
214
+ * すべてのツール(ビルトイン+カスタム)を取得
215
+ *
216
+ * @returns AIToolConfigの配列
217
+ */
218
+ export async function getAllTools() {
219
+ const config = await loadToolsConfig();
220
+ // ビルトインツールをAIToolConfig形式に変換
221
+ const builtinConfigs = BUILTIN_TOOLS.map((tool) => ({
222
+ id: tool.id,
223
+ displayName: tool.displayName,
224
+ ...(tool.icon ? { icon: tool.icon } : {}),
225
+ isBuiltin: true,
226
+ }));
227
+ // カスタムツールをAIToolConfig形式に変換
228
+ const customConfigs = config.customTools.map((tool) => ({
229
+ id: tool.id,
230
+ displayName: tool.displayName,
231
+ ...(tool.icon ? { icon: tool.icon } : {}),
232
+ isBuiltin: false,
233
+ customConfig: tool,
234
+ }));
235
+ // ビルトイン + カスタム の順で統合
236
+ return [...builtinConfigs, ...customConfigs];
237
+ }
238
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/config/tools.ts"],"names":[],"mappings":"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"}
package/dist/git.d.ts ADDED
@@ -0,0 +1,145 @@
1
+ import { BranchInfo } from "./cli/ui/types.js";
2
+ export declare class GitError extends Error {
3
+ cause?: unknown | undefined;
4
+ constructor(message: string, cause?: unknown | undefined);
5
+ }
6
+ /**
7
+ * 現在のディレクトリがGitリポジトリかどうかを確認
8
+ * Worktree環境でも動作するように、.gitファイルの存在も確認します
9
+ * @returns {Promise<boolean>} Gitリポジトリの場合true
10
+ */
11
+ export declare function isGitRepository(): Promise<boolean>;
12
+ /**
13
+ * Gitリポジトリのルートディレクトリを取得
14
+ * @returns {Promise<string>} リポジトリのルートパス
15
+ * @throws {GitError} リポジトリルートの取得に失敗した場合
16
+ */
17
+ export declare function getRepositoryRoot(): Promise<string>;
18
+ /**
19
+ * 現在の作業ツリー(root branch か worktree かを問わず)のルートディレクトリを取得
20
+ * @returns {Promise<string>} カレントWorktreeのルートパス
21
+ * @throws {GitError} 取得に失敗した場合
22
+ */
23
+ export declare function getWorktreeRoot(): Promise<string>;
24
+ export declare function getCurrentBranch(): Promise<string | null>;
25
+ export declare function getLocalBranches(): Promise<BranchInfo[]>;
26
+ export declare function getRemoteBranches(): Promise<BranchInfo[]>;
27
+ /**
28
+ * ローカルとリモートのすべてのブランチ情報を取得
29
+ * @returns {Promise<BranchInfo[]>} ブランチ情報の配列
30
+ */
31
+ export declare function getAllBranches(): Promise<BranchInfo[]>;
32
+ export declare function createBranch(branchName: string, baseBranch?: string): Promise<void>;
33
+ export declare function branchExists(branchName: string): Promise<boolean>;
34
+ export declare function deleteBranch(branchName: string, force?: boolean): Promise<void>;
35
+ export declare function hasUncommittedChanges(worktreePath: string): Promise<boolean>;
36
+ export declare function getChangedFilesCount(worktreePath: string): Promise<number>;
37
+ export declare function showStatus(worktreePath: string): Promise<string>;
38
+ export declare function stashChanges(worktreePath: string, message?: string): Promise<void>;
39
+ export declare function discardAllChanges(worktreePath: string): Promise<void>;
40
+ export declare function commitChanges(worktreePath: string, message: string): Promise<void>;
41
+ export declare function hasUnpushedCommits(worktreePath: string, branch: string): Promise<boolean>;
42
+ export declare function hasUnpushedCommitsInRepo(branch: string, repoRoot?: string): Promise<boolean>;
43
+ export declare function branchHasUniqueCommitsComparedToBase(branch: string, baseBranch: string, repoRoot?: string): Promise<boolean>;
44
+ /**
45
+ * Get the latest commit message for a specific branch in a worktree
46
+ */
47
+ export declare function getLatestCommitMessage(worktreePath: string, branch: string): Promise<string | null>;
48
+ /**
49
+ * Get the count of unpushed commits
50
+ */
51
+ export declare function getUnpushedCommitsCount(worktreePath: string, branch: string): Promise<number>;
52
+ /**
53
+ * Get the count of uncommitted changes (staged + unstaged)
54
+ */
55
+ export declare function getUncommittedChangesCount(worktreePath: string): Promise<number>;
56
+ /**
57
+ * Enhanced session information for better display
58
+ */
59
+ export interface EnhancedSessionInfo {
60
+ hasUncommittedChanges: boolean;
61
+ uncommittedChangesCount: number;
62
+ hasUnpushedCommits: boolean;
63
+ unpushedCommitsCount: number;
64
+ latestCommitMessage: string | null;
65
+ branchType: "feature" | "bugfix" | "hotfix" | "develop" | "main" | "master" | "other";
66
+ }
67
+ /**
68
+ * Get enhanced session information for display
69
+ */
70
+ export declare function getEnhancedSessionInfo(worktreePath: string, branch: string): Promise<EnhancedSessionInfo>;
71
+ export declare function fetchAllRemotes(options?: {
72
+ cwd?: string;
73
+ }): Promise<void>;
74
+ export declare function getCurrentVersion(repoRoot: string): Promise<string>;
75
+ export declare function calculateNewVersion(currentVersion: string, versionBump: "patch" | "minor" | "major"): string;
76
+ export declare function executeNpmVersionInWorktree(worktreePath: string, newVersion: string): Promise<void>;
77
+ export declare function deleteRemoteBranch(branchName: string, remote?: string): Promise<void>;
78
+ export declare function getCurrentBranchName(worktreePath: string): Promise<string>;
79
+ export declare function pushBranchToRemote(worktreePath: string, branchName: string, remote?: string): Promise<void>;
80
+ export declare function checkRemoteBranchExists(branchName: string, remote?: string, options?: {
81
+ cwd?: string;
82
+ }): Promise<boolean>;
83
+ /**
84
+ * 現在のディレクトリがworktreeディレクトリかどうかを確認
85
+ * @returns {Promise<boolean>} worktreeディレクトリの場合true
86
+ */
87
+ export declare function isInWorktree(): Promise<boolean>;
88
+ /**
89
+ * .gitignoreファイルに指定されたエントリーが存在することを保証します
90
+ * エントリーが既に存在する場合は何もしません
91
+ * @param {string} repoRoot - リポジトリのルートディレクトリ
92
+ * @param {string} entry - 追加するエントリー(例: ".worktrees/")
93
+ * @throws {GitError} ファイルの読み書きに失敗した場合
94
+ */
95
+ /**
96
+ * Merge from source branch to current branch in worktree
97
+ * @param worktreePath - Path to worktree directory
98
+ * @param sourceBranch - Source branch to merge from
99
+ * @param dryRun - If true, use --no-commit flag for dry-run mode
100
+ * @see specs/SPEC-ee33ca26/research.md - Decision 3: Dry-run implementation
101
+ */
102
+ export declare function mergeFromBranch(worktreePath: string, sourceBranch: string, dryRun?: boolean): Promise<void>;
103
+ /**
104
+ * Check if there is a merge in progress in worktree
105
+ * @param worktreePath - Path to worktree directory
106
+ * @returns true if MERGE_HEAD exists (merge in progress)
107
+ * @see specs/SPEC-ee33ca26/research.md - Best practices: Git state confirmation
108
+ */
109
+ export declare function hasMergeConflict(worktreePath: string): Promise<boolean>;
110
+ /**
111
+ * Abort current merge operation in worktree
112
+ * @param worktreePath - Path to worktree directory
113
+ * @see specs/SPEC-ee33ca26/research.md - Decision 3: Dry-run rollback
114
+ */
115
+ export declare function abortMerge(worktreePath: string): Promise<void>;
116
+ /**
117
+ * Get current merge status in worktree
118
+ * @param worktreePath - Path to worktree directory
119
+ * @returns Object with inProgress and hasConflict flags
120
+ * @see specs/SPEC-ee33ca26/research.md - Best practices: Git state confirmation
121
+ */
122
+ export declare function getMergeStatus(worktreePath: string): Promise<{
123
+ inProgress: boolean;
124
+ hasConflict: boolean;
125
+ }>;
126
+ /**
127
+ * Reset worktree to HEAD (rollback all changes)
128
+ * Used for dry-run cleanup after git merge --no-commit
129
+ * @param worktreePath - Path to worktree directory
130
+ * @see specs/SPEC-ee33ca26/research.md - Dry-run implementation: --no-commit + rollback
131
+ */
132
+ export declare function resetToHead(worktreePath: string): Promise<void>;
133
+ export interface BranchDivergenceStatus {
134
+ branch: string;
135
+ remoteAhead: number;
136
+ localAhead: number;
137
+ }
138
+ export declare function getBranchDivergenceStatuses(options?: {
139
+ cwd?: string;
140
+ remote?: string;
141
+ branches?: string[];
142
+ }): Promise<BranchDivergenceStatus[]>;
143
+ export declare function pullFastForward(worktreePath: string, remote?: string): Promise<void>;
144
+ export declare function ensureGitignoreEntry(repoRoot: string, entry: string): Promise<void>;
145
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}