@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,112 @@
1
+ /**
2
+ * Terminal Component
3
+ *
4
+ * xterm.jsを使用したブラウザ端末エミュレータ。
5
+ * WebSocket経由でPTYプロセスと通信します。
6
+ */
7
+ import React, { useEffect, useRef } from "react";
8
+ import { Terminal as XTerm } from "xterm";
9
+ import { FitAddon } from "xterm-addon-fit";
10
+ import { PTYWebSocket } from "../lib/websocket";
11
+ import "xterm/css/xterm.css";
12
+ export function Terminal({ sessionId, onExit, onError }) {
13
+ const terminalRef = useRef(null);
14
+ const xtermRef = useRef(null);
15
+ const fitAddonRef = useRef(null);
16
+ const wsRef = useRef(null);
17
+ useEffect(() => {
18
+ if (!terminalRef.current) {
19
+ return;
20
+ }
21
+ // xterm.jsのインスタンスを作成
22
+ const xterm = new XTerm({
23
+ cursorBlink: true,
24
+ fontSize: 14,
25
+ fontFamily: '"Cascadia Code", "SF Mono", Monaco, Consolas, monospace',
26
+ theme: {
27
+ background: "#1e1e1e",
28
+ foreground: "#d4d4d4",
29
+ cursor: "#aeafad",
30
+ black: "#000000",
31
+ red: "#cd3131",
32
+ green: "#0dbc79",
33
+ yellow: "#e5e510",
34
+ blue: "#2472c8",
35
+ magenta: "#bc3fbc",
36
+ cyan: "#11a8cd",
37
+ white: "#e5e5e5",
38
+ brightBlack: "#666666",
39
+ brightRed: "#f14c4c",
40
+ brightGreen: "#23d18b",
41
+ brightYellow: "#f5f543",
42
+ brightBlue: "#3b8eea",
43
+ brightMagenta: "#d670d6",
44
+ brightCyan: "#29b8db",
45
+ brightWhite: "#ffffff",
46
+ },
47
+ });
48
+ // FitAddonを追加
49
+ const fitAddon = new FitAddon();
50
+ xterm.loadAddon(fitAddon);
51
+ // ターミナルをDOMにマウント
52
+ xterm.open(terminalRef.current);
53
+ fitAddon.fit();
54
+ xtermRef.current = xterm;
55
+ fitAddonRef.current = fitAddon;
56
+ // WebSocket接続を確立
57
+ const ws = new PTYWebSocket(sessionId, {
58
+ onOutput: (data) => {
59
+ xterm.write(data);
60
+ },
61
+ onExit: (code) => {
62
+ xterm.write(`\r\n\r\n[Process exited with code ${code}]\r\n`);
63
+ onExit?.(code);
64
+ },
65
+ onError: (message) => {
66
+ xterm.write(`\r\n\r\n[Error: ${message}]\r\n`);
67
+ onError?.(message);
68
+ },
69
+ onOpen: () => {
70
+ xterm.write("Connected to session...\r\n");
71
+ },
72
+ onClose: () => {
73
+ xterm.write("\r\n[Connection closed]\r\n");
74
+ },
75
+ });
76
+ ws.connect();
77
+ wsRef.current = ws;
78
+ // ユーザー入力をWebSocketに送信
79
+ xterm.onData((data) => {
80
+ ws.sendInput(data);
81
+ });
82
+ // ウィンドウリサイズ時にターミナルサイズを調整
83
+ const handleResize = () => {
84
+ fitAddon.fit();
85
+ if (ws.isConnected()) {
86
+ ws.sendResize(xterm.cols, xterm.rows);
87
+ }
88
+ };
89
+ window.addEventListener("resize", handleResize);
90
+ let resizeObserver = null;
91
+ if (typeof ResizeObserver !== "undefined") {
92
+ resizeObserver = new ResizeObserver(() => {
93
+ handleResize();
94
+ });
95
+ resizeObserver.observe(terminalRef.current);
96
+ }
97
+ // クリーンアップ
98
+ return () => {
99
+ window.removeEventListener("resize", handleResize);
100
+ resizeObserver?.disconnect();
101
+ ws.disconnect();
102
+ xterm.dispose();
103
+ };
104
+ }, [sessionId, onExit, onError]);
105
+ return (React.createElement("div", { ref: terminalRef, style: {
106
+ width: "100%",
107
+ height: "100%",
108
+ padding: "8px",
109
+ backgroundColor: "#1e1e1e",
110
+ } }));
111
+ }
112
+ //# sourceMappingURL=Terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Terminal.js","sourceRoot":"","sources":["../../../../../src/web/client/src/components/Terminal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * ブランチ関連のReact Hook
3
+ */
4
+ import type { Branch } from "../../../../types/api.js";
5
+ /**
6
+ * ブランチ一覧を取得
7
+ */
8
+ export declare function useBranches(): import("@tanstack/react-query").UseQueryResult<Branch[], Error>;
9
+ /**
10
+ * 特定のブランチ情報を取得
11
+ */
12
+ export declare function useBranch(branchName: string): import("@tanstack/react-query").UseQueryResult<Branch, Error>;
13
+ export declare function useSyncBranch(branchName: string): import("@tanstack/react-query").UseMutationResult<import("../../../../types/api.js").BranchSyncResult, Error, {
14
+ worktreePath: string;
15
+ }, unknown>;
16
+ //# sourceMappingURL=useBranches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBranches.d.ts","sourceRoot":"","sources":["../../../../../src/web/client/src/hooks/useBranches.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;GAEG;AACH,wBAAgB,WAAW,oEAK1B;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,iEAM3C;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM;kBAIN,MAAM;YAO/C"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * ブランチ関連のReact Hook
3
+ */
4
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
5
+ import { branchApi } from "../lib/api";
6
+ /**
7
+ * ブランチ一覧を取得
8
+ */
9
+ export function useBranches() {
10
+ return useQuery({
11
+ queryKey: ["branches"],
12
+ queryFn: branchApi.list,
13
+ });
14
+ }
15
+ /**
16
+ * 特定のブランチ情報を取得
17
+ */
18
+ export function useBranch(branchName) {
19
+ return useQuery({
20
+ queryKey: ["branches", branchName],
21
+ queryFn: () => branchApi.get(branchName),
22
+ enabled: !!branchName,
23
+ });
24
+ }
25
+ export function useSyncBranch(branchName) {
26
+ const queryClient = useQueryClient();
27
+ return useMutation({
28
+ mutationFn: (payload) => branchApi.sync(branchName, payload),
29
+ onSuccess: (result) => {
30
+ queryClient.setQueryData(["branches", branchName], result.branch);
31
+ queryClient.invalidateQueries({ queryKey: ["branches"] });
32
+ },
33
+ });
34
+ }
35
+ //# sourceMappingURL=useBranches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBranches.js","sourceRoot":"","sources":["../../../../../src/web/client/src/hooks/useBranches.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,QAAQ,CAAW;QACxB,QAAQ,EAAE,CAAC,UAAU,CAAC;QACtB,OAAO,EAAE,SAAS,CAAC,IAAI;KACxB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,UAAkB;IAC1C,OAAO,QAAQ,CAAS;QACtB,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;QAClC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;QACxC,OAAO,EAAE,CAAC,CAAC,UAAU;KACtB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,CAAC,OAAiC,EAAE,EAAE,CAChD,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;QACrC,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;YACpB,WAAW,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAClE,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Config Hooks
3
+ */
4
+ import type { ConfigPayload } from "../../../../types/api.js";
5
+ /**
6
+ * カスタムAIツール設定を取得
7
+ */
8
+ export declare function useConfig(): import("@tanstack/react-query").UseQueryResult<ConfigPayload, Error>;
9
+ /**
10
+ * カスタムAIツール設定を更新
11
+ */
12
+ export declare function useUpdateConfig(): import("@tanstack/react-query").UseMutationResult<ConfigPayload, Error, ConfigPayload, unknown>;
13
+ //# sourceMappingURL=useConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConfig.d.ts","sourceRoot":"","sources":["../../../../../src/web/client/src/hooks/useConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;GAEG;AACH,wBAAgB,SAAS,yEAKxB;AAED;;GAEG;AACH,wBAAgB,eAAe,oGAS9B"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Config Hooks
3
+ */
4
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
5
+ import { configApi } from "../lib/api";
6
+ /**
7
+ * カスタムAIツール設定を取得
8
+ */
9
+ export function useConfig() {
10
+ return useQuery({
11
+ queryKey: ["config"],
12
+ queryFn: configApi.get,
13
+ });
14
+ }
15
+ /**
16
+ * カスタムAIツール設定を更新
17
+ */
18
+ export function useUpdateConfig() {
19
+ const queryClient = useQueryClient();
20
+ return useMutation({
21
+ mutationFn: configApi.update,
22
+ onSuccess: (data) => {
23
+ queryClient.setQueryData(["config"], data);
24
+ },
25
+ });
26
+ }
27
+ //# sourceMappingURL=useConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConfig.js","sourceRoot":"","sources":["../../../../../src/web/client/src/hooks/useConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,QAAQ,CAAgB;QAC7B,QAAQ,EAAE,CAAC,QAAQ,CAAC;QACpB,OAAO,EAAE,SAAS,CAAC,GAAG;KACvB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,SAAS,CAAC,MAAM;QAC5B,SAAS,EAAE,CAAC,IAAmB,EAAE,EAAE;YACjC,WAAW,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * セッション関連のReact Hook
3
+ */
4
+ import type { AIToolSession, StartSessionRequest } from "../../../../types/api.js";
5
+ /**
6
+ * セッション一覧を取得
7
+ */
8
+ export declare function useSessions(): import("@tanstack/react-query").UseQueryResult<AIToolSession[], Error>;
9
+ /**
10
+ * 特定のセッション情報を取得
11
+ */
12
+ export declare function useSession(sessionId: string): import("@tanstack/react-query").UseQueryResult<AIToolSession, Error>;
13
+ /**
14
+ * セッションを開始
15
+ */
16
+ export declare function useStartSession(): import("@tanstack/react-query").UseMutationResult<AIToolSession, Error, StartSessionRequest, unknown>;
17
+ /**
18
+ * セッションを終了
19
+ */
20
+ export declare function useDeleteSession(): import("@tanstack/react-query").UseMutationResult<void, Error, string, unknown>;
21
+ //# sourceMappingURL=useSessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSessions.d.ts","sourceRoot":"","sources":["../../../../../src/web/client/src/hooks/useSessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC;;GAEG;AACH,wBAAgB,WAAW,2EAK1B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,wEAM3C;AAED;;GAEG;AACH,wBAAgB,eAAe,0GAS9B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,oFAS/B"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * セッション関連のReact Hook
3
+ */
4
+ import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
5
+ import { sessionApi } from "../lib/api";
6
+ /**
7
+ * セッション一覧を取得
8
+ */
9
+ export function useSessions() {
10
+ return useQuery({
11
+ queryKey: ["sessions"],
12
+ queryFn: sessionApi.list,
13
+ });
14
+ }
15
+ /**
16
+ * 特定のセッション情報を取得
17
+ */
18
+ export function useSession(sessionId) {
19
+ return useQuery({
20
+ queryKey: ["sessions", sessionId],
21
+ queryFn: () => sessionApi.get(sessionId),
22
+ enabled: !!sessionId,
23
+ });
24
+ }
25
+ /**
26
+ * セッションを開始
27
+ */
28
+ export function useStartSession() {
29
+ const queryClient = useQueryClient();
30
+ return useMutation({
31
+ mutationFn: (request) => sessionApi.start(request),
32
+ onSuccess: () => {
33
+ queryClient.invalidateQueries({ queryKey: ["sessions"] });
34
+ },
35
+ });
36
+ }
37
+ /**
38
+ * セッションを終了
39
+ */
40
+ export function useDeleteSession() {
41
+ const queryClient = useQueryClient();
42
+ return useMutation({
43
+ mutationFn: (sessionId) => sessionApi.delete(sessionId),
44
+ onSuccess: () => {
45
+ queryClient.invalidateQueries({ queryKey: ["sessions"] });
46
+ },
47
+ });
48
+ }
49
+ //# sourceMappingURL=useSessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSessions.js","sourceRoot":"","sources":["../../../../../src/web/client/src/hooks/useSessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMxC;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,QAAQ,CAAkB;QAC/B,QAAQ,EAAE,CAAC,UAAU,CAAC;QACtB,OAAO,EAAE,UAAU,CAAC,IAAI;KACzB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,OAAO,QAAQ,CAAgB;QAC7B,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;QACjC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;QACxC,OAAO,EAAE,CAAC,CAAC,SAAS;KACrB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,CAAC,OAA4B,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;QACvE,SAAS,EAAE,GAAG,EAAE;YACd,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;QAC/D,SAAS,EAAE,GAAG,EAAE;YACd,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Worktree関連のReact Hook
3
+ */
4
+ import type { Worktree, CreateWorktreeRequest } from "../../../../types/api.js";
5
+ /**
6
+ * Worktree一覧を取得
7
+ */
8
+ export declare function useWorktrees(): import("@tanstack/react-query").UseQueryResult<Worktree[], Error>;
9
+ /**
10
+ * Worktreeを作成
11
+ */
12
+ export declare function useCreateWorktree(): import("@tanstack/react-query").UseMutationResult<Worktree, Error, CreateWorktreeRequest, unknown>;
13
+ /**
14
+ * Worktreeを削除
15
+ */
16
+ export declare function useDeleteWorktree(): import("@tanstack/react-query").UseMutationResult<void, Error, string, unknown>;
17
+ //# sourceMappingURL=useWorktrees.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorktrees.d.ts","sourceRoot":"","sources":["../../../../../src/web/client/src/hooks/useWorktrees.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEhF;;GAEG;AACH,wBAAgB,YAAY,sEAK3B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,uGAUhC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,oFAUhC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Worktree関連のReact Hook
3
+ */
4
+ import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
5
+ import { worktreeApi } from "../lib/api";
6
+ /**
7
+ * Worktree一覧を取得
8
+ */
9
+ export function useWorktrees() {
10
+ return useQuery({
11
+ queryKey: ["worktrees"],
12
+ queryFn: worktreeApi.list,
13
+ });
14
+ }
15
+ /**
16
+ * Worktreeを作成
17
+ */
18
+ export function useCreateWorktree() {
19
+ const queryClient = useQueryClient();
20
+ return useMutation({
21
+ mutationFn: (request) => worktreeApi.create(request),
22
+ onSuccess: () => {
23
+ queryClient.invalidateQueries({ queryKey: ["worktrees"] });
24
+ queryClient.invalidateQueries({ queryKey: ["branches"] });
25
+ },
26
+ });
27
+ }
28
+ /**
29
+ * Worktreeを削除
30
+ */
31
+ export function useDeleteWorktree() {
32
+ const queryClient = useQueryClient();
33
+ return useMutation({
34
+ mutationFn: (path) => worktreeApi.delete(path),
35
+ onSuccess: () => {
36
+ queryClient.invalidateQueries({ queryKey: ["worktrees"] });
37
+ queryClient.invalidateQueries({ queryKey: ["branches"] });
38
+ },
39
+ });
40
+ }
41
+ //# sourceMappingURL=useWorktrees.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorktrees.js","sourceRoot":"","sources":["../../../../../src/web/client/src/hooks/useWorktrees.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,QAAQ,CAAa;QAC1B,QAAQ,EAAE,CAAC,WAAW,CAAC;QACvB,OAAO,EAAE,WAAW,CAAC,IAAI;KAC1B,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,CAAC,OAA8B,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3E,SAAS,EAAE,GAAG,EAAE;YACd,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC3D,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;QACtD,SAAS,EAAE,GAAG,EAAE;YACd,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC3D,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * REST API Client
3
+ *
4
+ * バックエンドのREST APIと通信するクライアント。
5
+ * 仕様: specs/SPEC-d5e56259/contracts/rest-api.yaml
6
+ */
7
+ import type { Branch, Worktree, AIToolSession, HealthResponse, CreateWorktreeRequest, StartSessionRequest, BranchSyncRequest, BranchSyncResult, ConfigPayload } from "../../../../types/api.js";
8
+ /**
9
+ * APIエラー
10
+ */
11
+ export declare class ApiError extends Error {
12
+ statusCode: number;
13
+ details?: string | null | undefined;
14
+ constructor(message: string, statusCode: number, details?: string | null | undefined);
15
+ }
16
+ /**
17
+ * ヘルスチェック
18
+ */
19
+ export declare function checkHealth(): Promise<HealthResponse>;
20
+ /**
21
+ * ブランチAPI
22
+ */
23
+ export declare const branchApi: {
24
+ /**
25
+ * すべてのブランチ一覧を取得
26
+ */
27
+ list: () => Promise<Branch[]>;
28
+ /**
29
+ * 特定のブランチ情報を取得
30
+ */
31
+ get: (branchName: string) => Promise<Branch>;
32
+ sync: (branchName: string, payload: BranchSyncRequest) => Promise<BranchSyncResult>;
33
+ };
34
+ /**
35
+ * WorktreeAPI
36
+ */
37
+ export declare const worktreeApi: {
38
+ /**
39
+ * すべてのWorktree一覧を取得
40
+ */
41
+ list: () => Promise<Worktree[]>;
42
+ /**
43
+ * 新しいWorktreeを作成
44
+ */
45
+ create: (request: CreateWorktreeRequest) => Promise<Worktree>;
46
+ /**
47
+ * Worktreeを削除
48
+ */
49
+ delete: (path: string) => Promise<void>;
50
+ };
51
+ /**
52
+ * セッションAPI
53
+ */
54
+ export declare const sessionApi: {
55
+ /**
56
+ * すべてのセッション一覧を取得
57
+ */
58
+ list: () => Promise<AIToolSession[]>;
59
+ /**
60
+ * 新しいセッションを開始
61
+ */
62
+ start: (request: StartSessionRequest) => Promise<AIToolSession>;
63
+ /**
64
+ * 特定のセッション情報を取得
65
+ */
66
+ get: (sessionId: string) => Promise<AIToolSession>;
67
+ /**
68
+ * セッションを終了
69
+ */
70
+ delete: (sessionId: string) => Promise<void>;
71
+ };
72
+ /**
73
+ * 設定API
74
+ */
75
+ export declare const configApi: {
76
+ /**
77
+ * カスタムAI Tool設定を取得
78
+ */
79
+ get: () => Promise<ConfigPayload>;
80
+ update: (request: ConfigPayload) => Promise<ConfigPayload>;
81
+ };
82
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../src/web/client/src/lib/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,QAAQ,EACR,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACd,MAAM,0BAA0B,CAAC;AAIlC;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAGxB,UAAU,EAAE,MAAM;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;gBAF9B,OAAO,EAAE,MAAM,EACR,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,YAAA;CAKjC;AA2BD;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,CAG3D;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;OAEG;gBACa,OAAO,CAAC,MAAM,EAAE,CAAC;IAIjC;;OAEG;sBACqB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;uBAMlC,MAAM,WACT,iBAAiB,KACzB,OAAO,CAAC,gBAAgB,CAAC;CAO7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW;IACtB;;OAEG;gBACa,OAAO,CAAC,QAAQ,EAAE,CAAC;IAInC;;OAEG;sBACqB,qBAAqB,KAAG,OAAO,CAAC,QAAQ,CAAC;IAOjE;;OAEG;mBACkB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;CAO5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU;IACrB;;OAEG;gBACa,OAAO,CAAC,aAAa,EAAE,CAAC;IAIxC;;OAEG;qBACoB,mBAAmB,KAAG,OAAO,CAAC,aAAa,CAAC;IAOnE;;OAEG;qBACoB,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC;IAItD;;OAEG;wBACuB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;CAKjD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;OAEG;eACY,OAAO,CAAC,aAAa,CAAC;sBACb,aAAa,KAAG,OAAO,CAAC,aAAa,CAAC;CAK/D,CAAC"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * REST API Client
3
+ *
4
+ * バックエンドのREST APIと通信するクライアント。
5
+ * 仕様: specs/SPEC-d5e56259/contracts/rest-api.yaml
6
+ */
7
+ const API_BASE = "/api";
8
+ /**
9
+ * APIエラー
10
+ */
11
+ export class ApiError extends Error {
12
+ statusCode;
13
+ details;
14
+ constructor(message, statusCode, details) {
15
+ super(message);
16
+ this.statusCode = statusCode;
17
+ this.details = details;
18
+ this.name = "ApiError";
19
+ }
20
+ }
21
+ /**
22
+ * fetchラッパー - エラーハンドリングとJSON解析
23
+ */
24
+ async function apiFetch(url, options) {
25
+ const response = await fetch(url, {
26
+ ...options,
27
+ headers: {
28
+ "Content-Type": "application/json",
29
+ ...options?.headers,
30
+ },
31
+ });
32
+ const data = await response.json();
33
+ if (!response.ok || !data.success) {
34
+ throw new ApiError(data.error || "API request failed", response.status, data.details);
35
+ }
36
+ return data.data;
37
+ }
38
+ /**
39
+ * ヘルスチェック
40
+ */
41
+ export async function checkHealth() {
42
+ const response = await fetch(`${API_BASE}/health`);
43
+ return response.json();
44
+ }
45
+ /**
46
+ * ブランチAPI
47
+ */
48
+ export const branchApi = {
49
+ /**
50
+ * すべてのブランチ一覧を取得
51
+ */
52
+ list: async () => {
53
+ return apiFetch(`${API_BASE}/branches`);
54
+ },
55
+ /**
56
+ * 特定のブランチ情報を取得
57
+ */
58
+ get: async (branchName) => {
59
+ const encoded = encodeURIComponent(branchName);
60
+ return apiFetch(`${API_BASE}/branches/${encoded}`);
61
+ },
62
+ sync: async (branchName, payload) => {
63
+ const encoded = encodeURIComponent(branchName);
64
+ return apiFetch(`${API_BASE}/branches/${encoded}/sync`, {
65
+ method: "POST",
66
+ body: JSON.stringify(payload),
67
+ });
68
+ },
69
+ };
70
+ /**
71
+ * WorktreeAPI
72
+ */
73
+ export const worktreeApi = {
74
+ /**
75
+ * すべてのWorktree一覧を取得
76
+ */
77
+ list: async () => {
78
+ return apiFetch(`${API_BASE}/worktrees`);
79
+ },
80
+ /**
81
+ * 新しいWorktreeを作成
82
+ */
83
+ create: async (request) => {
84
+ return apiFetch(`${API_BASE}/worktrees`, {
85
+ method: "POST",
86
+ body: JSON.stringify(request),
87
+ });
88
+ },
89
+ /**
90
+ * Worktreeを削除
91
+ */
92
+ delete: async (path) => {
93
+ const url = new URL(`${API_BASE}/worktrees/delete`, window.location.origin);
94
+ url.searchParams.set("path", path);
95
+ await apiFetch(url.toString(), {
96
+ method: "DELETE",
97
+ });
98
+ },
99
+ };
100
+ /**
101
+ * セッションAPI
102
+ */
103
+ export const sessionApi = {
104
+ /**
105
+ * すべてのセッション一覧を取得
106
+ */
107
+ list: async () => {
108
+ return apiFetch(`${API_BASE}/sessions`);
109
+ },
110
+ /**
111
+ * 新しいセッションを開始
112
+ */
113
+ start: async (request) => {
114
+ return apiFetch(`${API_BASE}/sessions`, {
115
+ method: "POST",
116
+ body: JSON.stringify(request),
117
+ });
118
+ },
119
+ /**
120
+ * 特定のセッション情報を取得
121
+ */
122
+ get: async (sessionId) => {
123
+ return apiFetch(`${API_BASE}/sessions/${sessionId}`);
124
+ },
125
+ /**
126
+ * セッションを終了
127
+ */
128
+ delete: async (sessionId) => {
129
+ await apiFetch(`${API_BASE}/sessions/${sessionId}`, {
130
+ method: "DELETE",
131
+ });
132
+ },
133
+ };
134
+ /**
135
+ * 設定API
136
+ */
137
+ export const configApi = {
138
+ /**
139
+ * カスタムAI Tool設定を取得
140
+ */
141
+ get: async () => apiFetch(`${API_BASE}/config`),
142
+ update: async (request) => apiFetch(`${API_BASE}/config`, {
143
+ method: "PUT",
144
+ body: JSON.stringify(request),
145
+ }),
146
+ };
147
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../../src/web/client/src/lib/api.ts"],"names":[],"mappings":"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"}