@walwal-harness/cli 4.0.0-beta.9 → 5.0.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.
- package/README.md +118 -294
- package/assets/templates/config.json +8 -7
- package/assets/templates/progress.json.template +7 -1
- package/bin/init.js +115 -84
- package/commands/harness-solo.md +68 -0
- package/commands/harness-stop.md +53 -0
- package/{skills/team-action/SKILL.md → commands/harness-team.md} +100 -43
- package/package.json +9 -10
- package/scripts/harness-dashboard.sh +219 -154
- package/scripts/harness-monitor.sh +126 -73
- package/scripts/harness-prompt-history.sh +1 -1
- package/scripts/harness-queue-manager.sh +1 -1
- package/scripts/harness-session-start.sh +24 -13
- package/scripts/harness-statusline.sh +31 -8
- package/scripts/harness-tmux.sh +125 -72
- package/scripts/harness-user-prompt-submit.sh +22 -15
- package/skills/dispatcher/SKILL.md +6 -6
- package/skills/evaluator-functional/SKILL.md +2 -2
- package/skills/generator-frontend/SKILL.md +2 -2
- package/scripts/harness-control.sh +0 -183
- package/scripts/harness-dashboard-v4.sh +0 -155
- package/scripts/harness-eval-watcher.sh +0 -228
- package/scripts/harness-studio-setup.sh +0 -143
- package/scripts/harness-studio.sh +0 -66
- package/scripts/harness-tmux-v4.sh +0 -136
- package/skills/team-stop/SKILL.md +0 -19
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# harness-tmux-v4.sh — v4 Agent Teams: 원커맨드 실행
|
|
3
|
-
#
|
|
4
|
-
# ┌──────────────┬──────────────┬──────────────┐
|
|
5
|
-
# │ │ Dashboard │ │
|
|
6
|
-
# │ Main Claude │ (v4 queue) │ Team Monitor│
|
|
7
|
-
# │ (Lead) ├──────────────┤ (lifecycle) │
|
|
8
|
-
# │ │ Prompt │ │
|
|
9
|
-
# │ │ History │ │
|
|
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%
|
|
84
|
-
PANE_RIGHT=$(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}\"'")
|
|
87
|
-
|
|
88
|
-
# 4. Split middle pane vertically: Dashboard (top 45%) | Prompt History (bottom 55%)
|
|
89
|
-
PANE_HISTORY=$(tmux split-window -v -p 55 -t "$PANE_MID" -c "$PROJECT_ROOT" \
|
|
90
|
-
-P -F '#{pane_id}' \
|
|
91
|
-
"bash --norc --noprofile -c 'exec bash \"${SCRIPT_DIR}/harness-prompt-history.sh\" \"${PROJECT_ROOT}\"'")
|
|
92
|
-
|
|
93
|
-
# 5. Start dashboard in the middle-top pane
|
|
94
|
-
tmux send-keys -t "$PANE_MID" "bash \"${SCRIPT_DIR}/harness-dashboard-v4.sh\" \"${PROJECT_ROOT}\"" Enter
|
|
95
|
-
|
|
96
|
-
# 6. Main pane — Claude 자동 실행
|
|
97
|
-
tmux send-keys -t "$PANE_MAIN" "unset npm_config_prefix 2>/dev/null" Enter
|
|
98
|
-
tmux send-keys -t "$PANE_MAIN" "clear" Enter
|
|
99
|
-
|
|
100
|
-
if [ "$AUTO_START" = true ]; then
|
|
101
|
-
# Claude 실행 → 시작 후 자동으로 /harness-team-action 전송
|
|
102
|
-
tmux send-keys -t "$PANE_MAIN" "$CLAUDE_CMD" Enter
|
|
103
|
-
# Claude가 초기화될 시간을 준 뒤 team-action 명령 전송
|
|
104
|
-
sleep 3
|
|
105
|
-
tmux send-keys -t "$PANE_MAIN" "/harness-team-action" Enter
|
|
106
|
-
fi
|
|
107
|
-
|
|
108
|
-
# ── Pane titles ──
|
|
109
|
-
tmux select-pane -t "$PANE_MAIN" -T "Lead (Main Claude)"
|
|
110
|
-
tmux select-pane -t "$PANE_MID" -T "Dashboard"
|
|
111
|
-
tmux select-pane -t "$PANE_HISTORY" -T "Prompt History"
|
|
112
|
-
tmux select-pane -t "$PANE_RIGHT" -T "Team Monitor"
|
|
113
|
-
|
|
114
|
-
tmux set-option -t "$SESSION_NAME" pane-border-status top 2>/dev/null || true
|
|
115
|
-
tmux set-option -t "$SESSION_NAME" pane-border-format " #{pane_title} " 2>/dev/null || true
|
|
116
|
-
|
|
117
|
-
# ── Focus on Main pane ──
|
|
118
|
-
tmux select-pane -t "$PANE_MAIN"
|
|
119
|
-
|
|
120
|
-
# ── Attach ──
|
|
121
|
-
if [ "$DETACH" = true ]; then
|
|
122
|
-
echo ""
|
|
123
|
-
echo "Session created. Attach: tmux attach -t $SESSION_NAME"
|
|
124
|
-
else
|
|
125
|
-
if [ -n "${TMUX:-}" ]; then
|
|
126
|
-
tmux switch-client -t "$SESSION_NAME"
|
|
127
|
-
else
|
|
128
|
-
echo ""
|
|
129
|
-
echo "harness-v4 starting..."
|
|
130
|
-
echo ""
|
|
131
|
-
echo " All automatic. Just watch."
|
|
132
|
-
echo " Stop: bash scripts/harness-tmux-v4.sh --kill"
|
|
133
|
-
echo ""
|
|
134
|
-
tmux attach -t "$SESSION_NAME"
|
|
135
|
-
fi
|
|
136
|
-
fi
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: harness-team-stop
|
|
3
|
-
description: "v4 Agent Teams 중지. 실행 중인 Teammate를 모두 해산한다. 트리거: '/harness-team-stop', 'team 중지', 'agent team 멈춰', '팀 멈춰', '팀 중지'"
|
|
4
|
-
disable-model-invocation: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# /harness-team-stop — Agent Teams 중지
|
|
8
|
-
|
|
9
|
-
## 실행
|
|
10
|
-
|
|
11
|
-
모든 Teammate에게 현재 작업을 마무리하고 종료하라고 메시지를 보내세요.
|
|
12
|
-
|
|
13
|
-
Queue 상태는 보존되므로, `/harness-team-action`으로 다시 시작할 수 있습니다.
|
|
14
|
-
|
|
15
|
-
## 재시작
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
❯ /harness-team-action
|
|
19
|
-
```
|