claude-controller 0.1.1 → 0.1.2

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 (2) hide show
  1. package/package.json +1 -1
  2. package/postinstall.sh +96 -15
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-controller",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Claude Code headless daemon controller — FIFO-based async task dispatch, Git Worktree isolation, auto-checkpointing, and a web dashboard",
5
5
  "license": "MIT",
6
6
  "author": "choiwon",
package/postinstall.sh CHANGED
@@ -1,30 +1,111 @@
1
1
  #!/usr/bin/env bash
2
2
  # ============================================================
3
- # postinstall — npm install 후 런타임 디렉토리 권한 설정
3
+ # postinstall — npm install 후 런타임 디렉토리, 권한, 의존성 자동 설정
4
4
  # ============================================================
5
- set -euo pipefail
5
+ set -uo pipefail
6
6
 
7
7
  CONTROLLER_DIR="$(cd "$(dirname "$0")" && pwd)"
8
8
 
9
- # 런타임 디렉토리 생성 (패키지에 포함되지 않는 것들)
9
+ # ── 색상 ──
10
+ RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; BOLD='\033[1m'; NC='\033[0m'
11
+
12
+ ok() { printf " ${GREEN}✓${NC} %s\n" "$1"; }
13
+ warn() { printf " ${YELLOW}!${NC} %s\n" "$1"; }
14
+ fail() { printf " ${RED}✗${NC} %s\n" "$1"; }
15
+ info() { printf " ${CYAN}→${NC} %s\n" "$1"; }
16
+
17
+ echo ""
18
+ printf " ${BOLD}claude-controller${NC} setup\n"
19
+ echo " ─────────────────────────────────"
20
+
21
+ # ── 1. 런타임 디렉토리 생성 ──
10
22
  for dir in logs sessions data queue worktrees uploads certs; do
11
23
  mkdir -p "${CONTROLLER_DIR}/${dir}"
12
24
  done
25
+ ok "런타임 디렉토리 생성 완료"
13
26
 
14
- # bin 스크립트에 실행 권한 부여
27
+ # ── 2. 실행 권한 부여 ──
15
28
  chmod +x "${CONTROLLER_DIR}/bin/"* 2>/dev/null || true
16
29
  chmod +x "${CONTROLLER_DIR}/service/"*.sh 2>/dev/null || true
30
+ ok "실행 권한 설정 완료"
17
31
 
32
+ # ── 3. Claude CLI 확인/설치 ──
33
+ CLAUDE_FOUND=false
34
+ if command -v claude &>/dev/null; then
35
+ CLAUDE_VER=$(claude --version 2>/dev/null | head -1)
36
+ ok "Claude CLI 감지: ${CLAUDE_VER}"
37
+ CLAUDE_FOUND=true
38
+ else
39
+ warn "Claude CLI가 설치되어 있지 않습니다"
40
+ info "자동 설치 시도: npm i -g @anthropic-ai/claude-code"
41
+ if npm i -g @anthropic-ai/claude-code 2>/dev/null; then
42
+ CLAUDE_VER=$(claude --version 2>/dev/null | head -1)
43
+ ok "Claude CLI 설치 완료: ${CLAUDE_VER}"
44
+ CLAUDE_FOUND=true
45
+ else
46
+ fail "Claude CLI 자동 설치 실패"
47
+ warn "수동 설치: npm i -g @anthropic-ai/claude-code"
48
+ warn "권한 오류 시: sudo npm i -g @anthropic-ai/claude-code"
49
+ fi
50
+ fi
51
+
52
+ # ── 4. python3 확인 ──
53
+ PYTHON_FOUND=false
54
+ if command -v python3 &>/dev/null; then
55
+ PY_VER=$(python3 --version 2>/dev/null)
56
+ ok "Python3 감지: ${PY_VER}"
57
+ PYTHON_FOUND=true
58
+ else
59
+ fail "python3를 찾을 수 없습니다 (웹 대시보드에 필요)"
60
+ warn "macOS: brew install python3"
61
+ warn "Ubuntu: sudo apt install python3"
62
+ fi
63
+
64
+ # ── 5. 기본 설정 파일 생성 ──
65
+ SETTINGS_FILE="${CONTROLLER_DIR}/data/settings.json"
66
+ if [[ ! -f "$SETTINGS_FILE" ]]; then
67
+ cat > "$SETTINGS_FILE" << 'SETTINGS'
68
+ {
69
+ "skip_permissions": true,
70
+ "allowed_tools": "Bash,Read,Write,Edit,Glob,Grep,Agent,NotebookEdit,WebFetch,WebSearch",
71
+ "model": "",
72
+ "max_jobs": 10,
73
+ "checkpoint_interval": 5,
74
+ "target_repo": "",
75
+ "base_branch": "main",
76
+ "append_system_prompt": "",
77
+ "web_port": 3100,
78
+ "auth_required": false
79
+ }
80
+ SETTINGS
81
+ ok "기본 설정 파일 생성: data/settings.json"
82
+ else
83
+ ok "기존 설정 파일 유지"
84
+ fi
85
+
86
+ # ── 결과 ──
18
87
  echo ""
19
- echo " claude-controller 설치 완료!"
20
- echo ""
21
- echo " 사용법:"
22
- echo " claude-controller start 서비스 시작"
23
- echo " claude-controller stop 서비스 중지"
24
- echo " claude-controller status 상태 확인"
25
- echo " claude-send \"프롬프트\" 작업 전송"
26
- echo " claude-start 서비스 + TUI 실행"
27
- echo ""
28
- echo " 대시보드:"
29
- echo " npm run server 웹 서버 시작 (localhost:8420)"
88
+ echo " ─────────────────────────────────"
89
+
90
+ if $CLAUDE_FOUND && $PYTHON_FOUND; then
91
+ printf " ${GREEN}${BOLD}설치 완료! 바로 실행하세요:${NC}\n"
92
+ echo ""
93
+ printf " ${BOLD}claude-start${NC}\n"
94
+ echo ""
95
+ info " 대시보드: http://localhost:3100"
96
+ info "CLI 전송: claude-send \"프롬프트\""
97
+ info " 모드: claude-sh"
98
+ else
99
+ printf " ${YELLOW}${BOLD}설치 완료 (일부 의존성 누락)${NC}\n"
100
+ echo ""
101
+ if ! $CLAUDE_FOUND; then
102
+ warn "Claude CLI 설치 후 실행: npm i -g @anthropic-ai/claude-code"
103
+ fi
104
+ if ! $PYTHON_FOUND; then
105
+ warn "python3 설치 필요 (웹 대시보드용)"
106
+ fi
107
+ echo ""
108
+ info "의존성 설치 후: claude-start"
109
+ fi
110
+
30
111
  echo ""