@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.
- 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,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PTY Manager
|
|
3
|
+
*
|
|
4
|
+
* AI Toolセッションの疑似端末(PTY)を管理します。
|
|
5
|
+
* node-ptyを使用してプロセスをスポーンし、WebSocketを通じて入出力を中継します。
|
|
6
|
+
*/
|
|
7
|
+
import * as pty from "node-pty";
|
|
8
|
+
import { randomUUID } from "node:crypto";
|
|
9
|
+
/**
|
|
10
|
+
* PTYマネージャー - セッションとPTYプロセスのライフサイクル管理
|
|
11
|
+
*/
|
|
12
|
+
export class PTYManager {
|
|
13
|
+
instances = new Map();
|
|
14
|
+
/**
|
|
15
|
+
* 新しいPTYセッションを作成
|
|
16
|
+
*/
|
|
17
|
+
spawn(toolType, worktreePath, mode, toolName, cols = 80, rows = 24) {
|
|
18
|
+
const sessionId = randomUUID();
|
|
19
|
+
// AI Toolコマンドを構築
|
|
20
|
+
const command = this.buildCommand(toolType, mode, toolName);
|
|
21
|
+
const args = this.buildArgs(toolType, mode);
|
|
22
|
+
// PTYプロセスをスポーン
|
|
23
|
+
const ptyProcess = pty.spawn(command, args, {
|
|
24
|
+
name: "xterm-256color",
|
|
25
|
+
cols,
|
|
26
|
+
rows,
|
|
27
|
+
cwd: worktreePath,
|
|
28
|
+
env: {
|
|
29
|
+
...process.env,
|
|
30
|
+
TERM: "xterm-256color",
|
|
31
|
+
COLORTERM: "truecolor",
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
const session = {
|
|
35
|
+
sessionId,
|
|
36
|
+
toolType,
|
|
37
|
+
toolName: toolName || null,
|
|
38
|
+
mode,
|
|
39
|
+
worktreePath,
|
|
40
|
+
ptyPid: ptyProcess.pid,
|
|
41
|
+
websocketId: null,
|
|
42
|
+
status: "pending",
|
|
43
|
+
startedAt: new Date().toISOString(),
|
|
44
|
+
endedAt: null,
|
|
45
|
+
exitCode: null,
|
|
46
|
+
errorMessage: null,
|
|
47
|
+
};
|
|
48
|
+
this.instances.set(sessionId, { ptyProcess, session });
|
|
49
|
+
return { sessionId, session };
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* セッションIDからPTYインスタンスを取得
|
|
53
|
+
*/
|
|
54
|
+
get(sessionId) {
|
|
55
|
+
return this.instances.get(sessionId);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* セッションを削除
|
|
59
|
+
*/
|
|
60
|
+
delete(sessionId) {
|
|
61
|
+
const instance = this.instances.get(sessionId);
|
|
62
|
+
if (!instance) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
// PTYプロセスを終了
|
|
66
|
+
try {
|
|
67
|
+
instance.ptyProcess.kill();
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// プロセスが既に終了している場合は無視
|
|
71
|
+
}
|
|
72
|
+
this.instances.delete(sessionId);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* セッションのステータスを更新
|
|
77
|
+
*/
|
|
78
|
+
updateStatus(sessionId, status, exitCode, errorMessage) {
|
|
79
|
+
const instance = this.instances.get(sessionId);
|
|
80
|
+
if (!instance) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
instance.session.status = status;
|
|
84
|
+
if (exitCode !== undefined) {
|
|
85
|
+
instance.session.exitCode = exitCode;
|
|
86
|
+
}
|
|
87
|
+
if (errorMessage !== undefined) {
|
|
88
|
+
instance.session.errorMessage = errorMessage;
|
|
89
|
+
}
|
|
90
|
+
if (status === "completed" || status === "failed") {
|
|
91
|
+
instance.session.endedAt = new Date().toISOString();
|
|
92
|
+
}
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* すべてのセッション一覧を取得
|
|
97
|
+
*/
|
|
98
|
+
list() {
|
|
99
|
+
return Array.from(this.instances.values()).map((inst) => inst.session);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* AI Toolのコマンドを構築
|
|
103
|
+
*/
|
|
104
|
+
buildCommand(toolType, mode, toolName) {
|
|
105
|
+
if (toolType === "custom" && toolName) {
|
|
106
|
+
// カスタムツールは別途config.jsonから取得する必要があるが、
|
|
107
|
+
// ここでは簡易実装としてtoolNameをそのままコマンドとして使用
|
|
108
|
+
return toolName;
|
|
109
|
+
}
|
|
110
|
+
if (toolType === "codex-cli") {
|
|
111
|
+
return "codex";
|
|
112
|
+
}
|
|
113
|
+
// claude-code
|
|
114
|
+
return "claude";
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* AI Toolの引数を構築
|
|
118
|
+
*/
|
|
119
|
+
buildArgs(toolType, mode) {
|
|
120
|
+
if (toolType === "custom") {
|
|
121
|
+
// カスタムツールの引数は別途config.jsonから取得
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
if (toolType === "codex-cli") {
|
|
125
|
+
if (mode === "continue") {
|
|
126
|
+
return ["--continue"];
|
|
127
|
+
}
|
|
128
|
+
if (mode === "resume") {
|
|
129
|
+
return ["--resume"];
|
|
130
|
+
}
|
|
131
|
+
return [];
|
|
132
|
+
}
|
|
133
|
+
// claude-code
|
|
134
|
+
if (mode === "continue") {
|
|
135
|
+
return ["--continue"];
|
|
136
|
+
}
|
|
137
|
+
if (mode === "resume") {
|
|
138
|
+
return ["--resume"];
|
|
139
|
+
}
|
|
140
|
+
return [];
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/web/server/pty/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branch Routes
|
|
3
|
+
*
|
|
4
|
+
* ブランチ関連のREST APIエンドポイント。
|
|
5
|
+
*/
|
|
6
|
+
import type { FastifyInstance } from "fastify";
|
|
7
|
+
/**
|
|
8
|
+
* ブランチ関連のルートを登録
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerBranchRoutes(fastify: FastifyInstance): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=branches.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branches.d.ts","sourceRoot":"","sources":["../../../../src/web/server/routes/branches.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAa/C;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAqGf"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branch Routes
|
|
3
|
+
*
|
|
4
|
+
* ブランチ関連のREST APIエンドポイント。
|
|
5
|
+
*/
|
|
6
|
+
import { listBranches, getBranchByName, syncBranchState, } from "../services/branches.js";
|
|
7
|
+
/**
|
|
8
|
+
* ブランチ関連のルートを登録
|
|
9
|
+
*/
|
|
10
|
+
export async function registerBranchRoutes(fastify) {
|
|
11
|
+
// GET /api/branches - すべてのブランチ一覧を取得
|
|
12
|
+
fastify.get("/api/branches", async (request, reply) => {
|
|
13
|
+
try {
|
|
14
|
+
const branches = await listBranches();
|
|
15
|
+
return { success: true, data: branches };
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
19
|
+
reply.code(500);
|
|
20
|
+
return {
|
|
21
|
+
success: false,
|
|
22
|
+
error: "Failed to fetch branches",
|
|
23
|
+
details: errorMsg,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
// GET /api/branches/:branchName - 特定のブランチ情報を取得
|
|
28
|
+
fastify.get("/api/branches/:branchName", async (request, reply) => {
|
|
29
|
+
try {
|
|
30
|
+
const { branchName } = request.params;
|
|
31
|
+
const decodedBranchName = decodeURIComponent(branchName);
|
|
32
|
+
const branch = await getBranchByName(decodedBranchName);
|
|
33
|
+
if (!branch) {
|
|
34
|
+
reply.code(404);
|
|
35
|
+
return {
|
|
36
|
+
success: false,
|
|
37
|
+
error: "Branch not found",
|
|
38
|
+
details: `Branch ${decodedBranchName} does not exist`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return { success: true, data: branch };
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
45
|
+
reply.code(500);
|
|
46
|
+
return {
|
|
47
|
+
success: false,
|
|
48
|
+
error: "Failed to fetch branch",
|
|
49
|
+
details: errorMsg,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
// POST /api/branches/:branchName/sync - Fetch & fast-forward pull
|
|
54
|
+
fastify.post("/api/branches/:branchName/sync", async (request, reply) => {
|
|
55
|
+
const { branchName } = request.params;
|
|
56
|
+
const decodedBranchName = decodeURIComponent(branchName);
|
|
57
|
+
const { worktreePath } = request.body;
|
|
58
|
+
if (!worktreePath) {
|
|
59
|
+
reply.code(400);
|
|
60
|
+
return {
|
|
61
|
+
success: false,
|
|
62
|
+
error: "worktreePath is required",
|
|
63
|
+
details: null,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
const result = await syncBranchState(decodedBranchName, worktreePath);
|
|
68
|
+
return { success: true, data: result };
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
72
|
+
if (message.includes("Branch not found")) {
|
|
73
|
+
reply.code(404);
|
|
74
|
+
return {
|
|
75
|
+
success: false,
|
|
76
|
+
error: "Branch not found",
|
|
77
|
+
details: message,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (message.includes("Worktree path is required")) {
|
|
81
|
+
reply.code(400);
|
|
82
|
+
return {
|
|
83
|
+
success: false,
|
|
84
|
+
error: "Invalid request",
|
|
85
|
+
details: message,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
reply.code(500);
|
|
89
|
+
return {
|
|
90
|
+
success: false,
|
|
91
|
+
error: "Failed to sync branch",
|
|
92
|
+
details: message,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=branches.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branches.js","sourceRoot":"","sources":["../../../../src/web/server/routes/branches.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/web/server/routes/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAoI/C,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAiFf"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Routes
|
|
3
|
+
*/
|
|
4
|
+
import { loadToolsConfig, saveToolsConfig } from "../../../config/tools.js";
|
|
5
|
+
import { loadEnvHistory, recordEnvHistory, } from "../../../config/env-history.js";
|
|
6
|
+
import { getImportedEnvKeys } from "../env/importer.js";
|
|
7
|
+
function normalizeEnv(env, importedKeys, history) {
|
|
8
|
+
if (!env) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
const lastUpdated = new Map();
|
|
12
|
+
for (const entry of history) {
|
|
13
|
+
lastUpdated.set(entry.key, entry.timestamp ?? null);
|
|
14
|
+
}
|
|
15
|
+
return Object.entries(env).map(([key, value]) => {
|
|
16
|
+
const variable = {
|
|
17
|
+
key,
|
|
18
|
+
value,
|
|
19
|
+
lastUpdated: lastUpdated.get(key) ?? null,
|
|
20
|
+
};
|
|
21
|
+
if (importedKeys.has(key)) {
|
|
22
|
+
variable.importedFromOs = true;
|
|
23
|
+
}
|
|
24
|
+
return variable;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function envArrayToRecord(env) {
|
|
28
|
+
if (!env) {
|
|
29
|
+
return {};
|
|
30
|
+
}
|
|
31
|
+
const record = {};
|
|
32
|
+
for (const variable of env) {
|
|
33
|
+
if (!variable.key)
|
|
34
|
+
continue;
|
|
35
|
+
record[variable.key] = variable.value;
|
|
36
|
+
}
|
|
37
|
+
return record;
|
|
38
|
+
}
|
|
39
|
+
function toApiTool(tool, history, importedKeys) {
|
|
40
|
+
return {
|
|
41
|
+
id: tool.id,
|
|
42
|
+
displayName: tool.displayName,
|
|
43
|
+
icon: tool.icon ?? null,
|
|
44
|
+
command: tool.command,
|
|
45
|
+
executionType: tool.type,
|
|
46
|
+
defaultArgs: tool.defaultArgs ?? null,
|
|
47
|
+
modeArgs: tool.modeArgs,
|
|
48
|
+
permissionSkipArgs: tool.permissionSkipArgs ?? null,
|
|
49
|
+
env: normalizeEnv(tool.env, importedKeys, history),
|
|
50
|
+
description: null,
|
|
51
|
+
createdAt: null,
|
|
52
|
+
updatedAt: null,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function toFileTool(tool) {
|
|
56
|
+
const envRecord = envArrayToRecord(tool.env);
|
|
57
|
+
const fileTool = {
|
|
58
|
+
id: tool.id,
|
|
59
|
+
displayName: tool.displayName,
|
|
60
|
+
type: tool.executionType,
|
|
61
|
+
command: tool.command,
|
|
62
|
+
modeArgs: tool.modeArgs,
|
|
63
|
+
};
|
|
64
|
+
if (tool.icon) {
|
|
65
|
+
fileTool.icon = tool.icon;
|
|
66
|
+
}
|
|
67
|
+
if (tool.defaultArgs && tool.defaultArgs.length > 0) {
|
|
68
|
+
fileTool.defaultArgs = tool.defaultArgs;
|
|
69
|
+
}
|
|
70
|
+
if (tool.permissionSkipArgs && tool.permissionSkipArgs.length > 0) {
|
|
71
|
+
fileTool.permissionSkipArgs = tool.permissionSkipArgs;
|
|
72
|
+
}
|
|
73
|
+
if (Object.keys(envRecord).length > 0) {
|
|
74
|
+
fileTool.env = envRecord;
|
|
75
|
+
}
|
|
76
|
+
return fileTool;
|
|
77
|
+
}
|
|
78
|
+
function diffEnvHistory(previous, next, source) {
|
|
79
|
+
const entries = [];
|
|
80
|
+
const timestamp = new Date().toISOString();
|
|
81
|
+
for (const [key, value] of Object.entries(next)) {
|
|
82
|
+
if (!(key in previous)) {
|
|
83
|
+
entries.push({ key, action: "add", source, timestamp });
|
|
84
|
+
}
|
|
85
|
+
else if (previous[key] !== value) {
|
|
86
|
+
entries.push({ key, action: "update", source, timestamp });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
for (const key of Object.keys(previous)) {
|
|
90
|
+
if (!(key in next)) {
|
|
91
|
+
entries.push({ key, action: "delete", source, timestamp });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return entries;
|
|
95
|
+
}
|
|
96
|
+
export async function registerConfigRoutes(fastify) {
|
|
97
|
+
fastify.get("/api/config", async (request, reply) => {
|
|
98
|
+
try {
|
|
99
|
+
const config = await loadToolsConfig();
|
|
100
|
+
const history = await loadEnvHistory();
|
|
101
|
+
const importedSet = new Set(getImportedEnvKeys());
|
|
102
|
+
return {
|
|
103
|
+
success: true,
|
|
104
|
+
data: {
|
|
105
|
+
version: config.version,
|
|
106
|
+
updatedAt: config.updatedAt ?? null,
|
|
107
|
+
env: normalizeEnv(config.env, importedSet, history),
|
|
108
|
+
history,
|
|
109
|
+
tools: config.customTools.map((tool) => toApiTool(tool, history, importedSet)),
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
request.log.error({ err: error }, "Failed to load custom tool config");
|
|
115
|
+
reply.code(500);
|
|
116
|
+
return {
|
|
117
|
+
success: false,
|
|
118
|
+
error: "Failed to load config",
|
|
119
|
+
details: error instanceof Error ? error.message : String(error),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
fastify.put("/api/config", async (request, reply) => {
|
|
124
|
+
try {
|
|
125
|
+
const payload = request.body;
|
|
126
|
+
const existing = await loadToolsConfig();
|
|
127
|
+
const nextEnvRecord = envArrayToRecord(payload.env);
|
|
128
|
+
const envHistory = diffEnvHistory(existing.env ?? {}, nextEnvRecord, "ui");
|
|
129
|
+
await saveToolsConfig({
|
|
130
|
+
version: payload.version || existing.version,
|
|
131
|
+
env: nextEnvRecord,
|
|
132
|
+
customTools: payload.tools.map(toFileTool),
|
|
133
|
+
});
|
|
134
|
+
if (envHistory.length) {
|
|
135
|
+
await recordEnvHistory(envHistory);
|
|
136
|
+
}
|
|
137
|
+
const history = await loadEnvHistory();
|
|
138
|
+
const importedSet = new Set(getImportedEnvKeys());
|
|
139
|
+
return {
|
|
140
|
+
success: true,
|
|
141
|
+
data: {
|
|
142
|
+
version: payload.version || existing.version,
|
|
143
|
+
updatedAt: new Date().toISOString(),
|
|
144
|
+
env: normalizeEnv(nextEnvRecord, importedSet, history),
|
|
145
|
+
history,
|
|
146
|
+
tools: payload.tools,
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
152
|
+
request.log.error({ err: error }, "Failed to update config");
|
|
153
|
+
reply.code(500);
|
|
154
|
+
return {
|
|
155
|
+
success: false,
|
|
156
|
+
error: "Failed to update config",
|
|
157
|
+
details: errorMsg,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/web/server/routes/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REST API Routes
|
|
3
|
+
*
|
|
4
|
+
* すべてのREST APIエンドポイントを登録します。
|
|
5
|
+
* 仕様: specs/SPEC-d5e56259/contracts/rest-api.yaml
|
|
6
|
+
*/
|
|
7
|
+
import type { FastifyInstance } from "fastify";
|
|
8
|
+
import type { PTYManager } from "../pty/manager.js";
|
|
9
|
+
/**
|
|
10
|
+
* すべてのルートを登録
|
|
11
|
+
*/
|
|
12
|
+
export declare function registerRoutes(fastify: FastifyInstance, ptyManager: PTYManager): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/web/server/routes/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOpD;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAef"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REST API Routes
|
|
3
|
+
*
|
|
4
|
+
* すべてのREST APIエンドポイントを登録します。
|
|
5
|
+
* 仕様: specs/SPEC-d5e56259/contracts/rest-api.yaml
|
|
6
|
+
*/
|
|
7
|
+
import { registerBranchRoutes } from "./branches.js";
|
|
8
|
+
import { registerWorktreeRoutes } from "./worktrees.js";
|
|
9
|
+
import { registerSessionRoutes } from "./sessions.js";
|
|
10
|
+
import { registerConfigRoutes } from "./config.js";
|
|
11
|
+
/**
|
|
12
|
+
* すべてのルートを登録
|
|
13
|
+
*/
|
|
14
|
+
export async function registerRoutes(fastify, ptyManager) {
|
|
15
|
+
// ヘルスチェック
|
|
16
|
+
fastify.get("/api/health", async () => {
|
|
17
|
+
return {
|
|
18
|
+
success: true,
|
|
19
|
+
status: "ok",
|
|
20
|
+
timestamp: new Date().toISOString(),
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
// 各エンドポイントグループを登録
|
|
24
|
+
await registerBranchRoutes(fastify);
|
|
25
|
+
await registerWorktreeRoutes(fastify);
|
|
26
|
+
await registerSessionRoutes(fastify, ptyManager);
|
|
27
|
+
await registerConfigRoutes(fastify);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/web/server/routes/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAwB,EACxB,UAAsB;IAEtB,UAAU;IACV,OAAO,CAAC,GAAG,CAA4B,aAAa,EAAE,KAAK,IAAI,EAAE;QAC/D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Routes
|
|
3
|
+
*
|
|
4
|
+
* AI Toolセッション関連のREST APIエンドポイント。
|
|
5
|
+
*/
|
|
6
|
+
import type { FastifyInstance } from "fastify";
|
|
7
|
+
import type { PTYManager } from "../pty/manager.js";
|
|
8
|
+
/**
|
|
9
|
+
* セッション関連のルートを登録
|
|
10
|
+
*/
|
|
11
|
+
export declare function registerSessionRoutes(fastify: FastifyInstance, ptyManager: PTYManager): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../../src/web/server/routes/sessions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOpD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CA6Gf"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Routes
|
|
3
|
+
*
|
|
4
|
+
* AI Toolセッション関連のREST APIエンドポイント。
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* セッション関連のルートを登録
|
|
8
|
+
*/
|
|
9
|
+
export async function registerSessionRoutes(fastify, ptyManager) {
|
|
10
|
+
// GET /api/sessions - すべてのセッション一覧を取得
|
|
11
|
+
fastify.get("/api/sessions", async (request, reply) => {
|
|
12
|
+
try {
|
|
13
|
+
const sessions = ptyManager.list();
|
|
14
|
+
return { success: true, data: sessions };
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
18
|
+
reply.code(500);
|
|
19
|
+
return {
|
|
20
|
+
success: false,
|
|
21
|
+
error: "Failed to fetch sessions",
|
|
22
|
+
details: errorMsg,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
// POST /api/sessions - 新しいセッションを開始
|
|
27
|
+
fastify.post("/api/sessions", async (request, reply) => {
|
|
28
|
+
try {
|
|
29
|
+
const { toolType, toolName, mode, worktreePath } = request.body;
|
|
30
|
+
const { session } = ptyManager.spawn(toolType, worktreePath, mode, toolName);
|
|
31
|
+
reply.code(201);
|
|
32
|
+
return { success: true, data: session };
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
36
|
+
reply.code(500);
|
|
37
|
+
return {
|
|
38
|
+
success: false,
|
|
39
|
+
error: "Failed to start session",
|
|
40
|
+
details: errorMsg,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
// GET /api/sessions/:sessionId - 特定のセッション情報を取得
|
|
45
|
+
fastify.get("/api/sessions/:sessionId", async (request, reply) => {
|
|
46
|
+
try {
|
|
47
|
+
const { sessionId } = request.params;
|
|
48
|
+
const instance = ptyManager.get(sessionId);
|
|
49
|
+
if (!instance) {
|
|
50
|
+
reply.code(404);
|
|
51
|
+
return {
|
|
52
|
+
success: false,
|
|
53
|
+
error: "Session not found",
|
|
54
|
+
details: `Session ${sessionId} does not exist`,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return { success: true, data: instance.session };
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
61
|
+
reply.code(500);
|
|
62
|
+
return {
|
|
63
|
+
success: false,
|
|
64
|
+
error: "Failed to fetch session",
|
|
65
|
+
details: errorMsg,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
// DELETE /api/sessions/:sessionId - セッションを終了
|
|
70
|
+
fastify.delete("/api/sessions/:sessionId", async (request, reply) => {
|
|
71
|
+
try {
|
|
72
|
+
const { sessionId } = request.params;
|
|
73
|
+
const deleted = ptyManager.delete(sessionId);
|
|
74
|
+
if (!deleted) {
|
|
75
|
+
reply.code(404);
|
|
76
|
+
return {
|
|
77
|
+
success: false,
|
|
78
|
+
error: "Session not found",
|
|
79
|
+
details: `Session ${sessionId} does not exist`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return { success: true };
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
86
|
+
reply.code(500);
|
|
87
|
+
return {
|
|
88
|
+
success: false,
|
|
89
|
+
error: "Failed to delete session",
|
|
90
|
+
details: errorMsg,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../../src/web/server/routes/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worktree Routes
|
|
3
|
+
*
|
|
4
|
+
* Worktree関連のREST APIエンドポイント。
|
|
5
|
+
*/
|
|
6
|
+
import type { FastifyInstance } from "fastify";
|
|
7
|
+
/**
|
|
8
|
+
* Worktree関連のルートを登録
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerWorktreeRoutes(fastify: FastifyInstance): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=worktrees.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktrees.d.ts","sourceRoot":"","sources":["../../../../src/web/server/routes/worktrees.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAa/C;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAmFf"}
|