hjworktree-cli 2.3.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/.context-snapshots/context-snapshot-20250107-221530.md +95 -0
  2. package/.context-snapshots/context-snapshot-20260106-211500.md +85 -0
  3. package/README.md +39 -10
  4. package/bin/cli.js +64 -2
  5. package/dist/server/index.d.ts.map +1 -1
  6. package/dist/server/index.js +10 -0
  7. package/dist/server/index.js.map +1 -1
  8. package/dist/server/socketHandlers.d.ts.map +1 -1
  9. package/dist/server/socketHandlers.js +19 -18
  10. package/dist/server/socketHandlers.js.map +1 -1
  11. package/dist/shared/constants.d.ts +2 -3
  12. package/dist/shared/constants.d.ts.map +1 -1
  13. package/dist/shared/constants.js +2 -24
  14. package/dist/shared/constants.js.map +1 -1
  15. package/dist/shared/types/index.d.ts +3 -15
  16. package/dist/shared/types/index.d.ts.map +1 -1
  17. package/dist/shared/types/index.js +1 -1
  18. package/dist/shared/types/index.js.map +1 -1
  19. package/dist/web/assets/index-Dgl6wRHk.css +32 -0
  20. package/dist/web/assets/index-Jm7djWxU.js +53 -0
  21. package/dist/web/assets/index-Jm7djWxU.js.map +1 -0
  22. package/dist/web/index.html +2 -2
  23. package/package.json +2 -1
  24. package/server/index.ts +11 -0
  25. package/server/socketHandlers.ts +24 -23
  26. package/shared/constants.ts +2 -27
  27. package/shared/types/index.ts +6 -21
  28. package/web/src/App.tsx +8 -6
  29. package/web/src/components/Layout/LeftNavBar.tsx +6 -17
  30. package/web/src/components/Modals/AddWorktreeModal.tsx +1 -21
  31. package/web/src/components/Steps/WorktreeStep.tsx +1 -8
  32. package/web/src/components/Terminal/SplitTerminalView.tsx +64 -0
  33. package/web/src/components/Terminal/TerminalPanel.tsx +3 -69
  34. package/web/src/components/Terminal/XTerminal.tsx +4 -6
  35. package/web/src/stores/useAppStore.ts +77 -35
  36. package/web/src/styles/global.css +127 -77
  37. package/dist/web/assets/index-CsixHL-D.css +0 -32
  38. package/dist/web/assets/index-De6xm4hO.js +0 -53
  39. package/dist/web/assets/index-De6xm4hO.js.map +0 -1
  40. package/web/src/components/Setup/AgentSelector.tsx +0 -27
  41. package/web/src/components/Steps/AgentStep.tsx +0 -20
