UNPKG

ccgwz

Version:

Claude Code Git Worktree Zellij - CLI tool for parallel development with git worktrees and Claude Code in zellij panes

54 lines 2.12 kB
import { execa } from 'execa'; export class ZellijManager { async createNewTabWithPanes(tabName, paneCount, worktrees) { try { // Create new tab with project name await execa('zellij', ['action', 'new-tab', '--name', tabName]); // Now create panes in the new tab return this.createPanesWithLayout(paneCount, worktrees); } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); return { success: false, error: `Failed to create new tab: ${errorMessage}`, }; } } async createPanesWithLayout(paneCount, worktrees) { try { // Launch Claude in current pane first const firstResult = await this.launchClaudeInCurrentPane(worktrees[0]); if (!firstResult.success) { return firstResult; } // Create additional panes with Claude for (let i = 1; i < paneCount; i++) { const direction = i % 2 === 1 ? 'right' : 'down'; await execa('zellij', ['action', 'new-pane', '-d', direction, '--cwd', worktrees[i].worktreePath, '--', 'claude']); } return { success: true, data: undefined }; } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); return { success: false, error: `Failed to create zellij layout: ${errorMessage}`, }; } } async launchClaudeInCurrentPane(worktree) { try { await execa('zellij', ['run', '--cwd', worktree.worktreePath, '--', 'claude']); return { success: true, data: undefined }; } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); return { success: false, error: `Failed to launch Claude Code: ${errorMessage}`, }; } } } //# sourceMappingURL=zellij.js.map