@akiojin/gwt 4.12.1 → 6.0.0

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 (860) hide show
  1. package/README.ja.md +173 -203
  2. package/README.md +170 -212
  3. package/bin/gwt +0 -0
  4. package/bin/gwt.js +42 -33
  5. package/package.json +20 -107
  6. package/scripts/postinstall.js +152 -0
  7. package/dist/claude-history.d.ts +0 -60
  8. package/dist/claude-history.d.ts.map +0 -1
  9. package/dist/claude-history.js +0 -606
  10. package/dist/claude-history.js.map +0 -1
  11. package/dist/claude.d.ts +0 -42
  12. package/dist/claude.d.ts.map +0 -1
  13. package/dist/claude.js +0 -429
  14. package/dist/claude.js.map +0 -1
  15. package/dist/cli/ui/App.solid.d.ts +0 -29
  16. package/dist/cli/ui/App.solid.d.ts.map +0 -1
  17. package/dist/cli/ui/App.solid.js +0 -1427
  18. package/dist/cli/ui/App.solid.js.map +0 -1
  19. package/dist/cli/ui/components/solid/Footer.d.ts +0 -10
  20. package/dist/cli/ui/components/solid/Footer.d.ts.map +0 -1
  21. package/dist/cli/ui/components/solid/Footer.js +0 -10
  22. package/dist/cli/ui/components/solid/Footer.js.map +0 -1
  23. package/dist/cli/ui/components/solid/Header.d.ts +0 -32
  24. package/dist/cli/ui/components/solid/Header.d.ts.map +0 -1
  25. package/dist/cli/ui/components/solid/Header.js +0 -13
  26. package/dist/cli/ui/components/solid/Header.js.map +0 -1
  27. package/dist/cli/ui/components/solid/HelpOverlay.d.ts +0 -8
  28. package/dist/cli/ui/components/solid/HelpOverlay.d.ts.map +0 -1
  29. package/dist/cli/ui/components/solid/HelpOverlay.js +0 -118
  30. package/dist/cli/ui/components/solid/HelpOverlay.js.map +0 -1
  31. package/dist/cli/ui/components/solid/QuickStartStep.d.ts +0 -17
  32. package/dist/cli/ui/components/solid/QuickStartStep.d.ts.map +0 -1
  33. package/dist/cli/ui/components/solid/QuickStartStep.js +0 -152
  34. package/dist/cli/ui/components/solid/QuickStartStep.js.map +0 -1
  35. package/dist/cli/ui/components/solid/SelectInput.d.ts +0 -22
  36. package/dist/cli/ui/components/solid/SelectInput.d.ts.map +0 -1
  37. package/dist/cli/ui/components/solid/SelectInput.js +0 -45
  38. package/dist/cli/ui/components/solid/SelectInput.js.map +0 -1
  39. package/dist/cli/ui/components/solid/TextInput.d.ts +0 -12
  40. package/dist/cli/ui/components/solid/TextInput.d.ts.map +0 -1
  41. package/dist/cli/ui/components/solid/TextInput.js +0 -9
  42. package/dist/cli/ui/components/solid/TextInput.js.map +0 -1
  43. package/dist/cli/ui/components/solid/WizardController.d.ts +0 -34
  44. package/dist/cli/ui/components/solid/WizardController.d.ts.map +0 -1
  45. package/dist/cli/ui/components/solid/WizardController.js +0 -269
  46. package/dist/cli/ui/components/solid/WizardController.js.map +0 -1
  47. package/dist/cli/ui/components/solid/WizardPopup.d.ts +0 -26
  48. package/dist/cli/ui/components/solid/WizardPopup.d.ts.map +0 -1
  49. package/dist/cli/ui/components/solid/WizardPopup.js +0 -68
  50. package/dist/cli/ui/components/solid/WizardPopup.js.map +0 -1
  51. package/dist/cli/ui/components/solid/WizardSteps.d.ts +0 -57
  52. package/dist/cli/ui/components/solid/WizardSteps.d.ts.map +0 -1
  53. package/dist/cli/ui/components/solid/WizardSteps.js +0 -442
  54. package/dist/cli/ui/components/solid/WizardSteps.js.map +0 -1
  55. package/dist/cli/ui/core/index.d.ts +0 -12
  56. package/dist/cli/ui/core/index.d.ts.map +0 -1
  57. package/dist/cli/ui/core/index.js +0 -15
  58. package/dist/cli/ui/core/index.js.map +0 -1
  59. package/dist/cli/ui/core/keybindings.d.ts +0 -106
  60. package/dist/cli/ui/core/keybindings.d.ts.map +0 -1
  61. package/dist/cli/ui/core/keybindings.js +0 -270
  62. package/dist/cli/ui/core/keybindings.js.map +0 -1
  63. package/dist/cli/ui/core/theme.d.ts +0 -123
  64. package/dist/cli/ui/core/theme.d.ts.map +0 -1
  65. package/dist/cli/ui/core/theme.js +0 -191
  66. package/dist/cli/ui/core/theme.js.map +0 -1
  67. package/dist/cli/ui/core/types.d.ts +0 -156
  68. package/dist/cli/ui/core/types.d.ts.map +0 -1
  69. package/dist/cli/ui/core/types.js +0 -10
  70. package/dist/cli/ui/core/types.js.map +0 -1
  71. package/dist/cli/ui/hooks/solid/useScrollableList.d.ts +0 -26
  72. package/dist/cli/ui/hooks/solid/useScrollableList.d.ts.map +0 -1
  73. package/dist/cli/ui/hooks/solid/useScrollableList.js +0 -89
  74. package/dist/cli/ui/hooks/solid/useScrollableList.js.map +0 -1
  75. package/dist/cli/ui/hooks/solid/useTerminalSize.d.ts +0 -10
  76. package/dist/cli/ui/hooks/solid/useTerminalSize.d.ts.map +0 -1
  77. package/dist/cli/ui/hooks/solid/useTerminalSize.js +0 -16
  78. package/dist/cli/ui/hooks/solid/useTerminalSize.js.map +0 -1
  79. package/dist/cli/ui/index.solid.d.ts +0 -5
  80. package/dist/cli/ui/index.solid.d.ts.map +0 -1
  81. package/dist/cli/ui/index.solid.js +0 -21
  82. package/dist/cli/ui/index.solid.js.map +0 -1
  83. package/dist/cli/ui/screens/solid/BranchListScreen.d.ts +0 -53
  84. package/dist/cli/ui/screens/solid/BranchListScreen.d.ts.map +0 -1
  85. package/dist/cli/ui/screens/solid/BranchListScreen.js +0 -829
  86. package/dist/cli/ui/screens/solid/BranchListScreen.js.map +0 -1
  87. package/dist/cli/ui/screens/solid/ConfirmScreen.d.ts +0 -11
  88. package/dist/cli/ui/screens/solid/ConfirmScreen.d.ts.map +0 -1
  89. package/dist/cli/ui/screens/solid/ConfirmScreen.js +0 -45
  90. package/dist/cli/ui/screens/solid/ConfirmScreen.js.map +0 -1
  91. package/dist/cli/ui/screens/solid/EnvironmentScreen.d.ts +0 -14
  92. package/dist/cli/ui/screens/solid/EnvironmentScreen.d.ts.map +0 -1
  93. package/dist/cli/ui/screens/solid/EnvironmentScreen.js +0 -90
  94. package/dist/cli/ui/screens/solid/EnvironmentScreen.js.map +0 -1
  95. package/dist/cli/ui/screens/solid/ErrorScreen.d.ts +0 -8
  96. package/dist/cli/ui/screens/solid/ErrorScreen.d.ts.map +0 -1
  97. package/dist/cli/ui/screens/solid/ErrorScreen.js +0 -18
  98. package/dist/cli/ui/screens/solid/ErrorScreen.js.map +0 -1
  99. package/dist/cli/ui/screens/solid/InputScreen.d.ts +0 -13
  100. package/dist/cli/ui/screens/solid/InputScreen.d.ts.map +0 -1
  101. package/dist/cli/ui/screens/solid/InputScreen.js +0 -17
  102. package/dist/cli/ui/screens/solid/InputScreen.js.map +0 -1
  103. package/dist/cli/ui/screens/solid/LoadingIndicator.d.ts +0 -9
  104. package/dist/cli/ui/screens/solid/LoadingIndicator.d.ts.map +0 -1
  105. package/dist/cli/ui/screens/solid/LoadingIndicator.js +0 -43
  106. package/dist/cli/ui/screens/solid/LoadingIndicator.js.map +0 -1
  107. package/dist/cli/ui/screens/solid/LogDetailScreen.d.ts +0 -14
  108. package/dist/cli/ui/screens/solid/LogDetailScreen.d.ts.map +0 -1
  109. package/dist/cli/ui/screens/solid/LogDetailScreen.js +0 -34
  110. package/dist/cli/ui/screens/solid/LogDetailScreen.js.map +0 -1
  111. package/dist/cli/ui/screens/solid/LogScreen.d.ts +0 -25
  112. package/dist/cli/ui/screens/solid/LogScreen.d.ts.map +0 -1
  113. package/dist/cli/ui/screens/solid/LogScreen.js +0 -333
  114. package/dist/cli/ui/screens/solid/LogScreen.js.map +0 -1
  115. package/dist/cli/ui/screens/solid/ProfileEnvScreen.d.ts +0 -17
  116. package/dist/cli/ui/screens/solid/ProfileEnvScreen.d.ts.map +0 -1
  117. package/dist/cli/ui/screens/solid/ProfileEnvScreen.js +0 -115
  118. package/dist/cli/ui/screens/solid/ProfileEnvScreen.js.map +0 -1
  119. package/dist/cli/ui/screens/solid/ProfileScreen.d.ts +0 -17
  120. package/dist/cli/ui/screens/solid/ProfileScreen.d.ts.map +0 -1
  121. package/dist/cli/ui/screens/solid/ProfileScreen.js +0 -50
  122. package/dist/cli/ui/screens/solid/ProfileScreen.js.map +0 -1
  123. package/dist/cli/ui/screens/solid/SelectorScreen.d.ts +0 -20
  124. package/dist/cli/ui/screens/solid/SelectorScreen.d.ts.map +0 -1
  125. package/dist/cli/ui/screens/solid/SelectorScreen.js +0 -98
  126. package/dist/cli/ui/screens/solid/SelectorScreen.js.map +0 -1
  127. package/dist/cli/ui/screens/solid/WorktreeCreateScreen.d.ts +0 -13
  128. package/dist/cli/ui/screens/solid/WorktreeCreateScreen.d.ts.map +0 -1
  129. package/dist/cli/ui/screens/solid/WorktreeCreateScreen.js +0 -59
  130. package/dist/cli/ui/screens/solid/WorktreeCreateScreen.js.map +0 -1
  131. package/dist/cli/ui/stores/appStore.d.ts +0 -143
  132. package/dist/cli/ui/stores/appStore.d.ts.map +0 -1
  133. package/dist/cli/ui/stores/appStore.js +0 -158
  134. package/dist/cli/ui/stores/appStore.js.map +0 -1
  135. package/dist/cli/ui/stores/branchStore.d.ts +0 -159
  136. package/dist/cli/ui/stores/branchStore.d.ts.map +0 -1
  137. package/dist/cli/ui/stores/branchStore.js +0 -275
  138. package/dist/cli/ui/stores/branchStore.js.map +0 -1
  139. package/dist/cli/ui/stores/index.d.ts +0 -11
  140. package/dist/cli/ui/stores/index.d.ts.map +0 -1
  141. package/dist/cli/ui/stores/index.js +0 -14
  142. package/dist/cli/ui/stores/index.js.map +0 -1
  143. package/dist/cli/ui/stores/uiStore.d.ts +0 -146
  144. package/dist/cli/ui/stores/uiStore.d.ts.map +0 -1
  145. package/dist/cli/ui/stores/uiStore.js +0 -166
  146. package/dist/cli/ui/stores/uiStore.js.map +0 -1
  147. package/dist/cli/ui/types.d.ts +0 -293
  148. package/dist/cli/ui/types.d.ts.map +0 -1
  149. package/dist/cli/ui/types.js +0 -2
  150. package/dist/cli/ui/types.js.map +0 -1
  151. package/dist/cli/ui/utils/baseBranch.d.ts +0 -4
  152. package/dist/cli/ui/utils/baseBranch.d.ts.map +0 -1
  153. package/dist/cli/ui/utils/baseBranch.js +0 -17
  154. package/dist/cli/ui/utils/baseBranch.js.map +0 -1
  155. package/dist/cli/ui/utils/branchFormatter.d.ts +0 -19
  156. package/dist/cli/ui/utils/branchFormatter.d.ts.map +0 -1
  157. package/dist/cli/ui/utils/branchFormatter.js +0 -199
  158. package/dist/cli/ui/utils/branchFormatter.js.map +0 -1
  159. package/dist/cli/ui/utils/clipboard.d.ts +0 -7
  160. package/dist/cli/ui/utils/clipboard.d.ts.map +0 -1
  161. package/dist/cli/ui/utils/clipboard.js +0 -21
  162. package/dist/cli/ui/utils/clipboard.js.map +0 -1
  163. package/dist/cli/ui/utils/continueSession.d.ts +0 -36
  164. package/dist/cli/ui/utils/continueSession.d.ts.map +0 -1
  165. package/dist/cli/ui/utils/continueSession.js +0 -155
  166. package/dist/cli/ui/utils/continueSession.js.map +0 -1
  167. package/dist/cli/ui/utils/installedVersionCache.d.ts +0 -33
  168. package/dist/cli/ui/utils/installedVersionCache.d.ts.map +0 -1
  169. package/dist/cli/ui/utils/installedVersionCache.js +0 -59
  170. package/dist/cli/ui/utils/installedVersionCache.js.map +0 -1
  171. package/dist/cli/ui/utils/modelOptions.d.ts +0 -10
  172. package/dist/cli/ui/utils/modelOptions.d.ts.map +0 -1
  173. package/dist/cli/ui/utils/modelOptions.js +0 -155
  174. package/dist/cli/ui/utils/modelOptions.js.map +0 -1
  175. package/dist/cli/ui/utils/statisticsCalculator.d.ts +0 -9
  176. package/dist/cli/ui/utils/statisticsCalculator.d.ts.map +0 -1
  177. package/dist/cli/ui/utils/statisticsCalculator.js +0 -37
  178. package/dist/cli/ui/utils/statisticsCalculator.js.map +0 -1
  179. package/dist/cli/ui/utils/versionCache.d.ts +0 -37
  180. package/dist/cli/ui/utils/versionCache.d.ts.map +0 -1
  181. package/dist/cli/ui/utils/versionCache.js +0 -70
  182. package/dist/cli/ui/utils/versionCache.js.map +0 -1
  183. package/dist/cli/ui/utils/versionFetcher.d.ts +0 -41
  184. package/dist/cli/ui/utils/versionFetcher.d.ts.map +0 -1
  185. package/dist/cli/ui/utils/versionFetcher.js +0 -89
  186. package/dist/cli/ui/utils/versionFetcher.js.map +0 -1
  187. package/dist/client/assets/index-BbfV7Wuj.css +0 -1
  188. package/dist/client/assets/index-CoAyq5x1.js +0 -78
  189. package/dist/client/index.html +0 -13
  190. package/dist/codex.d.ts +0 -55
  191. package/dist/codex.d.ts.map +0 -1
  192. package/dist/codex.js +0 -329
  193. package/dist/codex.js.map +0 -1
  194. package/dist/config/builtin-coding-agents.d.ts +0 -27
  195. package/dist/config/builtin-coding-agents.d.ts.map +0 -1
  196. package/dist/config/builtin-coding-agents.js +0 -78
  197. package/dist/config/builtin-coding-agents.js.map +0 -1
  198. package/dist/config/constants.d.ts +0 -76
  199. package/dist/config/constants.d.ts.map +0 -1
  200. package/dist/config/constants.js +0 -92
  201. package/dist/config/constants.js.map +0 -1
  202. package/dist/config/env-history.d.ts +0 -4
  203. package/dist/config/env-history.d.ts.map +0 -1
  204. package/dist/config/env-history.js +0 -34
  205. package/dist/config/env-history.js.map +0 -1
  206. package/dist/config/index.d.ts +0 -51
  207. package/dist/config/index.d.ts.map +0 -1
  208. package/dist/config/index.js +0 -225
  209. package/dist/config/index.js.map +0 -1
  210. package/dist/config/profiles.d.ts +0 -94
  211. package/dist/config/profiles.d.ts.map +0 -1
  212. package/dist/config/profiles.js +0 -284
  213. package/dist/config/profiles.js.map +0 -1
  214. package/dist/config/shared-env.d.ts +0 -41
  215. package/dist/config/shared-env.d.ts.map +0 -1
  216. package/dist/config/shared-env.js +0 -114
  217. package/dist/config/shared-env.js.map +0 -1
  218. package/dist/config/tools.d.ts +0 -50
  219. package/dist/config/tools.d.ts.map +0 -1
  220. package/dist/config/tools.js +0 -239
  221. package/dist/config/tools.js.map +0 -1
  222. package/dist/gemini.d.ts +0 -35
  223. package/dist/gemini.d.ts.map +0 -1
  224. package/dist/gemini.js +0 -299
  225. package/dist/gemini.js.map +0 -1
  226. package/dist/git.d.ts +0 -154
  227. package/dist/git.d.ts.map +0 -1
  228. package/dist/git.js +0 -1012
  229. package/dist/git.js.map +0 -1
  230. package/dist/github.d.ts +0 -14
  231. package/dist/github.d.ts.map +0 -1
  232. package/dist/github.js +0 -123
  233. package/dist/github.js.map +0 -1
  234. package/dist/index.d.ts +0 -16
  235. package/dist/index.d.ts.map +0 -1
  236. package/dist/index.js +0 -782
  237. package/dist/index.js.map +0 -1
  238. package/dist/launcher.d.ts +0 -30
  239. package/dist/launcher.d.ts.map +0 -1
  240. package/dist/launcher.js +0 -185
  241. package/dist/launcher.js.map +0 -1
  242. package/dist/logging/agentOutput.d.ts +0 -21
  243. package/dist/logging/agentOutput.d.ts.map +0 -1
  244. package/dist/logging/agentOutput.js +0 -164
  245. package/dist/logging/agentOutput.js.map +0 -1
  246. package/dist/logging/formatter.d.ts +0 -15
  247. package/dist/logging/formatter.d.ts.map +0 -1
  248. package/dist/logging/formatter.js +0 -95
  249. package/dist/logging/formatter.js.map +0 -1
  250. package/dist/logging/logger.d.ts +0 -24
  251. package/dist/logging/logger.d.ts.map +0 -1
  252. package/dist/logging/logger.js +0 -79
  253. package/dist/logging/logger.js.map +0 -1
  254. package/dist/logging/reader.d.ts +0 -34
  255. package/dist/logging/reader.d.ts.map +0 -1
  256. package/dist/logging/reader.js +0 -178
  257. package/dist/logging/reader.js.map +0 -1
  258. package/dist/logging/rotation.d.ts +0 -6
  259. package/dist/logging/rotation.d.ts.map +0 -1
  260. package/dist/logging/rotation.js +0 -26
  261. package/dist/logging/rotation.js.map +0 -1
  262. package/dist/opentui/highlights-eq9cgrbb.scm +0 -604
  263. package/dist/opentui/highlights-ghv9g403.scm +0 -205
  264. package/dist/opentui/highlights-hk7bwhj4.scm +0 -284
  265. package/dist/opentui/highlights-r812a2qc.scm +0 -150
  266. package/dist/opentui/highlights-x6tmsnaa.scm +0 -115
  267. package/dist/opentui/index.solid.d.ts +0 -2
  268. package/dist/opentui/index.solid.d.ts.map +0 -1
  269. package/dist/opentui/index.solid.js +0 -53721
  270. package/dist/opentui/index.solid.js.map +0 -1
  271. package/dist/opentui/injections-73j83es3.scm +0 -27
  272. package/dist/opentui/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
  273. package/dist/opentui/tree-sitter-markdown-411r6y9b.wasm +0 -0
  274. package/dist/opentui/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
  275. package/dist/opentui/tree-sitter-typescript-zxjzwt75.wasm +0 -0
  276. package/dist/opentui/tree-sitter-zig-e78zbjpm.wasm +0 -0
  277. package/dist/repositories/git.repository.d.ts +0 -38
  278. package/dist/repositories/git.repository.d.ts.map +0 -1
  279. package/dist/repositories/git.repository.js +0 -117
  280. package/dist/repositories/git.repository.js.map +0 -1
  281. package/dist/repositories/github.repository.d.ts +0 -16
  282. package/dist/repositories/github.repository.d.ts.map +0 -1
  283. package/dist/repositories/github.repository.js +0 -61
  284. package/dist/repositories/github.repository.js.map +0 -1
  285. package/dist/repositories/worktree.repository.d.ts +0 -19
  286. package/dist/repositories/worktree.repository.d.ts.map +0 -1
  287. package/dist/repositories/worktree.repository.js +0 -64
  288. package/dist/repositories/worktree.repository.js.map +0 -1
  289. package/dist/services/BatchMergeService.d.ts +0 -45
  290. package/dist/services/BatchMergeService.d.ts.map +0 -1
  291. package/dist/services/BatchMergeService.js +0 -197
  292. package/dist/services/BatchMergeService.js.map +0 -1
  293. package/dist/services/WorktreeOrchestrator.d.ts +0 -37
  294. package/dist/services/WorktreeOrchestrator.d.ts.map +0 -1
  295. package/dist/services/WorktreeOrchestrator.js +0 -74
  296. package/dist/services/WorktreeOrchestrator.js.map +0 -1
  297. package/dist/services/codingAgentCommandResolver.d.ts +0 -10
  298. package/dist/services/codingAgentCommandResolver.d.ts.map +0 -1
  299. package/dist/services/codingAgentCommandResolver.js +0 -81
  300. package/dist/services/codingAgentCommandResolver.js.map +0 -1
  301. package/dist/services/codingAgentResolver.d.ts +0 -43
  302. package/dist/services/codingAgentResolver.d.ts.map +0 -1
  303. package/dist/services/codingAgentResolver.js +0 -269
  304. package/dist/services/codingAgentResolver.js.map +0 -1
  305. package/dist/services/dependency-installer.d.ts +0 -26
  306. package/dist/services/dependency-installer.d.ts.map +0 -1
  307. package/dist/services/dependency-installer.js +0 -134
  308. package/dist/services/dependency-installer.js.map +0 -1
  309. package/dist/services/git.service.d.ts +0 -27
  310. package/dist/services/git.service.d.ts.map +0 -1
  311. package/dist/services/git.service.js +0 -97
  312. package/dist/services/git.service.js.map +0 -1
  313. package/dist/services/github.service.d.ts +0 -14
  314. package/dist/services/github.service.d.ts.map +0 -1
  315. package/dist/services/github.service.js +0 -52
  316. package/dist/services/github.service.js.map +0 -1
  317. package/dist/services/worktree.service.d.ts +0 -20
  318. package/dist/services/worktree.service.d.ts.map +0 -1
  319. package/dist/services/worktree.service.js +0 -52
  320. package/dist/services/worktree.service.js.map +0 -1
  321. package/dist/shared/codingAgentConstants.d.ts +0 -12
  322. package/dist/shared/codingAgentConstants.d.ts.map +0 -1
  323. package/dist/shared/codingAgentConstants.js +0 -95
  324. package/dist/shared/codingAgentConstants.js.map +0 -1
  325. package/dist/types/api.d.ts +0 -225
  326. package/dist/types/api.d.ts.map +0 -1
  327. package/dist/types/api.js +0 -8
  328. package/dist/types/api.js.map +0 -1
  329. package/dist/types/coding-agent.d.ts +0 -62
  330. package/dist/types/coding-agent.d.ts.map +0 -1
  331. package/dist/types/coding-agent.js +0 -29
  332. package/dist/types/coding-agent.js.map +0 -1
  333. package/dist/types/profiles.d.ts +0 -54
  334. package/dist/types/profiles.d.ts.map +0 -1
  335. package/dist/types/profiles.js +0 -33
  336. package/dist/types/profiles.js.map +0 -1
  337. package/dist/types/tools.d.ts +0 -230
  338. package/dist/types/tools.d.ts.map +0 -1
  339. package/dist/types/tools.js +0 -8
  340. package/dist/types/tools.js.map +0 -1
  341. package/dist/utils/bun-runtime.d.ts +0 -12
  342. package/dist/utils/bun-runtime.d.ts.map +0 -1
  343. package/dist/utils/bun-runtime.js +0 -13
  344. package/dist/utils/bun-runtime.js.map +0 -1
  345. package/dist/utils/coding-agent-colors.d.ts +0 -88
  346. package/dist/utils/coding-agent-colors.d.ts.map +0 -1
  347. package/dist/utils/coding-agent-colors.js +0 -137
  348. package/dist/utils/coding-agent-colors.js.map +0 -1
  349. package/dist/utils/command.d.ts +0 -62
  350. package/dist/utils/command.d.ts.map +0 -1
  351. package/dist/utils/command.js +0 -186
  352. package/dist/utils/command.js.map +0 -1
  353. package/dist/utils/error-utils.d.ts +0 -27
  354. package/dist/utils/error-utils.d.ts.map +0 -1
  355. package/dist/utils/error-utils.js +0 -98
  356. package/dist/utils/error-utils.js.map +0 -1
  357. package/dist/utils/npmRegistry.d.ts +0 -61
  358. package/dist/utils/npmRegistry.d.ts.map +0 -1
  359. package/dist/utils/npmRegistry.js +0 -180
  360. package/dist/utils/npmRegistry.js.map +0 -1
  361. package/dist/utils/prompt.d.ts +0 -18
  362. package/dist/utils/prompt.d.ts.map +0 -1
  363. package/dist/utils/prompt.js +0 -107
  364. package/dist/utils/prompt.js.map +0 -1
  365. package/dist/utils/session/common.d.ts +0 -108
  366. package/dist/utils/session/common.d.ts.map +0 -1
  367. package/dist/utils/session/common.js +0 -439
  368. package/dist/utils/session/common.js.map +0 -1
  369. package/dist/utils/session/index.d.ts +0 -16
  370. package/dist/utils/session/index.d.ts.map +0 -1
  371. package/dist/utils/session/index.js +0 -20
  372. package/dist/utils/session/index.js.map +0 -1
  373. package/dist/utils/session/parsers/claude.d.ts +0 -62
  374. package/dist/utils/session/parsers/claude.d.ts.map +0 -1
  375. package/dist/utils/session/parsers/claude.js +0 -224
  376. package/dist/utils/session/parsers/claude.js.map +0 -1
  377. package/dist/utils/session/parsers/codex.d.ts +0 -37
  378. package/dist/utils/session/parsers/codex.d.ts.map +0 -1
  379. package/dist/utils/session/parsers/codex.js +0 -139
  380. package/dist/utils/session/parsers/codex.js.map +0 -1
  381. package/dist/utils/session/parsers/gemini.d.ts +0 -22
  382. package/dist/utils/session/parsers/gemini.d.ts.map +0 -1
  383. package/dist/utils/session/parsers/gemini.js +0 -118
  384. package/dist/utils/session/parsers/gemini.js.map +0 -1
  385. package/dist/utils/session/parsers/index.d.ts +0 -8
  386. package/dist/utils/session/parsers/index.d.ts.map +0 -1
  387. package/dist/utils/session/parsers/index.js +0 -12
  388. package/dist/utils/session/parsers/index.js.map +0 -1
  389. package/dist/utils/session/parsers/opencode.d.ts +0 -23
  390. package/dist/utils/session/parsers/opencode.d.ts.map +0 -1
  391. package/dist/utils/session/parsers/opencode.js +0 -126
  392. package/dist/utils/session/parsers/opencode.js.map +0 -1
  393. package/dist/utils/session/types.d.ts +0 -49
  394. package/dist/utils/session/types.d.ts.map +0 -1
  395. package/dist/utils/session/types.js +0 -5
  396. package/dist/utils/session/types.js.map +0 -1
  397. package/dist/utils/session.d.ts +0 -16
  398. package/dist/utils/session.d.ts.map +0 -1
  399. package/dist/utils/session.js +0 -16
  400. package/dist/utils/session.js.map +0 -1
  401. package/dist/utils/spinner.d.ts +0 -6
  402. package/dist/utils/spinner.d.ts.map +0 -1
  403. package/dist/utils/spinner.js +0 -47
  404. package/dist/utils/spinner.js.map +0 -1
  405. package/dist/utils/terminal.d.ts +0 -64
  406. package/dist/utils/terminal.d.ts.map +0 -1
  407. package/dist/utils/terminal.js +0 -270
  408. package/dist/utils/terminal.js.map +0 -1
  409. package/dist/utils/webui.d.ts +0 -8
  410. package/dist/utils/webui.d.ts.map +0 -1
  411. package/dist/utils/webui.js +0 -35
  412. package/dist/utils/webui.js.map +0 -1
  413. package/dist/utils.d.ts +0 -18
  414. package/dist/utils.d.ts.map +0 -1
  415. package/dist/utils.js +0 -79
  416. package/dist/utils.js.map +0 -1
  417. package/dist/web/client/src/components/BranchGraph.d.ts +0 -13
  418. package/dist/web/client/src/components/BranchGraph.d.ts.map +0 -1
  419. package/dist/web/client/src/components/BranchGraph.js +0 -49
  420. package/dist/web/client/src/components/BranchGraph.js.map +0 -1
  421. package/dist/web/client/src/components/CodingAgentLaunchModal.d.ts +0 -9
  422. package/dist/web/client/src/components/CodingAgentLaunchModal.d.ts.map +0 -1
  423. package/dist/web/client/src/components/CodingAgentLaunchModal.js +0 -354
  424. package/dist/web/client/src/components/CodingAgentLaunchModal.js.map +0 -1
  425. package/dist/web/client/src/components/CustomCodingAgentForm.d.ts +0 -23
  426. package/dist/web/client/src/components/CustomCodingAgentForm.d.ts.map +0 -1
  427. package/dist/web/client/src/components/CustomCodingAgentForm.js +0 -209
  428. package/dist/web/client/src/components/CustomCodingAgentForm.js.map +0 -1
  429. package/dist/web/client/src/components/CustomCodingAgentList.d.ts +0 -10
  430. package/dist/web/client/src/components/CustomCodingAgentList.d.ts.map +0 -1
  431. package/dist/web/client/src/components/CustomCodingAgentList.js +0 -57
  432. package/dist/web/client/src/components/CustomCodingAgentList.js.map +0 -1
  433. package/dist/web/client/src/components/EnvEditor.d.ts +0 -20
  434. package/dist/web/client/src/components/EnvEditor.d.ts.map +0 -1
  435. package/dist/web/client/src/components/EnvEditor.js +0 -75
  436. package/dist/web/client/src/components/EnvEditor.js.map +0 -1
  437. package/dist/web/client/src/components/EnvironmentEditor.d.ts +0 -17
  438. package/dist/web/client/src/components/EnvironmentEditor.d.ts.map +0 -1
  439. package/dist/web/client/src/components/EnvironmentEditor.js +0 -22
  440. package/dist/web/client/src/components/EnvironmentEditor.js.map +0 -1
  441. package/dist/web/client/src/components/Terminal.d.ts +0 -15
  442. package/dist/web/client/src/components/Terminal.d.ts.map +0 -1
  443. package/dist/web/client/src/components/Terminal.js +0 -119
  444. package/dist/web/client/src/components/Terminal.js.map +0 -1
  445. package/dist/web/client/src/components/branch-detail/BranchInfoCards.d.ts +0 -10
  446. package/dist/web/client/src/components/branch-detail/BranchInfoCards.d.ts.map +0 -1
  447. package/dist/web/client/src/components/branch-detail/BranchInfoCards.js +0 -107
  448. package/dist/web/client/src/components/branch-detail/BranchInfoCards.js.map +0 -1
  449. package/dist/web/client/src/components/branch-detail/SessionHistoryTable.d.ts +0 -22
  450. package/dist/web/client/src/components/branch-detail/SessionHistoryTable.d.ts.map +0 -1
  451. package/dist/web/client/src/components/branch-detail/SessionHistoryTable.js +0 -80
  452. package/dist/web/client/src/components/branch-detail/SessionHistoryTable.js.map +0 -1
  453. package/dist/web/client/src/components/branch-detail/TerminalPanel.d.ts +0 -11
  454. package/dist/web/client/src/components/branch-detail/TerminalPanel.d.ts.map +0 -1
  455. package/dist/web/client/src/components/branch-detail/TerminalPanel.js +0 -32
  456. package/dist/web/client/src/components/branch-detail/TerminalPanel.js.map +0 -1
  457. package/dist/web/client/src/components/branch-detail/ToolLauncher.d.ts +0 -40
  458. package/dist/web/client/src/components/branch-detail/ToolLauncher.d.ts.map +0 -1
  459. package/dist/web/client/src/components/branch-detail/ToolLauncher.js +0 -147
  460. package/dist/web/client/src/components/branch-detail/ToolLauncher.js.map +0 -1
  461. package/dist/web/client/src/components/branch-detail/index.d.ts +0 -5
  462. package/dist/web/client/src/components/branch-detail/index.d.ts.map +0 -1
  463. package/dist/web/client/src/components/branch-detail/index.js +0 -5
  464. package/dist/web/client/src/components/branch-detail/index.js.map +0 -1
  465. package/dist/web/client/src/components/common/BranchCard.d.ts +0 -17
  466. package/dist/web/client/src/components/common/BranchCard.d.ts.map +0 -1
  467. package/dist/web/client/src/components/common/BranchCard.js +0 -36
  468. package/dist/web/client/src/components/common/BranchCard.js.map +0 -1
  469. package/dist/web/client/src/components/common/MetricCard.d.ts +0 -10
  470. package/dist/web/client/src/components/common/MetricCard.d.ts.map +0 -1
  471. package/dist/web/client/src/components/common/MetricCard.js +0 -10
  472. package/dist/web/client/src/components/common/MetricCard.js.map +0 -1
  473. package/dist/web/client/src/components/common/PageHeader.d.ts +0 -12
  474. package/dist/web/client/src/components/common/PageHeader.d.ts.map +0 -1
  475. package/dist/web/client/src/components/common/PageHeader.js +0 -14
  476. package/dist/web/client/src/components/common/PageHeader.js.map +0 -1
  477. package/dist/web/client/src/components/common/SearchInput.d.ts +0 -14
  478. package/dist/web/client/src/components/common/SearchInput.d.ts.map +0 -1
  479. package/dist/web/client/src/components/common/SearchInput.js +0 -15
  480. package/dist/web/client/src/components/common/SearchInput.js.map +0 -1
  481. package/dist/web/client/src/components/common/StatusBadge.d.ts +0 -10
  482. package/dist/web/client/src/components/common/StatusBadge.d.ts.map +0 -1
  483. package/dist/web/client/src/components/common/StatusBadge.js +0 -15
  484. package/dist/web/client/src/components/common/StatusBadge.js.map +0 -1
  485. package/dist/web/client/src/components/common/index.d.ts +0 -6
  486. package/dist/web/client/src/components/common/index.d.ts.map +0 -1
  487. package/dist/web/client/src/components/common/index.js +0 -6
  488. package/dist/web/client/src/components/common/index.js.map +0 -1
  489. package/dist/web/client/src/components/graph/BranchDetailPanel.d.ts +0 -15
  490. package/dist/web/client/src/components/graph/BranchDetailPanel.d.ts.map +0 -1
  491. package/dist/web/client/src/components/graph/BranchDetailPanel.js +0 -57
  492. package/dist/web/client/src/components/graph/BranchDetailPanel.js.map +0 -1
  493. package/dist/web/client/src/components/graph/BranchNode.d.ts +0 -13
  494. package/dist/web/client/src/components/graph/BranchNode.d.ts.map +0 -1
  495. package/dist/web/client/src/components/graph/BranchNode.js +0 -103
  496. package/dist/web/client/src/components/graph/BranchNode.js.map +0 -1
  497. package/dist/web/client/src/components/graph/ClusterNode.d.ts +0 -13
  498. package/dist/web/client/src/components/graph/ClusterNode.d.ts.map +0 -1
  499. package/dist/web/client/src/components/graph/ClusterNode.js +0 -109
  500. package/dist/web/client/src/components/graph/ClusterNode.js.map +0 -1
  501. package/dist/web/client/src/components/graph/SynapticCanvas.d.ts +0 -17
  502. package/dist/web/client/src/components/graph/SynapticCanvas.d.ts.map +0 -1
  503. package/dist/web/client/src/components/graph/SynapticCanvas.js +0 -94
  504. package/dist/web/client/src/components/graph/SynapticCanvas.js.map +0 -1
  505. package/dist/web/client/src/components/graph/SynapticEdge.d.ts +0 -13
  506. package/dist/web/client/src/components/graph/SynapticEdge.d.ts.map +0 -1
  507. package/dist/web/client/src/components/graph/SynapticEdge.js +0 -113
  508. package/dist/web/client/src/components/graph/SynapticEdge.js.map +0 -1
  509. package/dist/web/client/src/components/graph/graphUtils.d.ts +0 -67
  510. package/dist/web/client/src/components/graph/graphUtils.d.ts.map +0 -1
  511. package/dist/web/client/src/components/graph/graphUtils.js +0 -175
  512. package/dist/web/client/src/components/graph/graphUtils.js.map +0 -1
  513. package/dist/web/client/src/components/graph/index.d.ts +0 -10
  514. package/dist/web/client/src/components/graph/index.d.ts.map +0 -1
  515. package/dist/web/client/src/components/graph/index.js +0 -10
  516. package/dist/web/client/src/components/graph/index.js.map +0 -1
  517. package/dist/web/client/src/components/ui/alert.d.ts +0 -9
  518. package/dist/web/client/src/components/ui/alert.d.ts.map +0 -1
  519. package/dist/web/client/src/components/ui/alert.js +0 -25
  520. package/dist/web/client/src/components/ui/alert.js.map +0 -1
  521. package/dist/web/client/src/components/ui/badge.d.ts +0 -10
  522. package/dist/web/client/src/components/ui/badge.d.ts.map +0 -1
  523. package/dist/web/client/src/components/ui/badge.js +0 -25
  524. package/dist/web/client/src/components/ui/badge.js.map +0 -1
  525. package/dist/web/client/src/components/ui/button.d.ts +0 -12
  526. package/dist/web/client/src/components/ui/button.d.ts.map +0 -1
  527. package/dist/web/client/src/components/ui/button.js +0 -33
  528. package/dist/web/client/src/components/ui/button.js.map +0 -1
  529. package/dist/web/client/src/components/ui/card.d.ts +0 -9
  530. package/dist/web/client/src/components/ui/card.d.ts.map +0 -1
  531. package/dist/web/client/src/components/ui/card.js +0 -16
  532. package/dist/web/client/src/components/ui/card.js.map +0 -1
  533. package/dist/web/client/src/components/ui/index.d.ts +0 -8
  534. package/dist/web/client/src/components/ui/index.d.ts.map +0 -1
  535. package/dist/web/client/src/components/ui/index.js +0 -8
  536. package/dist/web/client/src/components/ui/index.js.map +0 -1
  537. package/dist/web/client/src/components/ui/input.d.ts +0 -4
  538. package/dist/web/client/src/components/ui/input.d.ts.map +0 -1
  539. package/dist/web/client/src/components/ui/input.js +0 -8
  540. package/dist/web/client/src/components/ui/input.js.map +0 -1
  541. package/dist/web/client/src/components/ui/select.d.ts +0 -14
  542. package/dist/web/client/src/components/ui/select.d.ts.map +0 -1
  543. package/dist/web/client/src/components/ui/select.js +0 -39
  544. package/dist/web/client/src/components/ui/select.js.map +0 -1
  545. package/dist/web/client/src/components/ui/table.d.ts +0 -11
  546. package/dist/web/client/src/components/ui/table.d.ts.map +0 -1
  547. package/dist/web/client/src/components/ui/table.js +0 -21
  548. package/dist/web/client/src/components/ui/table.js.map +0 -1
  549. package/dist/web/client/src/hooks/useBranches.d.ts +0 -16
  550. package/dist/web/client/src/hooks/useBranches.d.ts.map +0 -1
  551. package/dist/web/client/src/hooks/useBranches.js +0 -35
  552. package/dist/web/client/src/hooks/useBranches.js.map +0 -1
  553. package/dist/web/client/src/hooks/useConfig.d.ts +0 -13
  554. package/dist/web/client/src/hooks/useConfig.d.ts.map +0 -1
  555. package/dist/web/client/src/hooks/useConfig.js +0 -27
  556. package/dist/web/client/src/hooks/useConfig.js.map +0 -1
  557. package/dist/web/client/src/hooks/useSessions.d.ts +0 -21
  558. package/dist/web/client/src/hooks/useSessions.d.ts.map +0 -1
  559. package/dist/web/client/src/hooks/useSessions.js +0 -54
  560. package/dist/web/client/src/hooks/useSessions.js.map +0 -1
  561. package/dist/web/client/src/hooks/useWorktrees.d.ts +0 -17
  562. package/dist/web/client/src/hooks/useWorktrees.d.ts.map +0 -1
  563. package/dist/web/client/src/hooks/useWorktrees.js +0 -41
  564. package/dist/web/client/src/hooks/useWorktrees.js.map +0 -1
  565. package/dist/web/client/src/lib/api.d.ts +0 -82
  566. package/dist/web/client/src/lib/api.d.ts.map +0 -1
  567. package/dist/web/client/src/lib/api.js +0 -147
  568. package/dist/web/client/src/lib/api.js.map +0 -1
  569. package/dist/web/client/src/lib/coding-agent-colors.d.ts +0 -86
  570. package/dist/web/client/src/lib/coding-agent-colors.d.ts.map +0 -1
  571. package/dist/web/client/src/lib/coding-agent-colors.js +0 -135
  572. package/dist/web/client/src/lib/coding-agent-colors.js.map +0 -1
  573. package/dist/web/client/src/lib/utils.d.ts +0 -7
  574. package/dist/web/client/src/lib/utils.d.ts.map +0 -1
  575. package/dist/web/client/src/lib/utils.js +0 -10
  576. package/dist/web/client/src/lib/utils.js.map +0 -1
  577. package/dist/web/client/src/lib/websocket.d.ts +0 -59
  578. package/dist/web/client/src/lib/websocket.d.ts.map +0 -1
  579. package/dist/web/client/src/lib/websocket.js +0 -182
  580. package/dist/web/client/src/lib/websocket.js.map +0 -1
  581. package/dist/web/client/src/main.d.ts +0 -2
  582. package/dist/web/client/src/main.d.ts.map +0 -1
  583. package/dist/web/client/src/main.js +0 -23
  584. package/dist/web/client/src/main.js.map +0 -1
  585. package/dist/web/client/src/pages/BranchDetailPage.d.ts +0 -3
  586. package/dist/web/client/src/pages/BranchDetailPage.d.ts.map +0 -1
  587. package/dist/web/client/src/pages/BranchDetailPage.js +0 -365
  588. package/dist/web/client/src/pages/BranchDetailPage.js.map +0 -1
  589. package/dist/web/client/src/pages/BranchListPage.d.ts +0 -3
  590. package/dist/web/client/src/pages/BranchListPage.d.ts.map +0 -1
  591. package/dist/web/client/src/pages/BranchListPage.js +0 -118
  592. package/dist/web/client/src/pages/BranchListPage.js.map +0 -1
  593. package/dist/web/client/src/pages/ConfigManagementPage.d.ts +0 -3
  594. package/dist/web/client/src/pages/ConfigManagementPage.d.ts.map +0 -1
  595. package/dist/web/client/src/pages/ConfigManagementPage.js +0 -132
  596. package/dist/web/client/src/pages/ConfigManagementPage.js.map +0 -1
  597. package/dist/web/client/src/pages/ConfigPage.d.ts +0 -3
  598. package/dist/web/client/src/pages/ConfigPage.d.ts.map +0 -1
  599. package/dist/web/client/src/pages/ConfigPage.js +0 -220
  600. package/dist/web/client/src/pages/ConfigPage.js.map +0 -1
  601. package/dist/web/client/src/router.d.ts +0 -9
  602. package/dist/web/client/src/router.d.ts.map +0 -1
  603. package/dist/web/client/src/router.js +0 -27
  604. package/dist/web/client/src/router.js.map +0 -1
  605. package/dist/web/client/vite.config.d.ts +0 -3
  606. package/dist/web/client/vite.config.d.ts.map +0 -1
  607. package/dist/web/client/vite.config.js +0 -28
  608. package/dist/web/client/vite.config.js.map +0 -1
  609. package/dist/web/server/env/importer.d.ts +0 -3
  610. package/dist/web/server/env/importer.d.ts.map +0 -1
  611. package/dist/web/server/env/importer.js +0 -51
  612. package/dist/web/server/env/importer.js.map +0 -1
  613. package/dist/web/server/index.d.ts +0 -33
  614. package/dist/web/server/index.d.ts.map +0 -1
  615. package/dist/web/server/index.js +0 -102
  616. package/dist/web/server/index.js.map +0 -1
  617. package/dist/web/server/pty/manager.d.ts +0 -54
  618. package/dist/web/server/pty/manager.d.ts.map +0 -1
  619. package/dist/web/server/pty/manager.js +0 -303
  620. package/dist/web/server/pty/manager.js.map +0 -1
  621. package/dist/web/server/routes/branches.d.ts +0 -11
  622. package/dist/web/server/routes/branches.d.ts.map +0 -1
  623. package/dist/web/server/routes/branches.js +0 -97
  624. package/dist/web/server/routes/branches.js.map +0 -1
  625. package/dist/web/server/routes/config.d.ts +0 -6
  626. package/dist/web/server/routes/config.d.ts.map +0 -1
  627. package/dist/web/server/routes/config.js +0 -162
  628. package/dist/web/server/routes/config.js.map +0 -1
  629. package/dist/web/server/routes/index.d.ts +0 -13
  630. package/dist/web/server/routes/index.d.ts.map +0 -1
  631. package/dist/web/server/routes/index.js +0 -29
  632. package/dist/web/server/routes/index.js.map +0 -1
  633. package/dist/web/server/routes/sessions.d.ts +0 -12
  634. package/dist/web/server/routes/sessions.d.ts.map +0 -1
  635. package/dist/web/server/routes/sessions.js +0 -176
  636. package/dist/web/server/routes/sessions.js.map +0 -1
  637. package/dist/web/server/routes/worktrees.d.ts +0 -11
  638. package/dist/web/server/routes/worktrees.d.ts.map +0 -1
  639. package/dist/web/server/routes/worktrees.js +0 -80
  640. package/dist/web/server/routes/worktrees.js.map +0 -1
  641. package/dist/web/server/services/branches.d.ts +0 -17
  642. package/dist/web/server/services/branches.d.ts.map +0 -1
  643. package/dist/web/server/services/branches.js +0 -275
  644. package/dist/web/server/services/branches.js.map +0 -1
  645. package/dist/web/server/services/worktrees.d.ts +0 -24
  646. package/dist/web/server/services/worktrees.d.ts.map +0 -1
  647. package/dist/web/server/services/worktrees.js +0 -66
  648. package/dist/web/server/services/worktrees.js.map +0 -1
  649. package/dist/web/server/tray.d.ts +0 -25
  650. package/dist/web/server/tray.d.ts.map +0 -1
  651. package/dist/web/server/tray.js +0 -116
  652. package/dist/web/server/tray.js.map +0 -1
  653. package/dist/web/server/types.d.ts +0 -4
  654. package/dist/web/server/types.d.ts.map +0 -1
  655. package/dist/web/server/types.js +0 -2
  656. package/dist/web/server/types.js.map +0 -1
  657. package/dist/web/server/websocket/handler.d.ts +0 -57
  658. package/dist/web/server/websocket/handler.d.ts.map +0 -1
  659. package/dist/web/server/websocket/handler.js +0 -220
  660. package/dist/web/server/websocket/handler.js.map +0 -1
  661. package/dist/worktree.d.ts +0 -117
  662. package/dist/worktree.d.ts.map +0 -1
  663. package/dist/worktree.js +0 -788
  664. package/dist/worktree.js.map +0 -1
  665. package/src/claude-history.ts +0 -717
  666. package/src/claude.ts +0 -557
  667. package/src/cli/ui/App.solid.tsx +0 -2145
  668. package/src/cli/ui/__tests__/solid/AppSolid.cleanup.test.tsx +0 -1175
  669. package/src/cli/ui/__tests__/solid/BranchListScreen.test.tsx +0 -343
  670. package/src/cli/ui/__tests__/solid/ConfirmScreen.test.tsx +0 -77
  671. package/src/cli/ui/__tests__/solid/LogScreen.test.tsx +0 -351
  672. package/src/cli/ui/__tests__/solid/components/QuickStartStep.test.tsx +0 -308
  673. package/src/cli/ui/__tests__/solid/components/WizardController.test.tsx +0 -71
  674. package/src/cli/ui/__tests__/solid/components/WizardPopup.test.tsx +0 -231
  675. package/src/cli/ui/__tests__/solid/components/WizardSteps.test.tsx +0 -331
  676. package/src/cli/ui/__tests__/utils/branchFormatter.test.ts +0 -702
  677. package/src/cli/ui/__tests__/utils/clipboard.test.ts +0 -65
  678. package/src/cli/ui/__tests__/utils/statisticsCalculator.test.ts +0 -243
  679. package/src/cli/ui/components/solid/Footer.tsx +0 -36
  680. package/src/cli/ui/components/solid/Header.tsx +0 -67
  681. package/src/cli/ui/components/solid/HelpOverlay.tsx +0 -194
  682. package/src/cli/ui/components/solid/QuickStartStep.tsx +0 -209
  683. package/src/cli/ui/components/solid/ScrollableList.tsx +0 -23
  684. package/src/cli/ui/components/solid/SearchInput.tsx +0 -42
  685. package/src/cli/ui/components/solid/SelectInput.tsx +0 -88
  686. package/src/cli/ui/components/solid/Stats.tsx +0 -92
  687. package/src/cli/ui/components/solid/TextInput.tsx +0 -49
  688. package/src/cli/ui/components/solid/WizardController.tsx +0 -457
  689. package/src/cli/ui/components/solid/WizardPopup.tsx +0 -135
  690. package/src/cli/ui/components/solid/WizardSteps.tsx +0 -781
  691. package/src/cli/ui/core/index.ts +0 -17
  692. package/src/cli/ui/core/keybindings.ts +0 -367
  693. package/src/cli/ui/core/theme.ts +0 -266
  694. package/src/cli/ui/core/types.ts +0 -235
  695. package/src/cli/ui/hooks/solid/useAsyncOperation.ts +0 -78
  696. package/src/cli/ui/hooks/solid/useFilter.ts +0 -86
  697. package/src/cli/ui/hooks/solid/useGitOperations.ts +0 -81
  698. package/src/cli/ui/hooks/solid/useKeyHandler.ts +0 -103
  699. package/src/cli/ui/hooks/solid/useScrollableList.ts +0 -149
  700. package/src/cli/ui/hooks/solid/useSelection.ts +0 -77
  701. package/src/cli/ui/hooks/solid/useTerminalSize.ts +0 -22
  702. package/src/cli/ui/index.solid.ts +0 -28
  703. package/src/cli/ui/screens/solid/BranchListScreen.tsx +0 -1153
  704. package/src/cli/ui/screens/solid/ConfirmScreen.tsx +0 -86
  705. package/src/cli/ui/screens/solid/EnvironmentScreen.tsx +0 -161
  706. package/src/cli/ui/screens/solid/ErrorScreen.tsx +0 -42
  707. package/src/cli/ui/screens/solid/InputScreen.tsx +0 -55
  708. package/src/cli/ui/screens/solid/LoadingIndicator.tsx +0 -77
  709. package/src/cli/ui/screens/solid/LogDetailScreen.tsx +0 -75
  710. package/src/cli/ui/screens/solid/LogScreen.tsx +0 -504
  711. package/src/cli/ui/screens/solid/ProfileEnvScreen.tsx +0 -196
  712. package/src/cli/ui/screens/solid/ProfileScreen.tsx +0 -98
  713. package/src/cli/ui/screens/solid/SelectorScreen.tsx +0 -181
  714. package/src/cli/ui/screens/solid/SettingsScreen.tsx +0 -52
  715. package/src/cli/ui/screens/solid/WorktreeCreateScreen.tsx +0 -136
  716. package/src/cli/ui/screens/solid/WorktreeDeleteScreen.tsx +0 -40
  717. package/src/cli/ui/stores/appStore.ts +0 -208
  718. package/src/cli/ui/stores/branchStore.ts +0 -357
  719. package/src/cli/ui/stores/index.ts +0 -31
  720. package/src/cli/ui/stores/uiStore.ts +0 -226
  721. package/src/cli/ui/types.ts +0 -371
  722. package/src/cli/ui/utils/__tests__/branchFormatter.test.ts +0 -227
  723. package/src/cli/ui/utils/__tests__/installedVersionCache.test.ts +0 -46
  724. package/src/cli/ui/utils/baseBranch.ts +0 -34
  725. package/src/cli/ui/utils/branchFormatter.ts +0 -222
  726. package/src/cli/ui/utils/clipboard.ts +0 -31
  727. package/src/cli/ui/utils/continueSession.ts +0 -231
  728. package/src/cli/ui/utils/installedVersionCache.ts +0 -84
  729. package/src/cli/ui/utils/modelOptions.test.ts +0 -98
  730. package/src/cli/ui/utils/modelOptions.ts +0 -169
  731. package/src/cli/ui/utils/statisticsCalculator.ts +0 -44
  732. package/src/cli/ui/utils/versionCache.ts +0 -93
  733. package/src/cli/ui/utils/versionFetcher.ts +0 -120
  734. package/src/codex.ts +0 -445
  735. package/src/config/__tests__/saveSession.test.ts +0 -143
  736. package/src/config/builtin-coding-agents.ts +0 -87
  737. package/src/config/constants.ts +0 -102
  738. package/src/config/env-history.ts +0 -45
  739. package/src/config/index.ts +0 -311
  740. package/src/config/profiles.ts +0 -359
  741. package/src/config/shared-env.ts +0 -139
  742. package/src/config/tools.ts +0 -319
  743. package/src/gemini.ts +0 -405
  744. package/src/git.ts +0 -1263
  745. package/src/github.ts +0 -158
  746. package/src/index.test.ts +0 -93
  747. package/src/index.ts +0 -1024
  748. package/src/launcher.ts +0 -235
  749. package/src/logging/agentOutput.ts +0 -216
  750. package/src/logging/formatter.ts +0 -125
  751. package/src/logging/logger.ts +0 -106
  752. package/src/logging/reader.ts +0 -240
  753. package/src/logging/rotation.ts +0 -25
  754. package/src/opentui/index.solid.ts +0 -1
  755. package/src/repositories/git.repository.ts +0 -129
  756. package/src/repositories/github.repository.ts +0 -83
  757. package/src/repositories/worktree.repository.ts +0 -77
  758. package/src/services/BatchMergeService.ts +0 -251
  759. package/src/services/WorktreeOrchestrator.ts +0 -115
  760. package/src/services/__tests__/BatchMergeService.test.ts +0 -534
  761. package/src/services/__tests__/WorktreeOrchestrator.test.ts +0 -259
  762. package/src/services/codingAgentCommandResolver.ts +0 -118
  763. package/src/services/codingAgentResolver.ts +0 -375
  764. package/src/services/dependency-installer.ts +0 -192
  765. package/src/services/git.service.ts +0 -115
  766. package/src/services/github.service.ts +0 -61
  767. package/src/services/worktree.service.ts +0 -66
  768. package/src/shared/codingAgentConstants.ts +0 -103
  769. package/src/trayicon.d.ts +0 -30
  770. package/src/types/api.ts +0 -256
  771. package/src/types/coding-agent.ts +0 -85
  772. package/src/types/profiles.ts +0 -64
  773. package/src/types/tools.ts +0 -269
  774. package/src/utils/__tests__/npmRegistry.test.ts +0 -250
  775. package/src/utils/__tests__/prompt.test.ts +0 -125
  776. package/src/utils/bun-runtime.ts +0 -29
  777. package/src/utils/coding-agent-colors.ts +0 -165
  778. package/src/utils/command.ts +0 -234
  779. package/src/utils/error-utils.ts +0 -133
  780. package/src/utils/npmRegistry.ts +0 -249
  781. package/src/utils/prompt.ts +0 -149
  782. package/src/utils/session/common.ts +0 -474
  783. package/src/utils/session/index.ts +0 -50
  784. package/src/utils/session/parsers/claude.ts +0 -283
  785. package/src/utils/session/parsers/codex.ts +0 -166
  786. package/src/utils/session/parsers/gemini.ts +0 -135
  787. package/src/utils/session/parsers/index.ts +0 -31
  788. package/src/utils/session/parsers/opencode.ts +0 -151
  789. package/src/utils/session/types.ts +0 -51
  790. package/src/utils/session.ts +0 -16
  791. package/src/utils/spinner.ts +0 -54
  792. package/src/utils/terminal.ts +0 -327
  793. package/src/utils/webui.ts +0 -43
  794. package/src/utils.test.ts +0 -43
  795. package/src/utils.ts +0 -93
  796. package/src/web/client/components.json +0 -21
  797. package/src/web/client/index.html +0 -12
  798. package/src/web/client/src/components/BranchGraph.tsx +0 -95
  799. package/src/web/client/src/components/CodingAgentLaunchModal.tsx +0 -570
  800. package/src/web/client/src/components/CustomCodingAgentForm.tsx +0 -386
  801. package/src/web/client/src/components/CustomCodingAgentList.tsx +0 -119
  802. package/src/web/client/src/components/EnvEditor.tsx +0 -188
  803. package/src/web/client/src/components/EnvironmentEditor.tsx +0 -97
  804. package/src/web/client/src/components/Terminal.tsx +0 -145
  805. package/src/web/client/src/components/branch-detail/BranchInfoCards.tsx +0 -193
  806. package/src/web/client/src/components/branch-detail/SessionHistoryTable.tsx +0 -187
  807. package/src/web/client/src/components/branch-detail/TerminalPanel.tsx +0 -92
  808. package/src/web/client/src/components/branch-detail/ToolLauncher.tsx +0 -332
  809. package/src/web/client/src/components/branch-detail/index.ts +0 -4
  810. package/src/web/client/src/components/common/BranchCard.tsx +0 -117
  811. package/src/web/client/src/components/common/MetricCard.tsx +0 -22
  812. package/src/web/client/src/components/common/PageHeader.tsx +0 -44
  813. package/src/web/client/src/components/common/SearchInput.tsx +0 -40
  814. package/src/web/client/src/components/common/StatusBadge.tsx +0 -37
  815. package/src/web/client/src/components/common/index.ts +0 -5
  816. package/src/web/client/src/components/graph/BranchDetailPanel.tsx +0 -152
  817. package/src/web/client/src/components/graph/BranchNode.tsx +0 -200
  818. package/src/web/client/src/components/graph/ClusterNode.tsx +0 -211
  819. package/src/web/client/src/components/graph/SynapticCanvas.tsx +0 -171
  820. package/src/web/client/src/components/graph/SynapticEdge.tsx +0 -311
  821. package/src/web/client/src/components/graph/graphUtils.ts +0 -265
  822. package/src/web/client/src/components/graph/index.ts +0 -10
  823. package/src/web/client/src/components/ui/alert.tsx +0 -63
  824. package/src/web/client/src/components/ui/badge.tsx +0 -44
  825. package/src/web/client/src/components/ui/button.tsx +0 -57
  826. package/src/web/client/src/components/ui/card.tsx +0 -82
  827. package/src/web/client/src/components/ui/index.ts +0 -32
  828. package/src/web/client/src/components/ui/input.tsx +0 -21
  829. package/src/web/client/src/components/ui/select.tsx +0 -156
  830. package/src/web/client/src/components/ui/table.tsx +0 -119
  831. package/src/web/client/src/hooks/useBranches.ts +0 -41
  832. package/src/web/client/src/hooks/useConfig.ts +0 -31
  833. package/src/web/client/src/hooks/useSessions.ts +0 -68
  834. package/src/web/client/src/hooks/useWorktrees.ts +0 -47
  835. package/src/web/client/src/index.css +0 -349
  836. package/src/web/client/src/lib/api.ts +0 -184
  837. package/src/web/client/src/lib/coding-agent-colors.ts +0 -149
  838. package/src/web/client/src/lib/utils.ts +0 -10
  839. package/src/web/client/src/lib/websocket.ts +0 -222
  840. package/src/web/client/src/main.tsx +0 -29
  841. package/src/web/client/src/pages/BranchDetailPage.tsx +0 -555
  842. package/src/web/client/src/pages/BranchListPage.tsx +0 -242
  843. package/src/web/client/src/pages/ConfigManagementPage.tsx +0 -248
  844. package/src/web/client/src/pages/ConfigPage.tsx +0 -368
  845. package/src/web/client/src/router.tsx +0 -27
  846. package/src/web/client/vite.config.ts +0 -28
  847. package/src/web/server/env/importer.ts +0 -62
  848. package/src/web/server/index.ts +0 -143
  849. package/src/web/server/pty/manager.ts +0 -443
  850. package/src/web/server/routes/branches.ts +0 -126
  851. package/src/web/server/routes/config.ts +0 -226
  852. package/src/web/server/routes/index.ts +0 -37
  853. package/src/web/server/routes/sessions.ts +0 -252
  854. package/src/web/server/routes/worktrees.ts +0 -108
  855. package/src/web/server/services/branches.ts +0 -387
  856. package/src/web/server/services/worktrees.ts +0 -93
  857. package/src/web/server/tray.ts +0 -136
  858. package/src/web/server/types.ts +0 -14
  859. package/src/web/server/websocket/handler.ts +0 -299
  860. package/src/worktree.ts +0 -1109
