@walwal-harness/cli 4.0.0 → 5.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.
@@ -1,148 +0,0 @@
1
- #!/bin/bash
2
- # harness-tmux-v4.sh — v4 Agent Teams: 원커맨드 실행
3
- #
4
- # ┌──────────────┬──────────────┬──────────────┐
5
- # │ │ Dashboard │ TEAM 1 │
6
- # │ Main Claude │ (v4 queue) ├──────────────┤
7
- # │ (Lead) ├──────────────┤ TEAM 2 │
8
- # │ │ Prompt ├──────────────┤
9
- # │ │ History │ TEAM 3 │
10
- # └──────────────┴──────────────┴──────────────┘
11
- #
12
- # Usage:
13
- # bash scripts/harness-tmux-v4.sh # 레이아웃 + Claude 자동 실행 + team-action 자동 시작
14
- # bash scripts/harness-tmux-v4.sh --no-auto # 레이아웃만 (Claude 수동 실행)
15
- # bash scripts/harness-tmux-v4.sh --kill # 세션 종료
16
- #
17
- # 이것만 기억하세요:
18
- # bash scripts/harness-tmux-v4.sh
19
-
20
- set -euo pipefail
21
-
22
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
23
- SESSION_NAME="harness-v4"
24
-
25
- PROJECT_ROOT=""
26
- DETACH=false
27
- AUTO_START=true
28
-
29
- for arg in "$@"; do
30
- case "$arg" in
31
- --detach) DETACH=true ;;
32
- --no-auto) AUTO_START=false ;;
33
- --kill)
34
- tmux kill-session -t "$SESSION_NAME" 2>/dev/null && echo "Killed." || echo "No session."
35
- exit 0
36
- ;;
37
- *)
38
- if [ -d "$arg" ]; then PROJECT_ROOT="$arg"; fi
39
- ;;
40
- esac
41
- done
42
-
43
- if [ -z "$PROJECT_ROOT" ]; then
44
- dir="$(pwd)"
45
- while [ "$dir" != "/" ]; do
46
- if [ -d "$dir/.harness" ]; then PROJECT_ROOT="$dir"; break; fi
47
- dir="$(dirname "$dir")"
48
- done
49
- fi
50
-
51
- if [ -z "$PROJECT_ROOT" ] || [ ! -d "$PROJECT_ROOT/.harness" ]; then
52
- echo "Error: .harness/ not found."
53
- exit 1
54
- fi
55
-
56
- echo "Project: $PROJECT_ROOT"
57
- echo "Session: $SESSION_NAME"
58
-
59
- tmux kill-session -t "$SESSION_NAME" 2>/dev/null || true
60
-
61
- # ── Resolve Claude command ──
62
- HANDOFF="$PROJECT_ROOT/.harness/handoff.json"
63
- CLAUDE_CMD="claude --dangerously-skip-permissions"
64
- if [ -f "$HANDOFF" ]; then
65
- _model=$(jq -r '.model // empty' "$HANDOFF" 2>/dev/null)
66
- if [ -n "$_model" ] && [ "$_model" != "null" ]; then
67
- CLAUDE_CMD="$CLAUDE_CMD --model $_model"
68
- fi
69
- fi
70
-
71
- # ══════════════════════════════════════════
72
- # Build 3-column layout
73
- # ══════════════════════════════════════════
74
-
75
- # 1. Create session → Left pane (Main Claude Lead)
76
- PANE_MAIN=$(tmux new-session -d -s "$SESSION_NAME" -c "$PROJECT_ROOT" -x 220 -y 55 \
77
- -P -F '#{pane_id}')
78
-
79
- # 2. Split horizontally: Left 35% | Right 65%
80
- PANE_MID=$(tmux split-window -h -p 65 -t "$PANE_MAIN" -c "$PROJECT_ROOT" \
81
- -P -F '#{pane_id}')
82
-
83
- # 3. Split right section: Middle 45% | Right 55% — Right는 TEAM 1 으로 시작
84
- PANE_T1=$(tmux split-window -h -p 55 -t "$PANE_MID" -c "$PROJECT_ROOT" \
85
- -P -F '#{pane_id}' \
86
- "bash --norc --noprofile -c 'exec bash \"${SCRIPT_DIR}/harness-monitor.sh\" \"${PROJECT_ROOT}\" --team 1'")
87
-
88
- # 3b. Split TEAM 1 세로로 → TEAM 2 (하단 66%)
89
- PANE_T2=$(tmux split-window -v -p 66 -t "$PANE_T1" -c "$PROJECT_ROOT" \
90
- -P -F '#{pane_id}' \
91
- "bash --norc --noprofile -c 'exec bash \"${SCRIPT_DIR}/harness-monitor.sh\" \"${PROJECT_ROOT}\" --team 2'")
92
-
93
- # 3c. Split TEAM 2 세로로 → TEAM 3 (하단 50%)
94
- PANE_T3=$(tmux split-window -v -p 50 -t "$PANE_T2" -c "$PROJECT_ROOT" \
95
- -P -F '#{pane_id}' \
96
- "bash --norc --noprofile -c 'exec bash \"${SCRIPT_DIR}/harness-monitor.sh\" \"${PROJECT_ROOT}\" --team 3'")
97
-
98
- # 4. Split middle pane vertically: Dashboard (top 45%) | Prompt History (bottom 55%)
99
- PANE_HISTORY=$(tmux split-window -v -p 55 -t "$PANE_MID" -c "$PROJECT_ROOT" \
100
- -P -F '#{pane_id}' \
101
- "bash --norc --noprofile -c 'exec bash \"${SCRIPT_DIR}/harness-prompt-history.sh\" \"${PROJECT_ROOT}\"'")
102
-
103
- # 5. Start dashboard in the middle-top pane
104
- tmux send-keys -t "$PANE_MID" "bash \"${SCRIPT_DIR}/harness-dashboard-v4.sh\" \"${PROJECT_ROOT}\"" Enter
105
-
106
- # 6. Main pane — Claude 자동 실행
107
- tmux send-keys -t "$PANE_MAIN" "unset npm_config_prefix 2>/dev/null" Enter
108
- tmux send-keys -t "$PANE_MAIN" "clear" Enter
109
-
110
- if [ "$AUTO_START" = true ]; then
111
- # Claude 실행 → 시작 후 자동으로 /harness-team-action 전송
112
- tmux send-keys -t "$PANE_MAIN" "$CLAUDE_CMD" Enter
113
- # Claude가 초기화될 시간을 준 뒤 team-action 명령 전송
114
- sleep 3
115
- tmux send-keys -t "$PANE_MAIN" "/harness-team-action" Enter
116
- fi
117
-
118
- # ── Pane titles ──
119
- tmux select-pane -t "$PANE_MAIN" -T "Lead (Main Claude)"
120
- tmux select-pane -t "$PANE_MID" -T "Dashboard"
121
- tmux select-pane -t "$PANE_HISTORY" -T "Prompt History"
122
- tmux select-pane -t "$PANE_T1" -T "TEAM 1"
123
- tmux select-pane -t "$PANE_T2" -T "TEAM 2"
124
- tmux select-pane -t "$PANE_T3" -T "TEAM 3"
125
-
126
- tmux set-option -t "$SESSION_NAME" pane-border-status top 2>/dev/null || true
127
- tmux set-option -t "$SESSION_NAME" pane-border-format " #{pane_title} " 2>/dev/null || true
128
-
129
- # ── Focus on Main pane ──
130
- tmux select-pane -t "$PANE_MAIN"
131
-
132
- # ── Attach ──
133
- if [ "$DETACH" = true ]; then
134
- echo ""
135
- echo "Session created. Attach: tmux attach -t $SESSION_NAME"
136
- else
137
- if [ -n "${TMUX:-}" ]; then
138
- tmux switch-client -t "$SESSION_NAME"
139
- else
140
- echo ""
141
- echo "harness-v4 starting..."
142
- echo ""
143
- echo " All automatic. Just watch."
144
- echo " Stop: bash scripts/harness-tmux-v4.sh --kill"
145
- echo ""
146
- tmux attach -t "$SESSION_NAME"
147
- fi
148
- fi
@@ -1,30 +0,0 @@
1
- ---
2
- name: harness-team-stop
3
- description: "v4 Agent Teams 중지 + Studio 정리. 실행 중인 Teammate 해산, tmux 세션 종료. 트리거: '/harness-team-stop', 'team 중지', 'agent team 멈춰', '팀 멈춰', '팀 중지'"
4
- disable-model-invocation: false
5
- ---
6
-
7
- # /harness-team-stop — Agent Teams 중지
8
-
9
- ## Step 1: Queue 상태 저장
10
-
11
- 현재 in_progress feature를 ready로 복구합니다 (재시작 시 이어서 가능):
12
-
13
- ```bash
14
- bash scripts/harness-queue-manager.sh recover .
15
- bash scripts/harness-queue-manager.sh status .
16
- ```
17
-
18
- ## Step 2: tmux Studio 세션 정리
19
-
20
- ```bash
21
- tmux kill-session -t harness-studio 2>/dev/null && echo "Studio session killed." || echo "No studio session."
22
- ```
23
-
24
- ## Step 3: 완료 안내
25
-
26
- ```
27
- Teams 중지 완료.
28
- - Queue 상태 보존됨 (in_progress → ready로 복구)
29
- - 재시작: /harness-team-action
30
- ```