@akiojin/gwt 2.0.0 → 2.0.1
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.
- package/dist/claude-history.d.ts +60 -0
- package/dist/claude-history.d.ts.map +1 -0
- package/dist/claude-history.js +606 -0
- package/dist/claude-history.js.map +1 -0
- package/dist/claude.d.ts +12 -0
- package/dist/claude.d.ts.map +1 -0
- package/dist/claude.js +222 -0
- package/dist/claude.js.map +1 -0
- package/dist/cli/ui/components/App.d.ts +22 -0
- package/dist/cli/ui/components/App.d.ts.map +1 -0
- package/dist/cli/ui/components/App.js +557 -0
- package/dist/cli/ui/components/App.js.map +1 -0
- package/dist/cli/ui/components/common/Confirm.d.ts +13 -0
- package/dist/cli/ui/components/common/Confirm.d.ts.map +1 -0
- package/dist/cli/ui/components/common/Confirm.js +20 -0
- package/dist/cli/ui/components/common/Confirm.js.map +1 -0
- package/dist/cli/ui/components/common/ErrorBoundary.d.ts +23 -0
- package/dist/cli/ui/components/common/ErrorBoundary.d.ts.map +1 -0
- package/dist/cli/ui/components/common/ErrorBoundary.js +37 -0
- package/dist/cli/ui/components/common/ErrorBoundary.js.map +1 -0
- package/dist/cli/ui/components/common/Input.d.ts +14 -0
- package/dist/cli/ui/components/common/Input.d.ts.map +1 -0
- package/dist/cli/ui/components/common/Input.js +14 -0
- package/dist/cli/ui/components/common/Input.js.map +1 -0
- package/dist/cli/ui/components/common/LoadingIndicator.d.ts +19 -0
- package/dist/cli/ui/components/common/LoadingIndicator.d.ts.map +1 -0
- package/dist/cli/ui/components/common/LoadingIndicator.js +61 -0
- package/dist/cli/ui/components/common/LoadingIndicator.js.map +1 -0
- package/dist/cli/ui/components/common/Select.d.ts +30 -0
- package/dist/cli/ui/components/common/Select.d.ts.map +1 -0
- package/dist/cli/ui/components/common/Select.js +140 -0
- package/dist/cli/ui/components/common/Select.js.map +1 -0
- package/dist/cli/ui/components/parts/Footer.d.ts +15 -0
- package/dist/cli/ui/components/parts/Footer.d.ts.map +1 -0
- package/dist/cli/ui/components/parts/Footer.js +20 -0
- package/dist/cli/ui/components/parts/Footer.js.map +1 -0
- package/dist/cli/ui/components/parts/Header.d.ts +29 -0
- package/dist/cli/ui/components/parts/Header.d.ts.map +1 -0
- package/dist/cli/ui/components/parts/Header.js +19 -0
- package/dist/cli/ui/components/parts/Header.js.map +1 -0
- package/dist/cli/ui/components/parts/MergeStatusList.d.ts +13 -0
- package/dist/cli/ui/components/parts/MergeStatusList.d.ts.map +1 -0
- package/dist/cli/ui/components/parts/MergeStatusList.js +52 -0
- package/dist/cli/ui/components/parts/MergeStatusList.js.map +1 -0
- package/dist/cli/ui/components/parts/ProgressBar.d.ts +13 -0
- package/dist/cli/ui/components/parts/ProgressBar.d.ts.map +1 -0
- package/dist/cli/ui/components/parts/ProgressBar.js +53 -0
- package/dist/cli/ui/components/parts/ProgressBar.js.map +1 -0
- package/dist/cli/ui/components/parts/ScrollableList.d.ts +12 -0
- package/dist/cli/ui/components/parts/ScrollableList.d.ts.map +1 -0
- package/dist/cli/ui/components/parts/ScrollableList.js +11 -0
- package/dist/cli/ui/components/parts/ScrollableList.js.map +1 -0
- package/dist/cli/ui/components/parts/Stats.d.ts +13 -0
- package/dist/cli/ui/components/parts/Stats.d.ts.map +1 -0
- package/dist/cli/ui/components/parts/Stats.js +42 -0
- package/dist/cli/ui/components/parts/Stats.js.map +1 -0
- package/dist/cli/ui/components/screens/AIToolSelectorScreen.d.ts +20 -0
- package/dist/cli/ui/components/screens/AIToolSelectorScreen.d.ts.map +1 -0
- package/dist/cli/ui/components/screens/AIToolSelectorScreen.js +77 -0
- package/dist/cli/ui/components/screens/AIToolSelectorScreen.js.map +1 -0
- package/dist/cli/ui/components/screens/BatchMergeProgressScreen.d.ts +14 -0
- package/dist/cli/ui/components/screens/BatchMergeProgressScreen.d.ts.map +1 -0
- package/dist/cli/ui/components/screens/BatchMergeProgressScreen.js +41 -0
- package/dist/cli/ui/components/screens/BatchMergeProgressScreen.js.map +1 -0
- package/dist/cli/ui/components/screens/BatchMergeResultScreen.d.ts +14 -0
- package/dist/cli/ui/components/screens/BatchMergeResultScreen.d.ts.map +1 -0
- package/dist/cli/ui/components/screens/BatchMergeResultScreen.js +71 -0
- package/dist/cli/ui/components/screens/BatchMergeResultScreen.js.map +1 -0
- package/dist/cli/ui/components/screens/BranchCreatorScreen.d.ts +15 -0
- package/dist/cli/ui/components/screens/BranchCreatorScreen.d.ts.map +1 -0
- package/dist/cli/ui/components/screens/BranchCreatorScreen.js +142 -0
- package/dist/cli/ui/components/screens/BranchCreatorScreen.js.map +1 -0
- package/dist/cli/ui/components/screens/BranchListScreen.d.ts +39 -0
- package/dist/cli/ui/components/screens/BranchListScreen.d.ts.map +1 -0
- package/dist/cli/ui/components/screens/BranchListScreen.js +172 -0
- package/dist/cli/ui/components/screens/BranchListScreen.js.map +1 -0
- package/dist/cli/ui/components/screens/ExecutionModeSelectorScreen.d.ts +29 -0
- package/dist/cli/ui/components/screens/ExecutionModeSelectorScreen.d.ts.map +1 -0
- package/dist/cli/ui/components/screens/ExecutionModeSelectorScreen.js +92 -0
- package/dist/cli/ui/components/screens/ExecutionModeSelectorScreen.js.map +1 -0
- package/dist/cli/ui/components/screens/PRCleanupScreen.d.ts +23 -0
- package/dist/cli/ui/components/screens/PRCleanupScreen.d.ts.map +1 -0
- package/dist/cli/ui/components/screens/PRCleanupScreen.js +94 -0
- package/dist/cli/ui/components/screens/PRCleanupScreen.js.map +1 -0
- package/dist/cli/ui/components/screens/SessionSelectorScreen.d.ts +17 -0
- package/dist/cli/ui/components/screens/SessionSelectorScreen.d.ts.map +1 -0
- package/dist/cli/ui/components/screens/SessionSelectorScreen.js +55 -0
- package/dist/cli/ui/components/screens/SessionSelectorScreen.js.map +1 -0
- package/dist/cli/ui/components/screens/WorktreeManagerScreen.d.ts +20 -0
- package/dist/cli/ui/components/screens/WorktreeManagerScreen.d.ts.map +1 -0
- package/dist/cli/ui/components/screens/WorktreeManagerScreen.js +65 -0
- package/dist/cli/ui/components/screens/WorktreeManagerScreen.js.map +1 -0
- package/dist/cli/ui/hooks/useBatchMerge.d.ts +17 -0
- package/dist/cli/ui/hooks/useBatchMerge.d.ts.map +1 -0
- package/dist/cli/ui/hooks/useBatchMerge.js +77 -0
- package/dist/cli/ui/hooks/useBatchMerge.js.map +1 -0
- package/dist/cli/ui/hooks/useGitData.d.ts +20 -0
- package/dist/cli/ui/hooks/useGitData.d.ts.map +1 -0
- package/dist/cli/ui/hooks/useGitData.js +116 -0
- package/dist/cli/ui/hooks/useGitData.js.map +1 -0
- package/dist/cli/ui/hooks/useScreenState.d.ts +12 -0
- package/dist/cli/ui/hooks/useScreenState.d.ts.map +1 -0
- package/dist/cli/ui/hooks/useScreenState.js +30 -0
- package/dist/cli/ui/hooks/useScreenState.js.map +1 -0
- package/dist/cli/ui/hooks/useTerminalSize.d.ts +9 -0
- package/dist/cli/ui/hooks/useTerminalSize.d.ts.map +1 -0
- package/dist/cli/ui/hooks/useTerminalSize.js +24 -0
- package/dist/cli/ui/hooks/useTerminalSize.js.map +1 -0
- package/dist/cli/ui/screens/BranchActionSelectorScreen.d.ts +21 -0
- package/dist/cli/ui/screens/BranchActionSelectorScreen.d.ts.map +1 -0
- package/dist/cli/ui/screens/BranchActionSelectorScreen.js +61 -0
- package/dist/cli/ui/screens/BranchActionSelectorScreen.js.map +1 -0
- package/dist/cli/ui/types.d.ts +245 -0
- package/dist/cli/ui/types.d.ts.map +1 -0
- package/dist/cli/ui/types.js +2 -0
- package/dist/cli/ui/types.js.map +1 -0
- package/dist/cli/ui/utils/baseBranch.d.ts +4 -0
- package/dist/cli/ui/utils/baseBranch.d.ts.map +1 -0
- package/dist/cli/ui/utils/baseBranch.js +17 -0
- package/dist/cli/ui/utils/baseBranch.js.map +1 -0
- package/dist/cli/ui/utils/branchFormatter.d.ts +13 -0
- package/dist/cli/ui/utils/branchFormatter.d.ts.map +1 -0
- package/dist/cli/ui/utils/branchFormatter.js +202 -0
- package/dist/cli/ui/utils/branchFormatter.js.map +1 -0
- package/dist/cli/ui/utils/statisticsCalculator.d.ts +9 -0
- package/dist/cli/ui/utils/statisticsCalculator.d.ts.map +1 -0
- package/dist/cli/ui/utils/statisticsCalculator.js +37 -0
- package/dist/cli/ui/utils/statisticsCalculator.js.map +1 -0
- package/dist/client/assets/index-CqaYsI0z.js +81 -0
- package/dist/client/assets/index-Dy3OxWpP.css +32 -0
- package/dist/client/index.html +13 -0
- package/dist/codex.d.ts +12 -0
- package/dist/codex.d.ts.map +1 -0
- package/dist/codex.js +106 -0
- package/dist/codex.js.map +1 -0
- package/dist/config/builtin-tools.d.ts +19 -0
- package/dist/config/builtin-tools.d.ts.map +1 -0
- package/dist/config/builtin-tools.js +40 -0
- package/dist/config/builtin-tools.js.map +1 -0
- package/dist/config/constants.d.ts +74 -0
- package/dist/config/constants.d.ts.map +1 -0
- package/dist/config/constants.js +90 -0
- package/dist/config/constants.js.map +1 -0
- package/dist/config/env-history.d.ts +4 -0
- package/dist/config/env-history.d.ts.map +1 -0
- package/dist/config/env-history.js +34 -0
- package/dist/config/env-history.js.map +1 -0
- package/dist/config/index.d.ts +24 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +144 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/tools.d.ts +40 -0
- package/dist/config/tools.d.ts.map +1 -0
- package/dist/config/tools.js +238 -0
- package/dist/config/tools.js.map +1 -0
- package/dist/git.d.ts +145 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +871 -0
- package/dist/git.js.map +1 -0
- package/dist/github.d.ts +14 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +123 -0
- package/dist/github.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +510 -0
- package/dist/index.js.map +1 -0
- package/dist/launcher.d.ts +30 -0
- package/dist/launcher.d.ts.map +1 -0
- package/dist/launcher.js +116 -0
- package/dist/launcher.js.map +1 -0
- package/dist/repositories/git.repository.d.ts +38 -0
- package/dist/repositories/git.repository.d.ts.map +1 -0
- package/dist/repositories/git.repository.js +117 -0
- package/dist/repositories/git.repository.js.map +1 -0
- package/dist/repositories/github.repository.d.ts +16 -0
- package/dist/repositories/github.repository.d.ts.map +1 -0
- package/dist/repositories/github.repository.js +61 -0
- package/dist/repositories/github.repository.js.map +1 -0
- package/dist/repositories/worktree.repository.d.ts +18 -0
- package/dist/repositories/worktree.repository.d.ts.map +1 -0
- package/dist/repositories/worktree.repository.js +57 -0
- package/dist/repositories/worktree.repository.js.map +1 -0
- package/dist/services/BatchMergeService.d.ts +45 -0
- package/dist/services/BatchMergeService.d.ts.map +1 -0
- package/dist/services/BatchMergeService.js +197 -0
- package/dist/services/BatchMergeService.js.map +1 -0
- package/dist/services/WorktreeOrchestrator.d.ts +37 -0
- package/dist/services/WorktreeOrchestrator.d.ts.map +1 -0
- package/dist/services/WorktreeOrchestrator.js +74 -0
- package/dist/services/WorktreeOrchestrator.js.map +1 -0
- package/dist/services/dependency-installer.d.ts +26 -0
- package/dist/services/dependency-installer.d.ts.map +1 -0
- package/dist/services/dependency-installer.js +139 -0
- package/dist/services/dependency-installer.js.map +1 -0
- package/dist/services/git.service.d.ts +27 -0
- package/dist/services/git.service.d.ts.map +1 -0
- package/dist/services/git.service.js +95 -0
- package/dist/services/git.service.js.map +1 -0
- package/dist/services/github.service.d.ts +14 -0
- package/dist/services/github.service.d.ts.map +1 -0
- package/dist/services/github.service.js +52 -0
- package/dist/services/github.service.js.map +1 -0
- package/dist/services/worktree.service.d.ts +20 -0
- package/dist/services/worktree.service.d.ts.map +1 -0
- package/dist/services/worktree.service.js +52 -0
- package/dist/services/worktree.service.js.map +1 -0
- package/dist/types/api.d.ts +211 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +8 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/tools.d.ts +201 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +8 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/utils/spinner.d.ts +6 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +47 -0
- package/dist/utils/spinner.js.map +1 -0
- package/dist/utils/terminal.d.ts +20 -0
- package/dist/utils/terminal.d.ts.map +1 -0
- package/dist/utils/terminal.js +232 -0
- package/dist/utils/terminal.js.map +1 -0
- package/dist/utils.d.ts +9 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +48 -0
- package/dist/utils.js.map +1 -0
- package/dist/web/client/src/components/BranchGraph.d.ts +8 -0
- package/dist/web/client/src/components/BranchGraph.d.ts.map +1 -0
- package/dist/web/client/src/components/BranchGraph.js +125 -0
- package/dist/web/client/src/components/BranchGraph.js.map +1 -0
- package/dist/web/client/src/components/EnvEditor.d.ts +20 -0
- package/dist/web/client/src/components/EnvEditor.d.ts.map +1 -0
- package/dist/web/client/src/components/EnvEditor.js +65 -0
- package/dist/web/client/src/components/EnvEditor.js.map +1 -0
- package/dist/web/client/src/components/Terminal.d.ts +15 -0
- package/dist/web/client/src/components/Terminal.d.ts.map +1 -0
- package/dist/web/client/src/components/Terminal.js +112 -0
- package/dist/web/client/src/components/Terminal.js.map +1 -0
- package/dist/web/client/src/hooks/useBranches.d.ts +16 -0
- package/dist/web/client/src/hooks/useBranches.d.ts.map +1 -0
- package/dist/web/client/src/hooks/useBranches.js +35 -0
- package/dist/web/client/src/hooks/useBranches.js.map +1 -0
- package/dist/web/client/src/hooks/useConfig.d.ts +13 -0
- package/dist/web/client/src/hooks/useConfig.d.ts.map +1 -0
- package/dist/web/client/src/hooks/useConfig.js +27 -0
- package/dist/web/client/src/hooks/useConfig.js.map +1 -0
- package/dist/web/client/src/hooks/useSessions.d.ts +21 -0
- package/dist/web/client/src/hooks/useSessions.d.ts.map +1 -0
- package/dist/web/client/src/hooks/useSessions.js +49 -0
- package/dist/web/client/src/hooks/useSessions.js.map +1 -0
- package/dist/web/client/src/hooks/useWorktrees.d.ts +17 -0
- package/dist/web/client/src/hooks/useWorktrees.d.ts.map +1 -0
- package/dist/web/client/src/hooks/useWorktrees.js +41 -0
- package/dist/web/client/src/hooks/useWorktrees.js.map +1 -0
- package/dist/web/client/src/lib/api.d.ts +82 -0
- package/dist/web/client/src/lib/api.d.ts.map +1 -0
- package/dist/web/client/src/lib/api.js +147 -0
- package/dist/web/client/src/lib/api.js.map +1 -0
- package/dist/web/client/src/lib/websocket.d.ts +52 -0
- package/dist/web/client/src/lib/websocket.d.ts.map +1 -0
- package/dist/web/client/src/lib/websocket.js +137 -0
- package/dist/web/client/src/lib/websocket.js.map +1 -0
- package/dist/web/client/src/main.d.ts +2 -0
- package/dist/web/client/src/main.d.ts.map +1 -0
- package/dist/web/client/src/main.js +23 -0
- package/dist/web/client/src/main.js.map +1 -0
- package/dist/web/client/src/pages/BranchDetailPage.d.ts +3 -0
- package/dist/web/client/src/pages/BranchDetailPage.d.ts.map +1 -0
- package/dist/web/client/src/pages/BranchDetailPage.js +519 -0
- package/dist/web/client/src/pages/BranchDetailPage.js.map +1 -0
- package/dist/web/client/src/pages/BranchListPage.d.ts +3 -0
- package/dist/web/client/src/pages/BranchListPage.d.ts.map +1 -0
- package/dist/web/client/src/pages/BranchListPage.js +150 -0
- package/dist/web/client/src/pages/BranchListPage.js.map +1 -0
- package/dist/web/client/src/pages/ConfigManagementPage.d.ts +3 -0
- package/dist/web/client/src/pages/ConfigManagementPage.d.ts.map +1 -0
- package/dist/web/client/src/pages/ConfigManagementPage.js +125 -0
- package/dist/web/client/src/pages/ConfigManagementPage.js.map +1 -0
- package/dist/web/client/src/router.d.ts +9 -0
- package/dist/web/client/src/router.d.ts.map +1 -0
- package/dist/web/client/src/router.js +27 -0
- package/dist/web/client/src/router.js.map +1 -0
- package/dist/web/client/vite.config.d.ts +3 -0
- package/dist/web/client/vite.config.d.ts.map +1 -0
- package/dist/web/client/vite.config.js +21 -0
- package/dist/web/client/vite.config.js.map +1 -0
- package/dist/web/server/env/importer.d.ts +3 -0
- package/dist/web/server/env/importer.d.ts.map +1 -0
- package/dist/web/server/env/importer.js +47 -0
- package/dist/web/server/env/importer.js.map +1 -0
- package/dist/web/server/index.d.ts +11 -0
- package/dist/web/server/index.d.ts.map +1 -0
- package/dist/web/server/index.js +62 -0
- package/dist/web/server/index.js.map +1 -0
- package/dist/web/server/pty/manager.d.ts +50 -0
- package/dist/web/server/pty/manager.d.ts.map +1 -0
- package/dist/web/server/pty/manager.js +143 -0
- package/dist/web/server/pty/manager.js.map +1 -0
- package/dist/web/server/routes/branches.d.ts +11 -0
- package/dist/web/server/routes/branches.d.ts.map +1 -0
- package/dist/web/server/routes/branches.js +97 -0
- package/dist/web/server/routes/branches.js.map +1 -0
- package/dist/web/server/routes/config.d.ts +6 -0
- package/dist/web/server/routes/config.d.ts.map +1 -0
- package/dist/web/server/routes/config.js +162 -0
- package/dist/web/server/routes/config.js.map +1 -0
- package/dist/web/server/routes/index.d.ts +13 -0
- package/dist/web/server/routes/index.d.ts.map +1 -0
- package/dist/web/server/routes/index.js +29 -0
- package/dist/web/server/routes/index.js.map +1 -0
- package/dist/web/server/routes/sessions.d.ts +12 -0
- package/dist/web/server/routes/sessions.d.ts.map +1 -0
- package/dist/web/server/routes/sessions.js +95 -0
- package/dist/web/server/routes/sessions.js.map +1 -0
- package/dist/web/server/routes/worktrees.d.ts +11 -0
- package/dist/web/server/routes/worktrees.d.ts.map +1 -0
- package/dist/web/server/routes/worktrees.js +80 -0
- package/dist/web/server/routes/worktrees.js.map +1 -0
- package/dist/web/server/services/branches.d.ts +17 -0
- package/dist/web/server/services/branches.d.ts.map +1 -0
- package/dist/web/server/services/branches.js +262 -0
- package/dist/web/server/services/branches.js.map +1 -0
- package/dist/web/server/services/worktrees.d.ts +24 -0
- package/dist/web/server/services/worktrees.d.ts.map +1 -0
- package/dist/web/server/services/worktrees.js +60 -0
- package/dist/web/server/services/worktrees.js.map +1 -0
- package/dist/web/server/websocket/handler.d.ts +41 -0
- package/dist/web/server/websocket/handler.d.ts.map +1 -0
- package/dist/web/server/websocket/handler.js +143 -0
- package/dist/web/server/websocket/handler.js.map +1 -0
- package/dist/worktree.d.ts +53 -0
- package/dist/worktree.d.ts.map +1 -0
- package/dist/worktree.js +489 -0
- package/dist/worktree.js.map +1 -0
- 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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"}
|