package/dist/git.js DELETED
@@ -1,1012 +0,0 @@
1
- import { execa } from "execa";
2
- import path from "node:path";
3
- import { GIT_CONFIG } from "./config/constants.js";
4
- export class GitError extends Error {
5
- cause;
6
- constructor(message, cause) {
7
- super(message);
8
- this.cause = cause;
9
- this.name = "GitError";
10
- }
11
- }
12
- /**
13
- * 現在のディレクトリがGitリポジトリかどうかを確認
14
- * Worktree環境でも動作するように、.gitファイルの存在も確認します
15
- * @returns {Promise<boolean>} Gitリポジトリの場合true
16
- */
17
- export async function isGitRepository() {
18
- try {
19
- // まず.gitの存在を確認(ディレクトリまたはファイル)
20
- const fs = await import("node:fs");
21
- const gitPath = path.join(process.cwd(), ".git");
22
- if (fs.existsSync(gitPath)) {
23
- // .gitが存在する場合、Git環境として認識
24
- if (process.env.DEBUG) {
25
- const stats = fs.statSync(gitPath);
26
- console.error(`[DEBUG] .git exists: ${gitPath} (${stats.isDirectory() ? "directory" : "file"})`);
27
- }
28
- return true;
29
- }
30
- // .gitが存在しない場合、git rev-parseで確認
31
- const result = await execa("git", ["rev-parse", "--git-dir"]);
32
- if (process.env.DEBUG) {
33
- console.error(`[DEBUG] git rev-parse --git-dir: ${result.stdout}`);
34
- }
35
- return true;
36
- }
37
- catch (error) {
38
- // Debug: log the error for troubleshooting
39
- if (process.env.DEBUG) {
40
- const message = error instanceof Error ? error.message : String(error);
41
- const stderr = typeof error === "object" && error !== null && "stderr" in error
42
- ? error.stderr
43
- : undefined;
44
- console.error(`[DEBUG] git rev-parse --git-dir failed:`, message);
45
- if (stderr) {
46
- console.error(`[DEBUG] stderr:`, stderr);
47
- }
48
- }
49
- return false;
50
- }
51
- }
52
- /**
53
- * Gitリポジトリのルートディレクトリを取得
54
- * @returns {Promise<string>} リポジトリのルートパス
55
- * @throws {GitError} リポジトリルートの取得に失敗した場合
56
- */
57
- export async function getRepositoryRoot() {
58
- const fs = await import("node:fs");
59
- const path = await import("node:path");
60
- const toExistingDir = (p) => {
61
- let current = path.resolve(p);
62
- while (!fs.existsSync(current) && path.dirname(current) !== current) {
63
- current = path.dirname(current);
64
- }
65
- if (!fs.existsSync(current)) {
66
- return current;
67
- }
68
- try {
69
- const stat = fs.statSync(current);
70
- return stat.isDirectory() ? current : path.dirname(current);
71
- }
72
- catch {
73
- return current;
74
- }
75
- };
76
- // 1) show-toplevel を最優先
77
- try {
78
- const { stdout } = await execa("git", ["rev-parse", "--show-toplevel"]);
79
- const top = stdout.trim();
80
- if (top) {
81
- const marker = `${path.sep}.worktrees${path.sep}`;
82
- const idx = top.indexOf(marker);
83
- if (idx >= 0) {
84
- // /repo/.worktrees/<name> → repo root = /repo
85
- const parent = top.slice(0, idx);
86
- const upTwo = path.resolve(top, "..", "..");
87
- if (fs.existsSync(parent))
88
- return toExistingDir(parent);
89
- if (fs.existsSync(upTwo))
90
- return toExistingDir(upTwo);
91
- }
92
- if (fs.existsSync(top)) {
93
- return toExistingDir(top);
94
- }
95
- return toExistingDir(path.resolve(top, ".."));
96
- }
97
- }
98
- catch {
99
- // fallback
100
- }
101
- // 2) git-common-dir 経由
102
- try {
103
- const { stdout: gitCommonDir } = await execa("git", [
104
- "rev-parse",
105
- "--git-common-dir",
106
- ]);
107
- const gitDir = path.resolve(gitCommonDir.trim());
108
- const parts = gitDir.split(path.sep);
109
- const idxWorktrees = parts.lastIndexOf("worktrees");
110
- if (idxWorktrees > 0) {
111
- const repo = parts.slice(0, idxWorktrees).join(path.sep);
112
- if (fs.existsSync(repo))
113
- return toExistingDir(repo);
114
- }
115
- const idxGit = parts.lastIndexOf(".git");
116
- if (idxGit > 0) {
117
- const repo = parts.slice(0, idxGit).join(path.sep);
118
- if (fs.existsSync(repo))
119
- return toExistingDir(repo);
120
- }
121
- return toExistingDir(path.dirname(gitDir));
122
- }
123
- catch {
124
- // fallback
125
- }
126
- // 3) .git を上に辿って探す
127
- let current = process.cwd();
128
- const root = path.parse(current).root;
129
- while (true) {
130
- const candidate = path.join(current, ".git");
131
- if (fs.existsSync(candidate)) {
132
- if (fs.statSync(candidate).isDirectory()) {
133
- return toExistingDir(current);
134
- }
135
- try {
136
- const content = fs.readFileSync(candidate, "utf-8");
137
- const match = content.match(/gitdir:\s*(.+)\s*/i);
138
- const gitDirMatch = match?.[1];
139
- if (gitDirMatch) {
140
- const gitDirPath = path.resolve(current, gitDirMatch.trim());
141
- const parts = gitDirPath.split(path.sep);
142
- const idxWT = parts.lastIndexOf("worktrees");
143
- if (idxWT > 0) {
144
- const repo = parts.slice(0, idxWT).join(path.sep);
145
- return toExistingDir(repo);
146
- }
147
- return toExistingDir(path.dirname(gitDirPath));
148
- }
149
- }
150
- catch {
151
- // ignore and continue
152
- }
153
- }
154
- if (current === root)
155
- break;
156
- current = path.dirname(current);
157
- }
158
- throw new GitError("Failed to get repository root");
159
- }
160
- /**
161
- * 現在の作業ツリー(root branch か worktree かを問わず)のルートディレクトリを取得
162
- * @returns {Promise<string>} カレントWorktreeのルートパス
163
- * @throws {GitError} 取得に失敗した場合
164
- */
165
- export async function getWorktreeRoot() {
166
- try {
167
- const { stdout } = await execa("git", ["rev-parse", "--show-toplevel"]);
168
- return stdout.trim();
169
- }
170
- catch (error) {
171
- throw new GitError("Failed to get worktree root", error);
172
- }
173
- }
174
- export async function getCurrentBranch(cwd) {
175
- try {
176
- const workDir = cwd ?? (await getRepositoryRoot());
177
- const { stdout } = await execa("git", ["branch", "--show-current"], {
178
- cwd: workDir,
179
- });
180
- return stdout.trim() || null;
181
- }
182
- catch {
183
- try {
184
- const { stdout } = await execa("git", ["branch", "--show-current"]);
185
- return stdout.trim() || null;
186
- }
187
- catch {
188
- return null;
189
- }
190
- }
191
- }
192
- async function getBranchCommitTimestamps(refs, cwd) {
193
- try {
194
- const { stdout = "" } = (await execa("git", [
195
- "for-each-ref",
196
- "--format=%(refname:short)%00%(committerdate:unix)",
197
- ...refs,
198
- ], cwd ? { cwd } : undefined)) ?? { stdout: "" };
199
- const map = new Map();
200
- for (const line of stdout.split("\n")) {
201
- if (!line)
202
- continue;
203
- const [ref, timestamp] = line.split("\0");
204
- if (!ref || !timestamp)
205
- continue;
206
- if (ref.endsWith("/HEAD"))
207
- continue;
208
- const parsed = Number.parseInt(timestamp, 10);
209
- if (Number.isNaN(parsed))
210
- continue;
211
- map.set(ref, parsed);
212
- }
213
- return map;
214
- }
215
- catch (error) {
216
- throw new GitError("Failed to get branch commit timestamps", error);
217
- }
218
- }
219
- export async function getLocalBranches(cwd) {
220
- try {
221
- const execOptions = cwd ? { cwd } : undefined;
222
- const commitMap = await getBranchCommitTimestamps(["refs/heads"], cwd);
223
- const { stdout = "" } = (await execa("git", ["branch", "--format=%(refname:short)"], execOptions)) ?? { stdout: "" };
224
- return stdout
225
- .split("\n")
226
- .filter((line) => line.trim())
227
- .map((name) => {
228
- const trimmed = name.trim();
229
- const timestamp = commitMap.get(trimmed);
230
- return {
231
- name: trimmed,
232
- type: "local",
233
- branchType: getBranchType(trimmed),
234
- isCurrent: false,
235
- ...(timestamp !== undefined
236
- ? { latestCommitTimestamp: timestamp }
237
- : {}),
238
- };
239
- });
240
- }
241
- catch (primaryError) {
242
- throw new GitError("Failed to get local branches", primaryError);
243
- }
244
- }
245
- export async function getRemoteBranches(cwd) {
246
- try {
247
- const execOptions = cwd ? { cwd } : undefined;
248
- const commitMap = await getBranchCommitTimestamps(["refs/remotes"], cwd);
249
- const { stdout = "" } = (await execa("git", ["branch", "-r", "--format=%(refname:short)"], execOptions)) ?? { stdout: "" };
250
- return stdout
251
- .split("\n")
252
- .filter((line) => line.trim() && !line.includes("HEAD"))
253
- .map((line) => {
254
- const name = line.trim();
255
- const branchName = name.replace(/^origin\//, "");
256
- const timestamp = commitMap.get(name);
257
- return {
258
- name,
259
- type: "remote",
260
- branchType: getBranchType(branchName),
261
- isCurrent: false,
262
- ...(timestamp !== undefined
263
- ? { latestCommitTimestamp: timestamp }
264
- : {}),
265
- };
266
- });
267
- }
268
- catch (primaryError) {
269
- throw new GitError("Failed to get remote branches", primaryError);
270
- }
271
- }
272
- /**
273
- * ローカルとリモートのすべてのブランチ情報を取得
274
- * @param cwd - 作業ディレクトリ(省略時はリポジトリルート)
275
- * @returns {Promise<BranchInfo[]>} ブランチ情報の配列
276
- */
277
- export async function getAllBranches(cwd) {
278
- const [localBranches, remoteBranches, currentBranch] = await Promise.all([
279
- getLocalBranches(cwd),
280
- getRemoteBranches(cwd),
281
- getCurrentBranch(cwd),
282
- ]);
283
- // 現在のブランチ情報を設定
284
- if (currentBranch) {
285
- localBranches.forEach((branch) => {
286
- if (branch.name === currentBranch) {
287
- branch.isCurrent = true;
288
- }
289
- });
290
- }
291
- return [...localBranches, ...remoteBranches];
292
- }
293
- /**
294
- * ローカルブランチのupstream(追跡ブランチ)情報を取得
295
- * @param cwd - 作業ディレクトリ(省略時はリポジトリルート)
296
- * @returns Map<ローカルブランチ名, upstreamブランチ名>
297
- */
298
- export async function collectUpstreamMap(cwd) {
299
- const workDir = cwd ?? (await getRepositoryRoot());
300
- try {
301
- const { stdout } = await execa("git", [
302
- "for-each-ref",
303
- "--format=%(refname:short)|%(upstream:short)",
304
- "refs/heads",
305
- ], { cwd: workDir });
306
- return stdout
307
- .split("\n")
308
- .filter((line) => line.includes("|"))
309
- .reduce((map, line) => {
310
- const [branch, upstream] = line.split("|");
311
- if (branch?.trim() && upstream?.trim()) {
312
- map.set(branch.trim(), upstream.trim());
313
- }
314
- return map;
315
- }, new Map());
316
- }
317
- catch {
318
- return new Map();
319
- }
320
- }
321
- export async function createBranch(branchName, baseBranch = "main") {
322
- try {
323
- await execa("git", ["checkout", "-b", branchName, baseBranch]);
324
- }
325
- catch (error) {
326
- throw new GitError(`Failed to create branch ${branchName}`, error);
327
- }
328
- }
329
- export async function branchExists(branchName) {
330
- try {
331
- await execa("git", [
332
- "show-ref",
333
- "--verify",
334
- "--quiet",
335
- `refs/heads/${branchName}`,
336
- ]);
337
- return true;
338
- }
339
- catch {
340
- return false;
341
- }
342
- }
343
- export async function deleteBranch(branchName, force = false) {
344
- try {
345
- const args = ["branch", force ? "-D" : "-d", branchName];
346
- await execa("git", args);
347
- }
348
- catch (error) {
349
- throw new GitError(`Failed to delete branch ${branchName}`, error);
350
- }
351
- }
352
- async function getWorkdirStatus(worktreePath) {
353
- try {
354
- // ファイルシステムの存在確認のためにfs.existsSyncを使用
355
- const fs = await import("node:fs");
356
- if (!fs.existsSync(worktreePath)) {
357
- // worktreeパスが存在しない場合はデフォルト値を返す
358
- return {
359
- hasChanges: false,
360
- changedFilesCount: 0,
361
- };
362
- }
363
- const { stdout } = await execa("git", ["status", "--porcelain"], {
364
- cwd: worktreePath,
365
- });
366
- const lines = stdout.split("\n").filter((line) => line.trim());
367
- return {
368
- hasChanges: lines.length > 0,
369
- changedFilesCount: lines.length,
370
- };
371
- }
372
- catch (error) {
373
- throw new GitError(`Failed to get worktree status for path: ${worktreePath}`, error);
374
- }
375
- }
376
- export async function hasUncommittedChanges(worktreePath) {
377
- const status = await getWorkdirStatus(worktreePath);
378
- return status.hasChanges;
379
- }
380
- export async function getChangedFilesCount(worktreePath) {
381
- const status = await getWorkdirStatus(worktreePath);
382
- return status.changedFilesCount;
383
- }
384
- export async function showStatus(worktreePath) {
385
- try {
386
- const { stdout } = await execa("git", ["status"], { cwd: worktreePath });
387
- return stdout;
388
- }
389
- catch (error) {
390
- throw new GitError("Failed to show status", error);
391
- }
392
- }
393
- export async function stashChanges(worktreePath, message) {
394
- try {
395
- const args = message ? ["stash", "push", "-m", message] : ["stash"];
396
- await execa("git", args, { cwd: worktreePath });
397
- }
398
- catch (error) {
399
- throw new GitError("Failed to stash changes", error);
400
- }
401
- }
402
- export async function discardAllChanges(worktreePath) {
403
- try {
404
- // Reset tracked files
405
- await execa("git", ["reset", "--hard"], { cwd: worktreePath });
406
- // Clean untracked files
407
- await execa("git", ["clean", "-fd"], { cwd: worktreePath });
408
- }
409
- catch (error) {
410
- throw new GitError("Failed to discard changes", error);
411
- }
412
- }
413
- export async function commitChanges(worktreePath, message) {
414
- try {
415
- // Add all changes
416
- await execa("git", ["add", "-A"], { cwd: worktreePath });
417
- // Commit
418
- await execa("git", ["commit", "-m", message], { cwd: worktreePath });
419
- }
420
- catch (error) {
421
- throw new GitError("Failed to commit changes", error);
422
- }
423
- }
424
- function getBranchType(branchName) {
425
- if (branchName === "main" || branchName === "master")
426
- return "main";
427
- if (branchName === "develop" || branchName === "dev")
428
- return "develop";
429
- if (branchName.startsWith("feature/"))
430
- return "feature";
431
- if (branchName.startsWith("bugfix/") || branchName.startsWith("bug/"))
432
- return "bugfix";
433
- if (branchName.startsWith("hotfix/"))
434
- return "hotfix";
435
- if (branchName.startsWith("release/"))
436
- return "release";
437
- return "other";
438
- }
439
- async function hasUnpushedCommitsInternal(branch, options = {}) {
440
- const { cwd } = options;
441
- const execOptions = cwd ? { cwd } : undefined;
442
- try {
443
- const { stdout } = await execa("git", ["log", `origin/${branch}..${branch}`, "--oneline"], execOptions);
444
- return stdout.trim().length > 0;
445
- }
446
- catch {
447
- const candidates = [
448
- `origin/${branch}`,
449
- "origin/main",
450
- "origin/master",
451
- "origin/develop",
452
- "origin/dev",
453
- branch,
454
- "main",
455
- "master",
456
- "develop",
457
- "dev",
458
- ];
459
- for (const candidate of candidates) {
460
- try {
461
- await execa("git", ["rev-parse", "--verify", candidate], execOptions);
462
- // If we are checking the same branch again, we already know the remote ref is missing.
463
- if (candidate === `origin/${branch}` || candidate === branch) {
464
- continue;
465
- }
466
- try {
467
- await execa("git", ["merge-base", "--is-ancestor", branch, candidate], execOptions);
468
- return false;
469
- }
470
- catch {
471
- // Not merged into this candidate, try next one.
472
- }
473
- }
474
- catch {
475
- // Candidate ref does not exist. Try the next candidate.
476
- }
477
- }
478
- // Could not prove that the branch is merged anywhere safe, treat as unpushed commits.
479
- return true;
480
- }
481
- }
482
- export async function hasUnpushedCommits(worktreePath, branch) {
483
- return hasUnpushedCommitsInternal(branch, { cwd: worktreePath });
484
- }
485
- export async function hasUnpushedCommitsInRepo(branch, repoRoot) {
486
- return hasUnpushedCommitsInternal(branch, repoRoot ? { cwd: repoRoot } : {});
487
- }
488
- export async function branchHasUniqueCommitsComparedToBase(branch, baseBranch, repoRoot) {
489
- const execOptions = repoRoot ? { cwd: repoRoot } : undefined;
490
- try {
491
- await execa("git", ["rev-parse", "--verify", branch], execOptions);
492
- }
493
- catch {
494
- return true;
495
- }
496
- const normalizedBase = baseBranch.trim();
497
- if (!normalizedBase) {
498
- return true;
499
- }
500
- const candidates = new Set();
501
- candidates.add(normalizedBase);
502
- if (!normalizedBase.startsWith("origin/")) {
503
- candidates.add(`origin/${normalizedBase}`);
504
- }
505
- else {
506
- const localEquivalent = normalizedBase.replace(/^origin\//, "");
507
- if (localEquivalent) {
508
- candidates.add(localEquivalent);
509
- }
510
- }
511
- for (const candidate of candidates) {
512
- try {
513
- await execa("git", ["rev-parse", "--verify", candidate], execOptions);
514
- }
515
- catch {
516
- continue;
517
- }
518
- try {
519
- const { stdout } = await execa("git", ["log", `${candidate}..${branch}`, "--oneline"], execOptions);
520
- if (stdout.trim().length > 0) {
521
- return true;
522
- }
523
- return false;
524
- }
525
- catch {
526
- // Comparison failed for this candidate, try next one.
527
- }
528
- }
529
- // If no valid base candidate was found, treat the branch as having unique commits.
530
- return true;
531
- }
532
- /**
533
- * Get the latest commit message for a specific branch in a worktree
534
- */
535
- export async function getLatestCommitMessage(worktreePath, branch) {
536
- try {
537
- const { stdout } = await execa("git", ["log", "-1", "--pretty=format:%s", branch], { cwd: worktreePath });
538
- return stdout.trim() || null;
539
- }
540
- catch {
541
- return null;
542
- }
543
- }
544
- /**
545
- * Get the count of unpushed commits
546
- */
547
- export async function getUnpushedCommitsCount(worktreePath, branch) {
548
- try {
549
- const { stdout } = await execa("git", ["rev-list", "--count", `origin/${branch}..${branch}`], { cwd: worktreePath });
550
- return parseInt(stdout.trim(), 10) || 0;
551
- }
552
- catch {
553
- return 0;
554
- }
555
- }
556
- /**
557
- * Get the count of uncommitted changes (staged + unstaged)
558
- */
559
- export async function getUncommittedChangesCount(worktreePath) {
560
- try {
561
- const { stdout } = await execa("git", ["status", "--porcelain"], {
562
- cwd: worktreePath,
563
- });
564
- return stdout
565
- .trim()
566
- .split("\n")
567
- .filter((line) => line.trim()).length;
568
- }
569
- catch {
570
- return 0;
571
- }
572
- }
573
- /**
574
- * Get enhanced session information for display
575
- */
576
- export async function getEnhancedSessionInfo(worktreePath, branch) {
577
- try {
578
- const [hasUncommitted, uncommittedCount, hasUnpushed, unpushedCount, latestCommit,] = await Promise.all([
579
- hasUncommittedChanges(worktreePath),
580
- getUncommittedChangesCount(worktreePath),
581
- hasUnpushedCommits(worktreePath, branch),
582
- getUnpushedCommitsCount(worktreePath, branch),
583
- getLatestCommitMessage(worktreePath, branch),
584
- ]);
585
- // Determine branch type based on branch name
586
- let branchType = "other";
587
- const lowerBranch = branch.toLowerCase();
588
- if (lowerBranch.startsWith("feature/") || lowerBranch.startsWith("feat/")) {
589
- branchType = "feature";
590
- }
591
- else if (lowerBranch.startsWith("bugfix/") ||
592
- lowerBranch.startsWith("bug/") ||
593
- lowerBranch.startsWith("fix/")) {
594
- branchType = "bugfix";
595
- }
596
- else if (lowerBranch.startsWith("hotfix/")) {
597
- branchType = "hotfix";
598
- }
599
- else if (lowerBranch === "develop" || lowerBranch === "development") {
600
- branchType = "develop";
601
- }
602
- else if (lowerBranch === "main") {
603
- branchType = "main";
604
- }
605
- else if (lowerBranch === "master") {
606
- branchType = "master";
607
- }
608
- return {
609
- hasUncommittedChanges: hasUncommitted,
610
- uncommittedChangesCount: uncommittedCount,
611
- hasUnpushedCommits: hasUnpushed,
612
- unpushedCommitsCount: unpushedCount,
613
- latestCommitMessage: latestCommit,
614
- branchType,
615
- };
616
- }
617
- catch {
618
- // Return safe defaults if any operation fails
619
- return {
620
- hasUncommittedChanges: false,
621
- uncommittedChangesCount: 0,
622
- hasUnpushedCommits: false,
623
- unpushedCommitsCount: 0,
624
- latestCommitMessage: null,
625
- branchType: "other",
626
- };
627
- }
628
- }
629
- export async function fetchAllRemotes(options) {
630
- try {
631
- const execOptions = options?.cwd ? { cwd: options.cwd } : {};
632
- const timeoutMs = options?.timeoutMs ?? GIT_CONFIG.FETCH_TIMEOUT;
633
- const allowPrompt = options?.allowPrompt === true;
634
- const env = allowPrompt
635
- ? process.env
636
- : {
637
- ...process.env,
638
- GIT_TERMINAL_PROMPT: "0",
639
- GCM_INTERACTIVE: "Never",
640
- };
641
- const args = ["fetch", "--all", "--prune"];
642
- await execa("git", args, {
643
- ...execOptions,
644
- timeout: timeoutMs,
645
- env,
646
- stdin: allowPrompt ? "inherit" : "ignore",
647
- });
648
- }
649
- catch (error) {
650
- throw new GitError("Failed to fetch remote branches", error);
651
- }
652
- }
653
- export async function getCurrentVersion(repoRoot) {
654
- try {
655
- const packageJsonPath = path.join(repoRoot, "package.json");
656
- const fs = await import("node:fs");
657
- const packageJson = JSON.parse(await fs.promises.readFile(packageJsonPath, "utf-8"));
658
- return packageJson.version || "0.0.0";
659
- }
660
- catch {
661
- // package.jsonが存在しない場合はデフォルトバージョンを返す
662
- return "0.0.0";
663
- }
664
- }
665
- export function calculateNewVersion(currentVersion, versionBump) {
666
- const versionParts = currentVersion.split(".");
667
- const major = parseInt(versionParts[0] || "0", 10);
668
- const minor = parseInt(versionParts[1] || "0", 10);
669
- const patch = parseInt(versionParts[2] || "0", 10);
670
- switch (versionBump) {
671
- case "major":
672
- return `${major + 1}.0.0`;
673
- case "minor":
674
- return `${major}.${minor + 1}.0`;
675
- case "patch":
676
- return `${major}.${minor}.${patch + 1}`;
677
- }
678
- }
679
- export async function executeNpmVersionInWorktree(worktreePath, newVersion) {
680
- try {
681
- // まずpackage.jsonが存在するか確認
682
- const fs = await import("node:fs");
683
- const packageJsonPath = path.join(worktreePath, "package.json");
684
- if (!fs.existsSync(packageJsonPath)) {
685
- // package.jsonが存在しない場合は作成
686
- const packageJson = {
687
- name: path.basename(worktreePath),
688
- version: newVersion,
689
- description: "",
690
- main: "index.js",
691
- scripts: {},
692
- keywords: [],
693
- author: "",
694
- license: "ISC",
695
- };
696
- await fs.promises.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2) + "\n");
697
- // 新規作成したpackage.jsonをコミット
698
- await execa("git", ["add", "package.json"], { cwd: worktreePath });
699
- await execa("git", [
700
- "commit",
701
- "-m",
702
- `chore: create package.json with version ${newVersion}`,
703
- ], { cwd: worktreePath });
704
- }
705
- else {
706
- // package.json の version を直接書き換え(外部PMに依存しない)
707
- const content = await fs.promises.readFile(packageJsonPath, "utf-8");
708
- const json = JSON.parse(content);
709
- json.version = newVersion;
710
- await fs.promises.writeFile(packageJsonPath, JSON.stringify(json, null, 2) + "\n");
711
- // 変更をコミット
712
- await execa("git", ["add", "package.json"], { cwd: worktreePath });
713
- await execa("git", ["commit", "-m", `chore: bump version to ${newVersion}`], { cwd: worktreePath });
714
- }
715
- }
716
- catch (error) {
717
- // エラーの詳細情報を含める
718
- const errorMessage = error instanceof Error ? error.message : String(error);
719
- const stderr = typeof error === "object" && error !== null && "stderr" in error
720
- ? error.stderr
721
- : undefined;
722
- const stdout = typeof error === "object" && error !== null && "stdout" in error
723
- ? error.stdout
724
- : undefined;
725
- const errorDetails = stderr ? ` (stderr: ${stderr})` : "";
726
- const errorStdout = stdout ? ` (stdout: ${stdout})` : "";
727
- throw new GitError(`Failed to update version to ${newVersion} in worktree: ${errorMessage}${errorDetails}${errorStdout}`, error);
728
- }
729
- }
730
- export async function deleteRemoteBranch(branchName, remote = "origin") {
731
- try {
732
- await execa("git", ["push", remote, "--delete", branchName]);
733
- }
734
- catch (error) {
735
- throw new GitError(`Failed to delete remote branch ${remote}/${branchName}`, error);
736
- }
737
- }
738
- export async function getCurrentBranchName(worktreePath) {
739
- try {
740
- const { stdout } = await execa("git", ["branch", "--show-current"], {
741
- cwd: worktreePath,
742
- });
743
- return stdout.trim();
744
- }
745
- catch (error) {
746
- throw new GitError("Failed to get current branch name", error);
747
- }
748
- }
749
- export async function pushBranchToRemote(worktreePath, branchName, remote = "origin") {
750
- try {
751
- // Check if the remote branch exists
752
- const remoteBranchExists = await checkRemoteBranchExists(branchName, remote, { cwd: worktreePath });
753
- if (remoteBranchExists) {
754
- // Push to existing remote branch
755
- await execa("git", ["push", remote, branchName], { cwd: worktreePath });
756
- }
757
- else {
758
- // Push and set upstream for new remote branch
759
- await execa("git", ["push", "--set-upstream", remote, branchName], {
760
- cwd: worktreePath,
761
- });
762
- }
763
- }
764
- catch (error) {
765
- throw new GitError(`Failed to push branch ${branchName} to ${remote}`, error);
766
- }
767
- }
768
- export async function checkRemoteBranchExists(branchName, remote = "origin", options) {
769
- try {
770
- const execOptions = options?.cwd ? { cwd: options.cwd } : undefined;
771
- const args = [
772
- "show-ref",
773
- "--verify",
774
- "--quiet",
775
- `refs/remotes/${remote}/${branchName}`,
776
- ];
777
- if (execOptions) {
778
- await execa("git", args, execOptions);
779
- }
780
- else {
781
- await execa("git", args);
782
- }
783
- return true;
784
- }
785
- catch {
786
- return false;
787
- }
788
- }
789
- /**
790
- * 現在のディレクトリがworktreeディレクトリかどうかを確認
791
- * @returns {Promise<boolean>} worktreeディレクトリの場合true
792
- */
793
- export async function isInWorktree() {
794
- try {
795
- // git rev-parse --show-toplevelとgit rev-parse --git-common-dirの結果を比較
796
- const [toplevelResult, gitCommonDirResult] = await Promise.all([
797
- execa("git", ["rev-parse", "--show-toplevel"]),
798
- execa("git", ["rev-parse", "--git-common-dir"]),
799
- ]);
800
- const toplevel = toplevelResult.stdout.trim();
801
- const gitCommonDir = gitCommonDirResult.stdout.trim();
802
- // gitCommonDirが絶対パスで、toplevelと異なる親ディレクトリを持つ場合はworktree
803
- const path = await import("node:path");
804
- if (path.isAbsolute(gitCommonDir)) {
805
- const mainRepoRoot = path.dirname(gitCommonDir);
806
- return toplevel !== mainRepoRoot;
807
- }
808
- // gitCommonDirが相対パス(.git)の場合はメインリポジトリ
809
- return false;
810
- }
811
- catch {
812
- return false;
813
- }
814
- }
815
- /**
816
- * .gitignoreファイルに指定されたエントリーが存在することを保証します
817
- * エントリーが既に存在する場合は何もしません
818
- * @param {string} repoRoot - リポジトリのルートディレクトリ
819
- * @param {string} entry - 追加するエントリー(例: ".worktrees/")
820
- * @throws {GitError} ファイルの読み書きに失敗した場合
821
- */
822
- // ========================================
823
- // Batch Merge Operations (SPEC-ee33ca26)
824
- // ========================================
825
- /**
826
- * Merge from source branch to current branch in worktree
827
- * @param worktreePath - Path to worktree directory
828
- * @param sourceBranch - Source branch to merge from
829
- * @param dryRun - If true, use --no-commit flag for dry-run mode
830
- * @see specs/SPEC-ee33ca26/research.md - Decision 3: Dry-run implementation
831
- */
832
- export async function mergeFromBranch(worktreePath, sourceBranch, dryRun = false) {
833
- try {
834
- const args = ["merge"];
835
- if (dryRun) {
836
- args.push("--no-commit");
837
- }
838
- args.push(sourceBranch);
839
- await execa("git", args, { cwd: worktreePath });
840
- }
841
- catch (error) {
842
- throw new GitError(`Failed to merge from ${sourceBranch} in ${worktreePath}`, error);
843
- }
844
- }
845
- /**
846
- * Check if there is a merge in progress in worktree
847
- * @param worktreePath - Path to worktree directory
848
- * @returns true if MERGE_HEAD exists (merge in progress)
849
- * @see specs/SPEC-ee33ca26/research.md - Best practices: Git state confirmation
850
- */
851
- export async function hasMergeConflict(worktreePath) {
852
- try {
853
- await execa("git", ["rev-parse", "--git-path", "MERGE_HEAD"], {
854
- cwd: worktreePath,
855
- });
856
- return true;
857
- }
858
- catch {
859
- return false;
860
- }
861
- }
862
- /**
863
- * Abort current merge operation in worktree
864
- * @param worktreePath - Path to worktree directory
865
- * @see specs/SPEC-ee33ca26/research.md - Decision 3: Dry-run rollback
866
- */
867
- export async function abortMerge(worktreePath) {
868
- try {
869
- await execa("git", ["merge", "--abort"], { cwd: worktreePath });
870
- }
871
- catch (error) {
872
- throw new GitError(`Failed to abort merge in ${worktreePath}`, error);
873
- }
874
- }
875
- /**
876
- * Get current merge status in worktree
877
- * @param worktreePath - Path to worktree directory
878
- * @returns Object with inProgress and hasConflict flags
879
- * @see specs/SPEC-ee33ca26/research.md - Best practices: Git state confirmation
880
- */
881
- export async function getMergeStatus(worktreePath) {
882
- // Check if merge is in progress (MERGE_HEAD exists)
883
- const inProgress = await hasMergeConflict(worktreePath);
884
- // Check if there are conflicts (git status --porcelain shows UU)
885
- let hasConflict = false;
886
- if (inProgress) {
887
- try {
888
- const { stdout } = await execa("git", ["status", "--porcelain"], {
889
- cwd: worktreePath,
890
- });
891
- // UU indicates unmerged paths (conflicts)
892
- hasConflict = stdout.includes("UU ");
893
- }
894
- catch {
895
- hasConflict = false;
896
- }
897
- }
898
- return {
899
- inProgress,
900
- hasConflict,
901
- };
902
- }
903
- /**
904
- * Reset worktree to HEAD (rollback all changes)
905
- * Used for dry-run cleanup after git merge --no-commit
906
- * @param worktreePath - Path to worktree directory
907
- * @see specs/SPEC-ee33ca26/research.md - Dry-run implementation: --no-commit + rollback
908
- */
909
- export async function resetToHead(worktreePath) {
910
- try {
911
- await execa("git", ["reset", "--hard", "HEAD"], {
912
- cwd: worktreePath,
913
- });
914
- }
915
- catch (error) {
916
- throw new GitError(`Failed to reset worktree to HEAD in ${worktreePath}`, error);
917
- }
918
- }
919
- export async function getBranchDivergenceStatuses(options) {
920
- const cwd = options?.cwd;
921
- const remote = options?.remote ?? "origin";
922
- const execOptions = cwd ? { cwd } : undefined;
923
- const branchFilter = options?.branches?.filter((name) => name.trim().length > 0);
924
- const filterSet = branchFilter && branchFilter.length > 0 ? new Set(branchFilter) : null;
925
- const branchArgs = ["branch", "--format=%(refname:short)"];
926
- const { stdout: localBranchOutput } = execOptions
927
- ? await execa("git", branchArgs, execOptions)
928
- : await execa("git", branchArgs);
929
- const branchNames = localBranchOutput
930
- .split("\n")
931
- .map((name) => name.trim())
932
- .filter(Boolean)
933
- .filter((name) => !filterSet || filterSet.has(name));
934
- if (filterSet && branchNames.length === 0) {
935
- return [];
936
- }
937
- const results = [];
938
- for (const branchName of branchNames) {
939
- const remoteExists = await checkRemoteBranchExists(branchName, remote, cwd ? { cwd } : undefined);
940
- if (!remoteExists) {
941
- continue;
942
- }
943
- try {
944
- const revListArgs = [
945
- "rev-list",
946
- "--left-right",
947
- "--count",
948
- `${remote}/${branchName}...${branchName}`,
949
- ];
950
- const { stdout } = execOptions
951
- ? await execa("git", revListArgs, execOptions)
952
- : await execa("git", revListArgs);
953
- const [remoteAheadRaw, localAheadRaw] = stdout.trim().split(/\s+/);
954
- const remoteAhead = Number.parseInt(remoteAheadRaw || "0", 10) || 0;
955
- const localAhead = Number.parseInt(localAheadRaw || "0", 10) || 0;
956
- results.push({ branch: branchName, remoteAhead, localAhead });
957
- }
958
- catch (error) {
959
- throw new GitError(`Failed to inspect divergence for ${branchName}`, error);
960
- }
961
- }
962
- return results;
963
- }
964
- export async function pullFastForward(worktreePath, remote = "origin") {
965
- try {
966
- await execa("git", ["pull", "--ff-only", remote], {
967
- cwd: worktreePath,
968
- });
969
- }
970
- catch (error) {
971
- throw new GitError(`Failed to fast-forward pull in ${worktreePath}`, error);
972
- }
973
- }
974
- export async function ensureGitignoreEntry(repoRoot, entry) {
975
- const fs = await import("node:fs/promises");
976
- const gitignorePath = path.join(repoRoot, ".gitignore");
977
- try {
978
- // .gitignoreファイルを読み込む(存在しない場合は空文字列)
979
- let content = "";
980
- let eol = "\n";
981
- try {
982
- content = await fs.readFile(gitignorePath, "utf-8");
983
- if (content.includes("\r\n")) {
984
- eol = "\r\n";
985
- }
986
- }
987
- catch (error) {
988
- // ENOENTエラー(ファイルが存在しない)は無視
989
- const code = typeof error === "object" && error !== null && "code" in error
990
- ? error.code
991
- : undefined;
992
- if (code !== "ENOENT") {
993
- throw error;
994
- }
995
- }
996
- const normalizedEntry = entry.trim();
997
- const normalizedLines = content.split(/\r?\n/).map((line) => line.trim());
998
- if (normalizedLines.includes(normalizedEntry)) {
999
- // 既に存在する場合は何もしない
1000
- return;
1001
- }
1002
- const needsSeparator = content.length > 0 && !content.endsWith("\n") && !content.endsWith("\r");
1003
- const separator = needsSeparator ? eol : "";
1004
- const newContent = `${content}${separator}${entry}${eol}`;
1005
- await fs.writeFile(gitignorePath, newContent, "utf-8");
1006
- }
1007
- catch (error) {
1008
- const message = error instanceof Error ? error.message : String(error);
1009
- throw new GitError(`Failed to update .gitignore: ${message}`, error);
1010
- }
1011
- }
1012
- //# sourceMappingURL=git.js.map