@walwal-harness/cli 5.0.4 → 5.0.6

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/bin/init.js CHANGED
@@ -524,16 +524,39 @@ function installAgentTeamsEnv() {
524
524
  try { settings = JSON.parse(fs.readFileSync(settingsPath, 'utf8')); } catch (e) {}
525
525
  }
526
526
 
527
- if (!settings.env) settings.env = {};
527
+ let changed = false;
528
528
 
529
+ // Enable Agent Teams env var
530
+ if (!settings.env) settings.env = {};
529
531
  if (settings.env['CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS'] !== '1') {
530
532
  settings.env['CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS'] = '1';
531
- ensureDir(path.dirname(settingsPath));
532
- fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
533
+ changed = true;
533
534
  log('Agent Teams enabled (CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1)');
534
535
  } else {
535
536
  log('Agent Teams already enabled');
536
537
  }
538
+
539
+ // Add git worktree permission for Team Mode isolation
540
+ if (!settings.permissions) settings.permissions = {};
541
+ if (!settings.permissions.allow) settings.permissions.allow = [];
542
+ const worktreePerms = [
543
+ 'Bash(git worktree *)',
544
+ 'Bash(git checkout *)',
545
+ 'Bash(git merge *)',
546
+ 'Bash(git branch *)'
547
+ ];
548
+ for (const perm of worktreePerms) {
549
+ if (!settings.permissions.allow.includes(perm)) {
550
+ settings.permissions.allow.push(perm);
551
+ changed = true;
552
+ }
553
+ }
554
+
555
+ if (changed) {
556
+ ensureDir(path.dirname(settingsPath));
557
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
558
+ log('Git worktree permissions added for Team Mode isolation');
559
+ }
537
560
  }
538
561
 
539
562
  function setupAgentsMd() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@walwal-harness/cli",
3
- "version": "5.0.4",
3
+ "version": "5.0.6",
4
4
  "description": "Production harness for AI agent engineering — Solo/Team mode, Planner, Generator(BE/FE), Evaluator(Func/Visual), optional Brainstormer. Supports React, Next.js, and Flutter FE stacks.",
5
5
  "bin": {
6
6
  "walwal-harness": "bin/init.js"
@@ -3,13 +3,13 @@
3
3
  #
4
4
  # Team Mode (--team):
5
5
  # ┌──────────────┬──────────────┬──────────────┐
6
- # │ Prompt │ Dashboard │ TEAM 1 │
7
- # │ History │ (queue + │ Gen | Eval │
8
- # │ │ status) ├──────────────┤
9
- # ├──────────────┤ │ TEAM 2 │
10
- # │ Controller │ │ Gen | Eval │
11
- # │ (Claude / │ ├──────────────┤
12
- # │ Codex) │ │ TEAM 3 │
6
+ # │ │ │ TEAM 1 │
7
+ # │ Prompt │ Dashboard │ Gen | Eval │
8
+ # │ History │ (queue + ├──────────────┤
9
+ # │ │ status + │ TEAM 2 │
10
+ # │ │ archive) │ Gen | Eval │
11
+ # │ │ ├──────────────┤
12
+ # │ │ │ TEAM 3 │
13
13
  # └──────────────┴──────────────┴──────────────┘
14
14
  #
15
15
  # Rendering strategy:
@@ -124,12 +124,6 @@ launch_iterm2_team() {
124
124
  end tell
125
125
  end tell
126
126
  end tell
127
-
128
- -- Split down → Controller (bottom-left)
129
- set ctrlPane to (split horizontally with default profile)
130
- tell ctrlPane
131
- write text "cd '${PROJECT_ROOT}' && clear"
132
- end tell
133
127
  end tell
134
128
  end tell
135
129
  end tell
@@ -185,19 +179,16 @@ launch_tmux_team() {
185
179
  "bash --norc --noprofile -c 'exec bash \"${SCRIPT_DIR}/harness-monitor.sh\" \"${PROJECT_ROOT}\" --team 2'")
186
180
  PANE_T3=$(tmux split-window -v -p 50 -t "$PANE_T2" -c "$PROJECT_ROOT" -P -F '#{pane_id}' \
187
181
  "bash --norc --noprofile -c 'exec bash \"${SCRIPT_DIR}/harness-monitor.sh\" \"${PROJECT_ROOT}\" --team 3'")
188
- PANE_CTRL=$(tmux split-window -v -p 55 -t "$PANE_LEFT" -c "$PROJECT_ROOT" -P -F '#{pane_id}')
189
182
 
190
183
  tmux send-keys -t "$PANE_LEFT" "bash \"${SCRIPT_DIR}/harness-prompt-history.sh\" \"${PROJECT_ROOT}\"" Enter
191
184
  tmux send-keys -t "$PANE_MID" "bash \"${SCRIPT_DIR}/harness-dashboard.sh\" \"${PROJECT_ROOT}\"" Enter
192
- tmux send-keys -t "$PANE_CTRL" "clear" Enter
193
185
 
194
186
  tmux select-pane -t "$PANE_LEFT" -T "Prompt History"
195
- tmux select-pane -t "$PANE_CTRL" -T "Controller"
196
187
  tmux select-pane -t "$PANE_MID" -T "Dashboard"
197
188
  tmux select-pane -t "$PANE_T1" -T "TEAM 1"
198
189
  tmux select-pane -t "$PANE_T2" -T "TEAM 2"
199
190
  tmux select-pane -t "$PANE_T3" -T "TEAM 3"
200
- tmux select-pane -t "$PANE_CTRL"
191
+ tmux select-pane -t "$PANE_LEFT"
201
192
 
202
193
  tmux set-option -t "$SESSION_NAME" pane-border-status top 2>/dev/null || true
203
194
  tmux set-option -t "$SESSION_NAME" pane-border-format " #{pane_title} " 2>/dev/null || true