@walwal-harness/cli 4.0.0-beta.11 → 4.0.0-beta.12
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walwal-harness/cli",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.12",
|
|
4
4
|
"description": "Production harness for AI agent engineering — Planner, Generator(BE/FE), Evaluator(Func/Visual), optional Brainstormer (requirements refinement). Supports React and Flutter FE stacks.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"walwal-harness": "bin/init.js"
|
|
@@ -92,52 +92,48 @@ if [ -n "${TMUX:-}" ]; then
|
|
|
92
92
|
fi
|
|
93
93
|
|
|
94
94
|
# ══════════════════════════════════════════
|
|
95
|
-
# Case B: tmux 밖에 있음 → 새 세션 생성
|
|
95
|
+
# Case B: tmux 밖에 있음 → 새 세션 생성 + Terminal.app에서 자동 attach
|
|
96
96
|
# ══════════════════════════════════════════
|
|
97
97
|
|
|
98
|
-
# 이미 세션이 있으면 attach만
|
|
98
|
+
# 이미 세션이 있으면 Terminal.app에서 attach만
|
|
99
99
|
if tmux has-session -t "$SESSION_NAME" 2>/dev/null; then
|
|
100
|
-
echo "[studio] Session '$SESSION_NAME' already exists.
|
|
101
|
-
|
|
100
|
+
echo "[studio] Session '$SESSION_NAME' already exists. Opening Terminal..."
|
|
101
|
+
osascript -e "tell application \"Terminal\" to do script \"tmux attach -t $SESSION_NAME\"" 2>/dev/null \
|
|
102
|
+
|| echo "[studio] ATTACH_TMUX=$SESSION_NAME"
|
|
103
|
+
echo "[studio] OPENED_TERMINAL=true"
|
|
102
104
|
exit 0
|
|
103
105
|
fi
|
|
104
106
|
|
|
105
107
|
echo "[studio] Creating new tmux session with 3-column layout..."
|
|
106
108
|
|
|
107
|
-
# 1. 새 세션 → Left pane (Claude
|
|
108
|
-
|
|
109
|
-
-P -F '#{pane_id}')
|
|
110
|
-
|
|
111
|
-
# 2. Left 35% | Right 65%
|
|
112
|
-
PANE_MID=$(tmux split-window -h -p 65 -t "$PANE_MAIN" -c "$PROJECT_ROOT" \
|
|
109
|
+
# 1. 새 세션 → Left pane (Dashboard 전용 — Claude는 현재 세션에서 계속)
|
|
110
|
+
PANE_DASH=$(tmux new-session -d -s "$SESSION_NAME" -c "$PROJECT_ROOT" -x 220 -y 55 \
|
|
113
111
|
-P -F '#{pane_id}' \
|
|
114
112
|
"bash --norc --noprofile -c 'exec bash \"${SCRIPT_DIR}/harness-dashboard-v4.sh\" \"${PROJECT_ROOT}\"'")
|
|
115
113
|
|
|
116
|
-
#
|
|
117
|
-
PANE_RIGHT=$(tmux split-window -h -p
|
|
114
|
+
# 2. Split: Dashboard | Monitor
|
|
115
|
+
PANE_RIGHT=$(tmux split-window -h -p 50 -t "$PANE_DASH" -c "$PROJECT_ROOT" \
|
|
118
116
|
-P -F '#{pane_id}' \
|
|
119
117
|
"bash --norc --noprofile -c 'exec bash \"${SCRIPT_DIR}/harness-monitor.sh\" \"${PROJECT_ROOT}\"'")
|
|
120
118
|
|
|
121
|
-
#
|
|
122
|
-
PANE_HISTORY=$(tmux split-window -v -p 55 -t "$
|
|
119
|
+
# 3. Split Dashboard vertically: Dashboard top | History bottom
|
|
120
|
+
PANE_HISTORY=$(tmux split-window -v -p 55 -t "$PANE_DASH" -c "$PROJECT_ROOT" \
|
|
123
121
|
-P -F '#{pane_id}' \
|
|
124
122
|
"bash --norc --noprofile -c 'exec bash \"${SCRIPT_DIR}/harness-prompt-history.sh\" \"${PROJECT_ROOT}\"'")
|
|
125
123
|
|
|
126
|
-
# 5. Left pane에서 Claude 자동 실행
|
|
127
|
-
tmux send-keys -t "$PANE_MAIN" "unset npm_config_prefix 2>/dev/null" Enter
|
|
128
|
-
tmux send-keys -t "$PANE_MAIN" "clear && $CLAUDE_CMD" Enter
|
|
129
|
-
|
|
130
124
|
# Pane titles
|
|
131
|
-
tmux select-pane -t "$
|
|
132
|
-
tmux select-pane -t "$PANE_MID" -T "Dashboard"
|
|
125
|
+
tmux select-pane -t "$PANE_DASH" -T "Dashboard"
|
|
133
126
|
tmux select-pane -t "$PANE_HISTORY" -T "Command History"
|
|
134
127
|
tmux select-pane -t "$PANE_RIGHT" -T "Team Monitor"
|
|
135
128
|
|
|
136
129
|
tmux set-option -t "$SESSION_NAME" pane-border-status top 2>/dev/null || true
|
|
137
130
|
tmux set-option -t "$SESSION_NAME" pane-border-format " #{pane_title} " 2>/dev/null || true
|
|
138
131
|
|
|
139
|
-
#
|
|
140
|
-
|
|
132
|
+
# Terminal.app에서 자동으로 tmux attach
|
|
133
|
+
osascript -e "tell application \"Terminal\"
|
|
134
|
+
activate
|
|
135
|
+
do script \"tmux attach -t $SESSION_NAME\"
|
|
136
|
+
end tell" 2>/dev/null
|
|
141
137
|
|
|
142
138
|
echo "[studio] Session '$SESSION_NAME' created."
|
|
143
|
-
echo "[studio]
|
|
139
|
+
echo "[studio] OPENED_TERMINAL=true"
|
|
@@ -16,19 +16,8 @@ bash scripts/harness-studio-setup.sh .
|
|
|
16
16
|
|
|
17
17
|
스크립트 출력을 확인합니다:
|
|
18
18
|
|
|
19
|
-
- **`Layout ready`** →
|
|
20
|
-
- **`
|
|
21
|
-
사용자에게 아래 안내를 출력하고 **STOP**합니다:
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
Studio 레이아웃이 준비되었습니다!
|
|
25
|
-
다른 터미널에서 아래 명령을 실행하세요:
|
|
26
|
-
|
|
27
|
-
tmux attach -t harness-studio
|
|
28
|
-
|
|
29
|
-
새 창에서 Claude가 자동 실행됩니다. 거기서 "팀 가동"을 입력하면 Teams가 시작됩니다.
|
|
30
|
-
```
|
|
31
|
-
|
|
19
|
+
- **`Layout ready`** → tmux 안에서 split 완료. 바로 Step 1로.
|
|
20
|
+
- **`OPENED_TERMINAL=true`** → 새 Terminal.app 창에 Studio가 자동으로 열림. 바로 Step 1로.
|
|
32
21
|
- **`already set up`** → 이미 구축됨. 바로 Step 1로.
|
|
33
22
|
|
|
34
23
|
## Step 1: Queue 초기화
|