@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
package/dist/launcher.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* カスタムツール起動機能
|
|
3
|
+
*
|
|
4
|
+
* カスタムAIツールの起動処理を管理します。
|
|
5
|
+
* 3つの実行タイプ(path, bunx, command)をサポートします。
|
|
6
|
+
*/
|
|
7
|
+
import { execa } from "execa";
|
|
8
|
+
/**
|
|
9
|
+
* コマンド名をPATH環境変数から解決
|
|
10
|
+
*
|
|
11
|
+
* Unix/Linuxではwhichコマンド、Windowsではwhereコマンドを使用して、
|
|
12
|
+
* コマンド名を絶対パスに解決します。
|
|
13
|
+
*
|
|
14
|
+
* @param commandName - 解決するコマンド名
|
|
15
|
+
* @returns コマンドの絶対パス
|
|
16
|
+
* @throws コマンドが見つからない場合
|
|
17
|
+
*/
|
|
18
|
+
export async function resolveCommand(commandName) {
|
|
19
|
+
const whichCommand = process.platform === "win32" ? "where" : "which";
|
|
20
|
+
try {
|
|
21
|
+
const result = await execa(whichCommand, [commandName]);
|
|
22
|
+
// where(Windows)は複数行返す可能性があるため、最初の行のみ取得
|
|
23
|
+
const resolvedPath = (result.stdout.split("\n")[0] ?? "").trim();
|
|
24
|
+
if (!resolvedPath) {
|
|
25
|
+
throw new Error(`Command "${commandName}" not found in PATH.\n` +
|
|
26
|
+
`Please ensure the command is installed and available in your PATH environment variable.`);
|
|
27
|
+
}
|
|
28
|
+
return resolvedPath;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
// which/whereコマンド自体が失敗した場合
|
|
32
|
+
if (error instanceof Error) {
|
|
33
|
+
throw new Error(`Failed to resolve command "${commandName}".\n` +
|
|
34
|
+
`Error: ${error.message}\n` +
|
|
35
|
+
`Please ensure the command is installed and available in your PATH environment variable.`);
|
|
36
|
+
}
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 引数配列を構築
|
|
42
|
+
*
|
|
43
|
+
* defaultArgs + modeArgs[mode] + extraArgs の順で引数を結合します。
|
|
44
|
+
* 未定義のフィールドは空配列として扱います。
|
|
45
|
+
*
|
|
46
|
+
* @param tool - カスタムツール定義
|
|
47
|
+
* @param options - 起動オプション
|
|
48
|
+
* @returns 結合された引数配列
|
|
49
|
+
*/
|
|
50
|
+
function buildArgs(tool, options) {
|
|
51
|
+
const args = [];
|
|
52
|
+
// 1. defaultArgs
|
|
53
|
+
if (tool.defaultArgs) {
|
|
54
|
+
args.push(...tool.defaultArgs);
|
|
55
|
+
}
|
|
56
|
+
// 2. modeArgs[mode]
|
|
57
|
+
const mode = options.mode || "normal";
|
|
58
|
+
const modeArgs = tool.modeArgs[mode];
|
|
59
|
+
if (modeArgs) {
|
|
60
|
+
args.push(...modeArgs);
|
|
61
|
+
}
|
|
62
|
+
// 3. extraArgs
|
|
63
|
+
if (options.extraArgs) {
|
|
64
|
+
args.push(...options.extraArgs);
|
|
65
|
+
}
|
|
66
|
+
return args;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* カスタムAIツールを起動
|
|
70
|
+
*
|
|
71
|
+
* ツールの実行タイプ(path/bunx/command)に応じて適切な方法で起動します。
|
|
72
|
+
* stdio: "inherit" で起動するため、ツールの入出力は親プロセスに継承されます。
|
|
73
|
+
*
|
|
74
|
+
* @param tool - カスタムツール定義
|
|
75
|
+
* @param options - 起動オプション
|
|
76
|
+
* @throws 起動に失敗した場合
|
|
77
|
+
*/
|
|
78
|
+
export async function launchCustomAITool(tool, options = {}) {
|
|
79
|
+
const args = buildArgs(tool, options);
|
|
80
|
+
const env = {
|
|
81
|
+
...process.env,
|
|
82
|
+
...(options.sharedEnv ?? {}),
|
|
83
|
+
...(tool.env ?? {}),
|
|
84
|
+
};
|
|
85
|
+
// execa共通オプション(cwdがundefinedの場合は含めない)
|
|
86
|
+
const execaOptions = {
|
|
87
|
+
stdio: "inherit",
|
|
88
|
+
...(options.cwd ? { cwd: options.cwd } : {}),
|
|
89
|
+
env,
|
|
90
|
+
};
|
|
91
|
+
switch (tool.type) {
|
|
92
|
+
case "path": {
|
|
93
|
+
// 絶対パスで直接実行
|
|
94
|
+
await execa(tool.command, args, execaOptions);
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
case "bunx": {
|
|
98
|
+
// bunx経由でパッケージ実行
|
|
99
|
+
// bunx [package] [args...]
|
|
100
|
+
await execa("bunx", [tool.command, ...args], execaOptions);
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
case "command": {
|
|
104
|
+
// PATH解決 → 実行
|
|
105
|
+
const resolvedPath = await resolveCommand(tool.command);
|
|
106
|
+
await execa(resolvedPath, args, execaOptions);
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
default: {
|
|
110
|
+
// TypeScriptの型チェックで到達不可能だが、実行時の安全性のため
|
|
111
|
+
const exhaustiveCheck = tool.type;
|
|
112
|
+
throw new Error(`Unknown tool execution type: ${exhaustiveCheck}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=launcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git操作のための低レベルRepository
|
|
3
|
+
* execaの直接呼び出しをカプセル化
|
|
4
|
+
*/
|
|
5
|
+
export declare class GitRepository {
|
|
6
|
+
execute(args: string[], options?: {
|
|
7
|
+
cwd?: string;
|
|
8
|
+
}): Promise<string>;
|
|
9
|
+
isRepository(): Promise<boolean>;
|
|
10
|
+
getRepositoryRoot(): Promise<string>;
|
|
11
|
+
getCurrentBranch(): Promise<string | null>;
|
|
12
|
+
getBranches(options: {
|
|
13
|
+
remote?: boolean;
|
|
14
|
+
}): Promise<string[]>;
|
|
15
|
+
createBranch(branchName: string, baseBranch?: string): Promise<void>;
|
|
16
|
+
deleteBranch(branchName: string, force?: boolean): Promise<void>;
|
|
17
|
+
deleteRemoteBranch(branchName: string): Promise<void>;
|
|
18
|
+
getStatus(options?: {
|
|
19
|
+
cwd?: string;
|
|
20
|
+
}): Promise<string>;
|
|
21
|
+
hasChanges(workdir?: string): Promise<boolean>;
|
|
22
|
+
fetch(options?: {
|
|
23
|
+
all?: boolean;
|
|
24
|
+
prune?: boolean;
|
|
25
|
+
}): Promise<void>;
|
|
26
|
+
push(options?: {
|
|
27
|
+
upstream?: boolean;
|
|
28
|
+
branch?: string;
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
commit(message: string, options?: {
|
|
31
|
+
all?: boolean;
|
|
32
|
+
}): Promise<void>;
|
|
33
|
+
add(files: string[] | "."): Promise<void>;
|
|
34
|
+
stash(message?: string): Promise<void>;
|
|
35
|
+
checkout(target: string): Promise<void>;
|
|
36
|
+
getChangedFilesCount(workdir?: string): Promise<number>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=git.repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/git.repository.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,qBAAa,aAAa;IAClB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IASpE,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAShC,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAS1C,WAAW,CAAC,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAc7D,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,SAAS,CAAC,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAOtD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9C,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlE,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAI9D"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { execa } from "execa";
|
|
2
|
+
import { GitError } from "../git.js";
|
|
3
|
+
/**
|
|
4
|
+
* Git操作のための低レベルRepository
|
|
5
|
+
* execaの直接呼び出しをカプセル化
|
|
6
|
+
*/
|
|
7
|
+
export class GitRepository {
|
|
8
|
+
async execute(args, options) {
|
|
9
|
+
try {
|
|
10
|
+
const { stdout } = await execa("git", args, options);
|
|
11
|
+
return stdout;
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
throw new GitError(`Git command failed: git ${args.join(" ")}`, error);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async isRepository() {
|
|
18
|
+
try {
|
|
19
|
+
await this.execute(["rev-parse", "--git-dir"]);
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async getRepositoryRoot() {
|
|
27
|
+
const stdout = await this.execute(["rev-parse", "--show-toplevel"]);
|
|
28
|
+
return stdout.trim();
|
|
29
|
+
}
|
|
30
|
+
async getCurrentBranch() {
|
|
31
|
+
try {
|
|
32
|
+
const stdout = await this.execute(["branch", "--show-current"]);
|
|
33
|
+
return stdout.trim() || null;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async getBranches(options) {
|
|
40
|
+
const args = ["branch"];
|
|
41
|
+
if (options.remote) {
|
|
42
|
+
args.push("-r");
|
|
43
|
+
}
|
|
44
|
+
args.push("--format=%(refname:short)");
|
|
45
|
+
const stdout = await this.execute(args);
|
|
46
|
+
return stdout
|
|
47
|
+
.split("\n")
|
|
48
|
+
.filter((line) => line.trim())
|
|
49
|
+
.filter((line) => !line.includes("HEAD"));
|
|
50
|
+
}
|
|
51
|
+
async createBranch(branchName, baseBranch) {
|
|
52
|
+
const args = ["checkout", "-b", branchName];
|
|
53
|
+
if (baseBranch) {
|
|
54
|
+
args.push(baseBranch);
|
|
55
|
+
}
|
|
56
|
+
await this.execute(args);
|
|
57
|
+
}
|
|
58
|
+
async deleteBranch(branchName, force = false) {
|
|
59
|
+
const args = ["branch", force ? "-D" : "-d", branchName];
|
|
60
|
+
await this.execute(args);
|
|
61
|
+
}
|
|
62
|
+
async deleteRemoteBranch(branchName) {
|
|
63
|
+
await this.execute(["push", "origin", "--delete", branchName]);
|
|
64
|
+
}
|
|
65
|
+
async getStatus(options) {
|
|
66
|
+
return await this.execute(["status", "--porcelain"], options?.cwd ? options : undefined);
|
|
67
|
+
}
|
|
68
|
+
async hasChanges(workdir) {
|
|
69
|
+
const status = await this.getStatus(workdir ? { cwd: workdir } : undefined);
|
|
70
|
+
return status.trim().length > 0;
|
|
71
|
+
}
|
|
72
|
+
async fetch(options) {
|
|
73
|
+
const args = ["fetch"];
|
|
74
|
+
if (options?.all)
|
|
75
|
+
args.push("--all");
|
|
76
|
+
if (options?.prune)
|
|
77
|
+
args.push("--prune");
|
|
78
|
+
await this.execute(args);
|
|
79
|
+
}
|
|
80
|
+
async push(options) {
|
|
81
|
+
const args = ["push"];
|
|
82
|
+
if (options?.upstream && options?.branch) {
|
|
83
|
+
args.push("--set-upstream", "origin", options.branch);
|
|
84
|
+
}
|
|
85
|
+
await this.execute(args);
|
|
86
|
+
}
|
|
87
|
+
async commit(message, options) {
|
|
88
|
+
const args = ["commit", "-m", message];
|
|
89
|
+
if (options?.all)
|
|
90
|
+
args.push("-a");
|
|
91
|
+
await this.execute(args);
|
|
92
|
+
}
|
|
93
|
+
async add(files) {
|
|
94
|
+
const args = ["add"];
|
|
95
|
+
if (Array.isArray(files)) {
|
|
96
|
+
args.push(...files);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
args.push(files);
|
|
100
|
+
}
|
|
101
|
+
await this.execute(args);
|
|
102
|
+
}
|
|
103
|
+
async stash(message) {
|
|
104
|
+
const args = ["stash", "push"];
|
|
105
|
+
if (message)
|
|
106
|
+
args.push("-m", message);
|
|
107
|
+
await this.execute(args);
|
|
108
|
+
}
|
|
109
|
+
async checkout(target) {
|
|
110
|
+
await this.execute(["checkout", target]);
|
|
111
|
+
}
|
|
112
|
+
async getChangedFilesCount(workdir) {
|
|
113
|
+
const status = await this.getStatus(workdir ? { cwd: workdir } : undefined);
|
|
114
|
+
return status.split("\n").filter((line) => line.trim()).length;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=git.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.repository.js","sourceRoot":"","sources":["../../src/repositories/git.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { GitHubPRResponse } from "../cli/ui/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* GitHub CLI操作のための低レベルRepository
|
|
4
|
+
*/
|
|
5
|
+
export declare class GitHubRepository {
|
|
6
|
+
execute(args: string[]): Promise<string>;
|
|
7
|
+
isAvailable(): Promise<boolean>;
|
|
8
|
+
isAuthenticated(): Promise<boolean>;
|
|
9
|
+
fetchPullRequests(options: {
|
|
10
|
+
state?: "all" | "open" | "closed" | "merged";
|
|
11
|
+
limit?: number;
|
|
12
|
+
head?: string;
|
|
13
|
+
}): Promise<GitHubPRResponse[]>;
|
|
14
|
+
fetchRemoteUpdates(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=github.repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/github.repository.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;GAEG;AACH,qBAAa,gBAAgB;IACrB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAYxC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IASnC,iBAAiB,CAAC,OAAO,EAAE;QAC/B,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA2BzB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CAa1C"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { execa } from "execa";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
/**
|
|
4
|
+
* GitHub CLI操作のための低レベルRepository
|
|
5
|
+
*/
|
|
6
|
+
export class GitHubRepository {
|
|
7
|
+
async execute(args) {
|
|
8
|
+
try {
|
|
9
|
+
const { stdout } = await execa("gh", args);
|
|
10
|
+
return stdout;
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
14
|
+
throw new Error(`GitHub CLI command failed: gh ${args.join(" ")}\n${message}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async isAvailable() {
|
|
18
|
+
try {
|
|
19
|
+
await this.execute(["--version"]);
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async isAuthenticated() {
|
|
27
|
+
try {
|
|
28
|
+
await this.execute(["api", "user"]);
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async fetchPullRequests(options) {
|
|
36
|
+
const args = ["pr", "list"];
|
|
37
|
+
if (options.state) {
|
|
38
|
+
args.push("--state", options.state);
|
|
39
|
+
}
|
|
40
|
+
if (options.head) {
|
|
41
|
+
args.push("--head", options.head);
|
|
42
|
+
}
|
|
43
|
+
args.push("--json", "number,title,state,headRefName,mergedAt,author", "--limit", String(options.limit || 100));
|
|
44
|
+
const stdout = await this.execute(args);
|
|
45
|
+
if (!stdout || stdout.trim() === "") {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
return JSON.parse(stdout);
|
|
49
|
+
}
|
|
50
|
+
async fetchRemoteUpdates() {
|
|
51
|
+
try {
|
|
52
|
+
await execa("git", ["fetch", "--all", "--prune"]);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
if (process.env.DEBUG_CLEANUP) {
|
|
56
|
+
console.log(chalk.yellow("Debug: Failed to fetch remote updates, continuing anyway"));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=github.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.repository.js","sourceRoot":"","sources":["../../src/repositories/github.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,OAAO,CAAC,IAAc;QAC1B,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3C,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,KAAK,CACb,iCAAiC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAIvB;QACC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE5B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,IAAI,CACP,QAAQ,EACR,gDAAgD,EAChD,SAAS,EACT,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAC7B,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,0DAA0D,CAC3D,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface WorktreeData {
|
|
2
|
+
path: string;
|
|
3
|
+
head: string;
|
|
4
|
+
branch: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Git Worktree操作のための低レベルRepository
|
|
8
|
+
*/
|
|
9
|
+
export declare class WorktreeRepository {
|
|
10
|
+
execute(args: string[], options?: {
|
|
11
|
+
cwd?: string;
|
|
12
|
+
}): Promise<string>;
|
|
13
|
+
list(): Promise<WorktreeData[]>;
|
|
14
|
+
add(worktreePath: string, branchName: string): Promise<void>;
|
|
15
|
+
remove(worktreePath: string, force?: boolean): Promise<void>;
|
|
16
|
+
prune(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=worktree.repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/worktree.repository.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IACvB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpE,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA6B/B,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { execa } from "execa";
|
|
2
|
+
import { WorktreeError } from "../worktree.js";
|
|
3
|
+
/**
|
|
4
|
+
* Git Worktree操作のための低レベルRepository
|
|
5
|
+
*/
|
|
6
|
+
export class WorktreeRepository {
|
|
7
|
+
async execute(args, options) {
|
|
8
|
+
try {
|
|
9
|
+
const { stdout } = await execa("git", ["worktree", ...args], options);
|
|
10
|
+
return stdout;
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
throw new WorktreeError(`Worktree command failed: git worktree ${args.join(" ")}`, error);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
async list() {
|
|
17
|
+
const stdout = await this.execute(["list", "--porcelain"]);
|
|
18
|
+
const worktrees = [];
|
|
19
|
+
const lines = stdout.split("\n");
|
|
20
|
+
let currentWorktree = {};
|
|
21
|
+
for (const line of lines) {
|
|
22
|
+
if (line.startsWith("worktree ")) {
|
|
23
|
+
currentWorktree.path = line.substring(9);
|
|
24
|
+
}
|
|
25
|
+
else if (line.startsWith("HEAD ")) {
|
|
26
|
+
currentWorktree.head = line.substring(5);
|
|
27
|
+
}
|
|
28
|
+
else if (line.startsWith("branch ")) {
|
|
29
|
+
currentWorktree.branch = line.substring(7).replace("refs/heads/", "");
|
|
30
|
+
}
|
|
31
|
+
else if (line === "") {
|
|
32
|
+
if (currentWorktree.path) {
|
|
33
|
+
worktrees.push(currentWorktree);
|
|
34
|
+
currentWorktree = {};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (currentWorktree.path) {
|
|
39
|
+
worktrees.push(currentWorktree);
|
|
40
|
+
}
|
|
41
|
+
return worktrees;
|
|
42
|
+
}
|
|
43
|
+
async add(worktreePath, branchName) {
|
|
44
|
+
await this.execute(["add", worktreePath, branchName]);
|
|
45
|
+
}
|
|
46
|
+
async remove(worktreePath, force = false) {
|
|
47
|
+
const args = ["remove"];
|
|
48
|
+
if (force)
|
|
49
|
+
args.push("--force");
|
|
50
|
+
args.push(worktreePath);
|
|
51
|
+
await this.execute(args);
|
|
52
|
+
}
|
|
53
|
+
async prune() {
|
|
54
|
+
await this.execute(["prune"]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=worktree.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.repository.js","sourceRoot":"","sources":["../../src/repositories/worktree.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAQ/C;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAC7B,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,OAA0B;QACtD,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YACtE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CACrB,yCAAyC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EACzD,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAmB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,eAAe,GAA0B,EAAE,CAAC;QAEhD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YACxE,CAAC;iBAAM,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;gBACvB,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC;oBACzB,SAAS,CAAC,IAAI,CAAC,eAA+B,CAAC,CAAC;oBAChD,eAAe,GAAG,EAAE,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,eAA+B,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,YAAoB,EAAE,UAAkB;QAChD,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,YAAoB,EAAE,KAAK,GAAG,KAAK;QAC9C,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,IAAI,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { BatchMergeConfig, BatchMergeProgress, BatchMergeResult, BranchMergeStatus } from "../cli/ui/types";
|
|
2
|
+
/**
|
|
3
|
+
* BatchMergeService - Orchestrates batch merge operations
|
|
4
|
+
* @see specs/SPEC-ee33ca26/plan.md - Service layer architecture
|
|
5
|
+
*/
|
|
6
|
+
export declare class BatchMergeService {
|
|
7
|
+
/**
|
|
8
|
+
* Determine source branch for merge (main > develop > master)
|
|
9
|
+
* @returns Source branch name
|
|
10
|
+
* @throws Error if no source branch found
|
|
11
|
+
* @see specs/SPEC-ee33ca26/spec.md - FR-004
|
|
12
|
+
*/
|
|
13
|
+
determineSourceBranch(): Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Get target branches for merge (exclude main, develop, master)
|
|
16
|
+
* @returns Array of target branch names
|
|
17
|
+
* @see specs/SPEC-ee33ca26/spec.md - FR-003
|
|
18
|
+
*/
|
|
19
|
+
getTargetBranches(): Promise<string[]>;
|
|
20
|
+
/**
|
|
21
|
+
* Ensure worktree exists for target branch
|
|
22
|
+
* @param branchName - Target branch name
|
|
23
|
+
* @returns Worktree path
|
|
24
|
+
* @see specs/SPEC-ee33ca26/spec.md - FR-006
|
|
25
|
+
*/
|
|
26
|
+
ensureWorktree(branchName: string): Promise<string>;
|
|
27
|
+
/**
|
|
28
|
+
* Merge source branch into target branch
|
|
29
|
+
* @param branchName - Target branch name
|
|
30
|
+
* @param sourceBranch - Source branch name
|
|
31
|
+
* @param config - Batch merge configuration
|
|
32
|
+
* @returns Merge status for the branch
|
|
33
|
+
* @see specs/SPEC-ee33ca26/spec.md - FR-007, FR-008
|
|
34
|
+
*/
|
|
35
|
+
mergeBranch(branchName: string, sourceBranch: string, config: BatchMergeConfig): Promise<BranchMergeStatus>;
|
|
36
|
+
/**
|
|
37
|
+
* Execute batch merge for all target branches
|
|
38
|
+
* @param config - Batch merge configuration
|
|
39
|
+
* @param onProgress - Progress callback function
|
|
40
|
+
* @returns Batch merge result
|
|
41
|
+
* @see specs/SPEC-ee33ca26/spec.md - FR-001 to FR-015
|
|
42
|
+
*/
|
|
43
|
+
executeBatchMerge(config: BatchMergeConfig, onProgress?: (progress: BatchMergeProgress) => void): Promise<BatchMergeResult>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=BatchMergeService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchMergeService.d.ts","sourceRoot":"","sources":["../../src/services/BatchMergeService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AAIzB;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B;;;;;OAKG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC;IAkB9C;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAS5C;;;;;OAKG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzD;;;;;;;OAOG;IACG,WAAW,CACf,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,iBAAiB,CAAC;IAwF7B;;;;;;OAMG;IACG,iBAAiB,CACrB,MAAM,EAAE,gBAAgB,EACxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,GAClD,OAAO,CAAC,gBAAgB,CAAC;CAuD7B"}
|