@@ -0,0 +1,95 @@
1
+ # Context Snapshot
2
+
3
+ ## Session Metadata
4
+ - **Created**: 2025-01-07T22:15:30+09:00
5
+ - **CLI**: Claude Code
6
+ - **Project**: /Users/hyungju-lee/workspace/work/new/utils/hjWorktree-cli
7
+
8
+ ## Conversation Summary
9
+
10
+ ### User Requests
11
+ 1. AI agent 선택 기능 제거 (Codex CLI, Claude Code, Gemini CLI 선택 단계 삭제)
12
+ 2. 새로고침 시 세션 중복 버그 수정 (터미널 6개로 늘어나는 문제)
13
+ 3. npm publish를 위한 버전 업데이트 및 README.md 수정
14
+
15
+ ### Completed Tasks
16
+ 1. **AI Agent 선택 기능 제거**
17
+ - 4단계 wizard → 3단계 wizard (Branch → Count → Running)
18
+ - AgentStep.tsx, AgentSelector.tsx 컴포넌트 삭제
19
+ - 관련 타입, 상수, 상태 관리 코드 정리
20
+ - 터미널이 순수 shell로 열리도록 변경
21
+
22
+ 2. **세션 중복 버그 수정**
23
+ - `addTerminal()`에 중복 체크 로직 추가
24
+ - `restoreExistingWorktrees()`에 조건 체크 추가
25
+
26
+ 3. **버전 업데이트 및 문서화**
27
+ - 버전 2.3.0 → 2.4.0 업데이트
28
+ - README.md에 변경사항 반영
29
+
30
+ ### Modified Files
31
+ - `shared/types/index.ts` - AgentId, AgentType 제거, NavigationStep에서 'agent' 제거
32
+ - `shared/constants.ts` - AI_AGENTS 배열 제거, APP_VERSION 업데이트
33
+ - `web/src/App.tsx` - AgentStep import 및 렌더링 제거
34
+ - `web/src/stores/useAppStore.ts` - selectedAgent 상태/액션 제거, 중복 체크 추가
35
+ - `web/src/components/Steps/WorktreeStep.tsx` - agent 표시 제거
36
+ - `web/src/components/Modals/AddWorktreeModal.tsx` - agent 선택 UI 제거
37
+ - `web/src/components/Terminal/SplitTerminalView.tsx` - agent 라벨 제거
38
+ - `web/src/components/Terminal/XTerminal.tsx` - agentType prop 제거
39
+ - `web/src/components/Layout/LeftNavBar.tsx` - agent step 및 표시 제거
40
+ - `server/socketHandlers.ts` - agent 자동실행 제거
41
+ - `web/src/styles/global.css` - agent 관련 CSS 제거
42
+ - `package.json` - 버전 2.4.0
43
+ - `README.md` - 문서 업데이트
44
+
45
+ ### Deleted Files
46
+ - `web/src/components/Steps/AgentStep.tsx`
47
+ - `web/src/components/Setup/AgentSelector.tsx`
48
+
49
+ ## Technical Context
50
+
51
+ ### Key Concepts
52
+ - Git worktree 관리
53
+ - Zustand 상태 관리
54
+ - Socket.IO 실시간 터미널 통신
55
+ - node-pty 터미널 에뮬레이션
56
+ - React 컴포넌트 라이프사이클
57
+
58
+ ### Important Changes
59
+
60
+ **web/src/stores/useAppStore.ts**
61
+ ```typescript
62
+ // 중복 체크 추가
63
+ addTerminal: (terminal) => set((state) => {
64
+ if (state.terminals.some(t => t.sessionId === terminal.sessionId)) {
65
+ return state;
66
+ }
67
+ return { terminals: [...state.terminals, terminal] };
68
+ }),
69
+
70
+ // 조건 체크 추가
71
+ restoreExistingWorktrees: async () => {
72
+ const { terminals } = get();
73
+ if (terminals.length > 0) {
74
+ return;
75
+ }
76
+ // ...
77
+ }
78
+ ```
79
+
80
+ **server/socketHandlers.ts**
81
+ - agent 자동 실행 코드 제거
82
+ - 순수 shell만 열리도록 변경
83
+
84
+ ### Issues Resolved
85
+ 1. **세션 중복 버그**: 새로고침 시 `restoreExistingWorktrees()`가 무조건 실행되어 `addTerminal()`이 중복 호출됨
86
+ - 해결: 두 함수에 중복/조건 체크 추가
87
+
88
+ ## Git Commits
89
+ 1. `159f6499` - refactor: remove AI agent selection feature
90
+ 2. `d382c1f7` - fix: prevent session duplication on page refresh
91
+ 3. `8258b0f2` - chore: bump version to 2.4.0 for npm release
92
+
93
+ ## Next Steps
94
+ - `npm publish`로 v2.4.0 배포
95
+ - 배포 후 실제 환경에서 테스트
@@ -0,0 +1,85 @@
1
+ # Context Snapshot
2
+
3
+ ## Session Metadata
4
+ - **Created**: 2026-01-06T21:15:00+09:00
5
+ - **CLI**: Claude Code
6
+ - **Project**: /Users/hyungju-lee/workspace/work/new/utils/hjWorktree-cli
7
+
8
+ ## Conversation Summary
9
+
10
+ ### User Requests
11
+ - macOS에서 글로벌 설치 후 `hjWorktree` 실행 시 `[Error: posix_spawnp failed.]` 에러 해결
12
+ - 원인 분석 및 해결책 구현 (plan mode, context7, ultrathink 사용)
13
+ - 수정사항 커밋
14
+ - npm 배포를 위한 버전 업그레이드 및 README.md 업데이트
15
+
16
+ ### Completed Tasks
17
+ 1. **문제 분석**: node-pty의 spawn-helper 실행 권한 문제 및 심볼릭 링크 해석 문제 식별
18
+ 2. **node-pty 업데이트**: ^1.0.0 → ^1.1.0 (spawn-helper 수정 포함)
19
+ 3. **postinstall 스크립트 추가**: macOS/Linux에서 spawn-helper 실행 권한 자동 수정
20
+ 4. **경로 정규화 함수 추가**: `normalizePath()` - 심볼릭 링크 해석 (예: `/tmp` → `/private/tmp`)
21
+ 5. **환경 변수 정제 함수 추가**: `sanitizeEnv()` - undefined/null 값 필터링
22
+ 6. **shell 경로 개선**: `getShell()` - 심볼릭 링크 해석 및 PATH 폴백
23
+ 7. **버전 업데이트**: 2.2.0 → 2.3.0
24
+ 8. **README.md 업데이트**: v2.3.0 changelog 추가
25
+
26
+ ### Modified Files
27
+ - `package.json` - node-pty 버전 업데이트, postinstall 스크립트 추가, 버전 2.3.0
28
+ - `server/socketHandlers.ts` - sanitizeEnv(), normalizePath(), getShell() 개선
29
+ - `scripts/fix-pty-permissions.js` - 새 파일 (spawn-helper 권한 수정)
30
+ - `shared/constants.ts` - APP_VERSION = '2.3.0'
31
+ - `README.md` - v2.3.0 changelog 추가
32
+
33
+ ## Technical Context
34
+
35
+ ### Key Concepts
36
+ - **posix_spawnp**: POSIX 시스템에서 새 프로세스 생성하는 시스템 콜
37
+ - **node-pty spawn-helper**: macOS에서 PTY 프로세스 spawn에 사용되는 헬퍼 바이너리
38
+ - **심볼릭 링크 해석**: `fs.realpathSync()`로 실제 경로 획득
39
+ - **환경 변수 정제**: TypeScript의 타입 캐스팅은 런타임에서 효과 없음
40
+
41
+ ### Important Changes
42
+
43
+ **server/socketHandlers.ts**
44
+ ```typescript
45
+ // 새로 추가된 함수들
46
+ function sanitizeEnv(env: NodeJS.ProcessEnv): Record<string, string>
47
+ function normalizePath(targetPath: string): string
48
+
49
+ // getShell() 개선 - 심볼릭 링크 해석 + PATH 폴백
50
+ function getShell(): string {
51
+ if (process.platform === 'win32') return 'powershell.exe';
52
+ const shellPath = process.env.SHELL || '/bin/bash';
53
+ try {
54
+ const resolvedShell = realpathSync(shellPath);
55
+ fs.accessSync(resolvedShell, fs.constants.X_OK);
56
+ return resolvedShell;
57
+ } catch {
58
+ return path.basename(shellPath); // PATH에서 검색하도록 폴백
59
+ }
60
+ }
61
+
62
+ // PTY spawn 시 정규화 적용
63
+ const normalizedCwd = normalizePath(worktreePath);
64
+ env: sanitizeEnv({ ...process.env, ... })
65
+ ```
66
+
67
+ **scripts/fix-pty-permissions.js**
68
+ - macOS/Linux에서 postinstall 시 자동 실행
69
+ - `find node_modules -name "spawn-helper"` 로 모든 spawn-helper 찾아서 chmod 755
70
+
71
+ ### Resolved Issues
72
+ - **GitHub Issue #670**: node-pty posix_spawnp failed after calling spawn multiple times
73
+ - **spawn-helper 실행 권한 문제**: npm tarball에 실행 비트 없이 배포되는 문제
74
+
75
+ ## Next Steps
76
+ - `npm publish`로 v2.3.0 npm에 배포
77
+ - 글로벌 설치 후 실제 테스트: `npm i -g hjworktree-cli && hjWorktree`
78
+
79
+ ## Git Commits Made
80
+ 1. `9b80d725` - fix: resolve macOS posix_spawnp failed error for global install
81
+ 2. `44ce4009` - chore: bump version to 2.3.0 for npm release
82
+
83
+ ## References
84
+ - [node-pty Issue #670](https://github.com/microsoft/node-pty/issues/670)
85
+ - [node-pty Releases](https://github.com/microsoft/node-pty/releases)
package/README.md CHANGED
@@ -4,7 +4,8 @@ Web-based git worktree manager for running multiple AI coding agents in parallel
4
4
 
5
5
  ## Features
6
6
 
7
- - **Multiple AI Agents Support**: Run Codex CLI, Claude Code, and Gemini CLI simultaneously
7
+ - **Multiple Terminals**: Run multiple terminal sessions in parallel across git worktrees
8
+ - **AI Agent Ready**: Execute any AI coding agent (Claude Code, Codex CLI, Gemini CLI, etc.) directly in terminals
8
9
  - **Git Worktree Management**: Create, manage, and delete worktrees with automatic cleanup
9
10
  - **Real-time Terminal**: xterm.js terminals with full PTY support via Socket.IO
10
11
  - **Session Management**:
@@ -13,6 +14,7 @@ Web-based git worktree manager for running multiple AI coding agents in parallel
13
14
  - Individual and bulk session deletion
14
15
  - Add new worktrees while sessions are running
15
16
  - **Modern Web UI**: React + Zustand state management
17
+ - **Auto Port Detection**: Automatically finds available port when running multiple instances
16
18
 
17
19
  ## Installation
18
20
 
@@ -33,10 +35,24 @@ hjWorktree
33
35
 
34
36
  This opens a web UI in your browser where you can:
35
37
 
38
+ ### Running Multiple Projects
39
+
40
+ You can run `hjWorktree` in multiple projects simultaneously. The CLI automatically detects available ports:
41
+
42
+ ```bash
43
+ # Project A - uses default port 3847
44
+ cd /path/to/project-a && hjWorktree
45
+
46
+ # Project B - automatically uses port 3848
47
+ cd /path/to/project-b && hjWorktree
48
+
49
+ # Or specify a custom port
50
+ PORT=5000 hjWorktree
51
+ ```
52
+
36
53
  1. **Select Branch**: Choose the base branch for worktrees
37
- 2. **Select Agent**: Pick an AI coding agent (Codex, Claude, Gemini)
38
- 3. **Set Worktree Count**: Specify how many parallel worktrees to create
39
- 4. **Run**: Launch terminals with AI agents in each worktree
54
+ 2. **Set Worktree Count**: Specify how many parallel worktrees to create
55
+ 3. **Run**: Launch terminals in each worktree, then run your preferred AI agent
40
56
 
41
57
  ## UI Overview
42
58
 
@@ -44,11 +60,10 @@ This opens a web UI in your browser where you can:
44
60
  +---------------------------+-----------------------------------+
45
61
  | SETUP [−] | |
46
62
  | ① Branch: main | |
47
- | ② Agent: Claude Code | Terminal View |
48
- | ③ Count: 3 | |
63
+ | ② Count: 3 | Terminal View |
49
64
  +---------------------------+ |
50
- | SESSIONS | |
51
- | ▼ main (3) | |
65
+ | SESSIONS | $ claude |
66
+ | ▼ main (3) | > Ready to help! |
52
67
  | ● main-project-1 | |
53
68
  | ○ main-project-2 | |
54
69
  | ○ main-project-3 | |
@@ -59,12 +74,16 @@ This opens a web UI in your browser where you can:
59
74
 
60
75
  ## Supported AI Agents
61
76
 
77
+ Run any AI coding agent directly in your terminals:
78
+
62
79
  | Agent | Command | Description |
63
80
  |-------|---------|-------------|
64
- | Codex CLI | `codex` | OpenAI Codex CLI agent |
65
81
  | Claude Code | `claude` | Anthropic Claude Code agent |
82
+ | Codex CLI | `codex` | OpenAI Codex CLI agent |
66
83
  | Gemini CLI | `gemini` | Google Gemini CLI agent |
67
84
 
85
+ Simply type the agent command in any terminal session to start coding with AI assistance.
86
+
68
87
  ## Development
69
88
 
70
89
  ```bash
@@ -114,6 +133,16 @@ hjWorktree-cli/
114
133
 
115
134
  ## Changelog
116
135
 
136
+ ### v2.5.0
137
+ - **Auto Port Detection**: Automatically finds available port (range 3847-3856) when default port is in use
138
+ - **Multi-Project Support**: Run hjWorktree in multiple projects simultaneously without port conflicts
139
+ - **Custom Port**: Support `PORT` environment variable for explicit port specification
140
+
141
+ ### v2.4.0
142
+ - **Simplified Workflow**: Removed AI agent selection step (3-step wizard: Branch → Count → Run)
143
+ - **Pure Terminal**: Terminals now open as shell, run any AI agent manually (`claude`, `codex`, `gemini`)
144
+ - **Session Fix**: Fixed session duplication bug on page refresh
145
+
117
146
  ### v2.3.0
118
147
  - **macOS Fix**: Resolved `posix_spawnp failed` error on global installation
119
148
  - **node-pty Update**: Upgraded from v1.0.0 to v1.1.0 with spawn-helper fix
@@ -130,7 +159,7 @@ hjWorktree-cli/
130
159
 
131
160
  ### v2.1.0
132
161
  - Improved LNB with session management and always-visible navigation
133
- - Implemented 4-step wizard navigation with LNB
162
+ - Implemented wizard navigation with LNB
134
163
  - Rebuilt as web-based application
135
164
 
136
165
  ## License
package/bin/cli.js CHANGED
@@ -4,13 +4,65 @@ import { spawn, execSync } from 'child_process';
4
4
  import { fileURLToPath } from 'url';
5
5
  import path from 'path';
6
6
  import fs from 'fs';
7
+ import getPort, { portNumbers } from 'get-port';
7
8
 
8
9
  const __filename = fileURLToPath(import.meta.url);
9
10
  const __dirname = path.dirname(__filename);
10
11
 
11
- const PORT = process.env.PORT || 3847;
12
+ const DEFAULT_PORT = 3847;
13
+ const PORT_RANGE_SIZE = 10;
12
14
  const CWD = process.cwd();
13
15
 
16
+ // Check if PORT is explicitly set by user
17
+ const userSpecifiedPort = process.env.PORT;
18
+
19
+ /**
20
+ * Find an available port within the configured range.
21
+ * If user explicitly set PORT env var, use that instead.
22
+ */
23
+ async function findAvailablePort() {
24
+ if (userSpecifiedPort) {
25
+ const port = parseInt(userSpecifiedPort, 10);
26
+ if (isNaN(port) || port < 1 || port > 65535) {
27
+ console.error(`Error: Invalid PORT value "${userSpecifiedPort}". Must be a number between 1 and 65535.`);
28
+ process.exit(1);
29
+ }
30
+ return {
31
+ port,
32
+ isExplicit: true,
33
+ isDefault: port === DEFAULT_PORT
34
+ };
35
+ }
36
+
37
+ const maxPort = DEFAULT_PORT + PORT_RANGE_SIZE - 1;
38
+
39
+ try {
40
+ const port = await getPort({
41
+ port: portNumbers(DEFAULT_PORT, maxPort)
42
+ });
43
+
44
+ // get-port returns a random port if none in range are available
45
+ if (port < DEFAULT_PORT || port > maxPort) {
46
+ console.error(`Error: No available ports in range ${DEFAULT_PORT}-${maxPort}.`);
47
+ console.error('All ports in the range are currently in use.');
48
+ console.error('');
49
+ console.error('Solutions:');
50
+ console.error(` 1. Free up a port in the range ${DEFAULT_PORT}-${maxPort}`);
51
+ console.error(' 2. Specify a different port: PORT=4000 hjWorktree');
52
+ process.exit(1);
53
+ }
54
+
55
+ return {
56
+ port,
57
+ isExplicit: false,
58
+ isDefault: port === DEFAULT_PORT
59
+ };
60
+ } catch (error) {
61
+ console.error('Error finding available port:', error.message);
62
+ process.exit(1);
63
+ }
64
+ }
65
+
14
66
  // Check if it's a git repository
15
67
  try {
16
68
  execSync('git status', { cwd: CWD, stdio: 'ignore' });
@@ -20,6 +72,9 @@ try {
20
72
  process.exit(1);
21
73
  }
22
74
 
75
+ // Find available port
76
+ const { port: PORT, isExplicit, isDefault } = await findAvailablePort();
77
+
23
78
  // Find the server entry point
24
79
  let serverPath = path.join(__dirname, '../dist/server/index.js');
25
80
 
@@ -36,7 +91,14 @@ if (!fs.existsSync(serverPath)) {
36
91
 
37
92
  console.log(`Starting hjWorktree CLI...`);
38
93
  console.log(`Working directory: ${CWD}`);
39
- console.log(`Server port: ${PORT}`);
94
+
95
+ if (isExplicit) {
96
+ console.log(`Server port: ${PORT} (user specified)`);
97
+ } else if (isDefault) {
98
+ console.log(`Server port: ${PORT}`);
99
+ } else {
100
+ console.log(`Server port: ${PORT} (default port ${DEFAULT_PORT} was in use)`);
101
+ }
40
102
 
41
103
  // Start the server
42
104
  const serverArgs = serverPath.endsWith('.ts')
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAWnC,QAAA,MAAM,GAAG,6CAAY,CAAC;AACtB,QAAA,MAAM,UAAU,oGAAoB,CAAC;AACrC,QAAA,MAAM,EAAE,+HAKN,CAAC;AAsDH,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAWnC,QAAA,MAAM,GAAG,6CAAY,CAAC;AACtB,QAAA,MAAM,UAAU,oGAAoB,CAAC;AACrC,QAAA,MAAM,EAAE,+HAKN,CAAC;AAiEH,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC"}
@@ -44,6 +44,16 @@ process.on('SIGTERM', () => {
44
44
  killAllSessions();
45
45
  process.exit(0);
46
46
  });
47
+ // Handle port in use error (race condition protection)
48
+ httpServer.on('error', (error) => {
49
+ if (error.code === 'EADDRINUSE') {
50
+ console.error(`\nError: Port ${PORT} is already in use.`);
51
+ console.error('This may happen if another process started using the port just now.');
52
+ console.error('Please try again or specify a different port: PORT=4000 hjWorktree');
53
+ process.exit(1);
54
+ }
55
+ throw error;
56
+ });
47
57
  // Start server
48
58
  httpServer.listen(PORT, () => {
49
59
  console.log(`
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"socketHandlers.d.ts","sourceRoot":"","sources":["../../server/socketHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,WAAW,CAAC;AA0I3C,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAwI1D;AAED,wBAAgB,eAAe,IAAI,IAAI,CAMtC"}
1
+ {"version":3,"file":"socketHandlers.d.ts","sourceRoot":"","sources":["../../server/socketHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,WAAW,CAAC;AAkI3C,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAiJ1D;AAED,wBAAgB,eAAe,IAAI,IAAI,CAMtC"}
@@ -1,5 +1,4 @@
1
1
  import * as pty from 'node-pty';
2
- import { AI_AGENTS } from '../shared/constants.js';
3
2
  import fs, { realpathSync } from 'fs';
4
3
  import path from 'path';
5
4
  import { promisify } from 'util';
@@ -82,10 +81,6 @@ async function waitForSpawnInterval() {
82
81
  lastSpawnTime = Date.now();
83
82
  }
84
83
  const sessions = new Map();
85
- function getAgentCommand(agentType) {
86
- const agent = AI_AGENTS.find(a => a.id === agentType);
87
- return agent?.command || 'bash';
88
- }
89
84
  function getShell() {
90
85
  if (process.platform === 'win32') {
91
86
  return 'powershell.exe';
@@ -106,11 +101,23 @@ export function setupSocketHandlers(io, cwd) {
106
101
  console.log(`Client connected: ${socket.id}`);
107
102
  // Terminal create
108
103
  socket.on('terminal:create', async (data) => {
109
- const { sessionId, worktreePath, agentType } = data;
110
- console.log(`Creating terminal session: ${sessionId} at ${worktreePath} with ${agentType}`);
104
+ const { sessionId, worktreePath } = data;
105
+ console.log(`Creating terminal session: ${sessionId} at ${worktreePath}`);
106
+ // Check if session already exists (reattach scenario)
107
+ const existingSession = sessions.get(sessionId);
108
+ if (existingSession && existingSession.pty) {
109
+ console.log(`Reattaching to existing session: ${sessionId}`);
110
+ // Update socketId for the existing session
111
+ existingSession.socketId = socket.id;
112
+ // Re-register output handler for new socket
113
+ existingSession.pty.onData((output) => {
114
+ socket.emit('terminal:output', { sessionId, data: output });
115
+ });
116
+ socket.emit('terminal:created', { sessionId, reattached: true });
117
+ return;
118
+ }
111
119
  try {
112
120
  const shell = getShell();
113
- const agentCommand = getAgentCommand(agentType);
114
121
  // Validate path before spawning
115
122
  const pathValidation = await validatePath(worktreePath);
116
123
  if (!pathValidation.valid) {
@@ -140,7 +147,6 @@ export function setupSocketHandlers(io, cwd) {
140
147
  sessions.set(sessionId, {
141
148
  pty: ptyProcess,
142
149
  worktreePath,
143
- agentType,
144
150
  socketId: socket.id,
145
151
  });
146
152
  // Send output to client
@@ -153,10 +159,6 @@ export function setupSocketHandlers(io, cwd) {
153
159
  socket.emit('terminal:exit', { sessionId, exitCode });
154
160
  sessions.delete(sessionId);
155
161
  });
156
- // Start the AI agent after a short delay
157
- setTimeout(() => {
158
- ptyProcess.write(`${agentCommand}\r`);
159
- }, 500);
160
162
  socket.emit('terminal:created', { sessionId });
161
163
  }
162
164
  catch (error) {
@@ -197,20 +199,19 @@ export function setupSocketHandlers(io, cwd) {
197
199
  socket.on('terminal:broadcast', (data) => {
198
200
  const socketSessions = Array.from(sessions.entries())
199
201
  .filter(([, session]) => session.socketId === socket.id);
200
- for (const [sessionId, session] of socketSessions) {
202
+ for (const [, session] of socketSessions) {
201
203
  session.pty.write(data.data);
202
204
  }
203
205
  });
204
206
  // Disconnect handling
205
207
  socket.on('disconnect', () => {
206
208
  console.log(`Client disconnected: ${socket.id}`);
207
- // Kill all sessions owned by this socket
209
+ // Keep sessions alive but mark socketId as null for potential reattach
208
210
  const socketSessions = Array.from(sessions.entries())
209
211
  .filter(([, session]) => session.socketId === socket.id);
210
212
  for (const [sessionId, session] of socketSessions) {
211
- console.log(`Killing orphaned terminal session: ${sessionId}`);
212
- session.pty.kill();
213
- sessions.delete(sessionId);
213
+ console.log(`Detaching terminal session (keeping alive): ${sessionId}`);
214
+ session.socketId = null;
214
215
  }
215
216
  });
216
217
  });
@@ -1 +1 @@
1
- {"version":3,"file":"socketHandlers.js","sourceRoot":"","sources":["../../server/socketHandlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socketHandlers.js","sourceRoot":"","sources":["../../server/socketHandlers.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
- import type { AgentType } from './types/index.js';
2
- export declare const AI_AGENTS: AgentType[];
3
1
  export declare const MAX_PARALLEL_COUNT = 10;
4
2
  export declare const MIN_PARALLEL_COUNT = 1;
5
3
  export declare const DEFAULT_PARALLEL_COUNT = 3;
6
4
  export declare const BRANCH_POLL_INTERVAL = 5000;
7
5
  export declare const APP_NAME = "hjWorktree CLI";
8
- export declare const APP_VERSION = "2.3.0";
6
+ export declare const APP_VERSION = "2.5.0";
9
7
  export declare const DEFAULT_PORT = 3847;
8
+ export declare const PORT_RANGE_SIZE = 10;
10
9
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../shared/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,SAAS,EAsBhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,eAAO,MAAM,QAAQ,mBAAmB,CAAC;AACzC,eAAO,MAAM,WAAW,UAAU,CAAC;AACnC,eAAO,MAAM,YAAY,OAAO,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../shared/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,eAAO,MAAM,QAAQ,mBAAmB,CAAC;AACzC,eAAO,MAAM,WAAW,UAAU,CAAC;AACnC,eAAO,MAAM,YAAY,OAAO,CAAC;AACjC,eAAO,MAAM,eAAe,KAAK,CAAC"}
@@ -1,31 +1,9 @@
1
- export const AI_AGENTS = [
2
- {
3
- id: 'codex',
4
- name: 'Codex CLI',
5
- command: 'codex',
6
- installCommand: 'npm install -g @openai/codex',
7
- description: 'OpenAI Codex CLI - AI-powered coding assistant'
8
- },
9
- {
10
- id: 'claude',
11
- name: 'Claude Code',
12
- command: 'claude',
13
- installCommand: 'npm install -g @anthropic-ai/claude-code',
14
- description: 'Anthropic Claude Code - Advanced AI coding assistant'
15
- },
16
- {
17
- id: 'gemini',
18
- name: 'Gemini CLI',
19
- command: 'gemini',
20
- installCommand: 'npm install -g @google/gemini-cli',
21
- description: 'Google Gemini CLI - Multi-modal AI assistant'
22
- }
23
- ];
24
1
  export const MAX_PARALLEL_COUNT = 10;
25
2
  export const MIN_PARALLEL_COUNT = 1;
26
3
  export const DEFAULT_PARALLEL_COUNT = 3;
27
4
  export const BRANCH_POLL_INTERVAL = 5000; // 5 seconds
28
5
  export const APP_NAME = 'hjWorktree CLI';
29
- export const APP_VERSION = '2.3.0';
6
+ export const APP_VERSION = '2.5.0';
30
7
  export const DEFAULT_PORT = 3847;
8
+ export const PORT_RANGE_SIZE = 10; // Will try ports 3847-3856
31
9
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../shared/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAgB;IACpC;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;QAChB,cAAc,EAAE,8BAA8B;QAC9C,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,QAAQ;QACjB,cAAc,EAAE,0CAA0C;QAC1D,WAAW,EAAE,sDAAsD;KACpE;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,QAAQ;QACjB,cAAc,EAAE,mCAAmC;QACnD,WAAW,EAAE,8CAA8C;KAC5D;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,CAAC,YAAY;AAEtD,MAAM,CAAC,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AACnC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../shared/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,CAAC,YAAY;AAEtD,MAAM,CAAC,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AACnC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC,CAAC,2BAA2B"}