fix: unset CLAUDECODE env to allow nested claude sessions + add gemini ops commands

- claude-loop.sh: use `env -u CLAUDECODE` before launching claude CLI
  to prevent "nested session" detection error
- ops-helpers.sh: add gemini wake/kill/assign/queue commands (from user edit)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Alexander Whitestone
2026-03-22 18:35:56 -04:00
parent 1eb10f72bb
commit d71645a081
2 changed files with 38 additions and 1 deletions

View File

@@ -340,7 +340,7 @@ run_worker() {
set +e
cd "$worktree"
gtimeout "$CLAUDE_TIMEOUT" claude \
env -u CLAUDECODE gtimeout "$CLAUDE_TIMEOUT" claude \
--print \
--dangerously-skip-permissions \
-p "$prompt" \

View File

@@ -15,6 +15,7 @@ ops-help() {
echo -e " \033[1mWake Up\033[0m"
echo " ops-wake-kimi Restart Kimi loop"
echo " ops-wake-claude Restart Claude loop"
echo " ops-wake-gemini Restart Gemini loop"
echo " ops-wake-gateway Restart gateway"
echo " ops-wake-all Restart everything"
echo ""
@@ -26,10 +27,12 @@ ops-help() {
echo " ops-prs List open PRs"
echo " ops-queue Show Kimi's queue"
echo " ops-claude-queue Show Claude's queue"
echo " ops-gemini-queue Show Gemini's queue"
echo ""
echo -e " \033[1mEmergency\033[0m"
echo " ops-kill-kimi Stop Kimi loop"
echo " ops-kill-claude Stop Claude loop"
echo " ops-kill-gemini Stop Gemini loop"
echo " ops-kill-zombies Kill stuck git/pytest"
echo ""
echo -e " \033[2m Type ops-help to see this again\033[0m"
@@ -55,12 +58,21 @@ ops-wake-claude() {
echo " Claude loop started — $workers workers (PID $!)"
}
ops-wake-gemini() {
pkill -f "gemini-loop.sh" 2>/dev/null
sleep 1
nohup bash ~/.hermes/bin/gemini-loop.sh >> ~/.hermes/logs/gemini-loop.log 2>&1 &
echo " Gemini loop started (PID $!)"
}
ops-wake-all() {
ops-wake-gateway
sleep 1
ops-wake-kimi
sleep 1
ops-wake-claude
sleep 1
ops-wake-gemini
echo " All services started"
}
@@ -121,6 +133,12 @@ ops-kill-claude() {
echo " Claude stopped (all workers)"
}
ops-kill-gemini() {
pkill -f "gemini-loop.sh" 2>/dev/null
pkill -f "gemini.*--print" 2>/dev/null
echo " Gemini stopped"
}
ops-assign-claude() {
local issue=$1
local repo="${2:-rockachopa/Timmy-time-dashboard}"
@@ -149,6 +167,25 @@ for repo in repos:
" 2>/dev/null || echo " (error)"
}
ops-assign-gemini() {
local issue=$1
local repo="${2:-rockachopa/Timmy-time-dashboard}"
[ -z "$issue" ] && { echo "Usage: ops-assign-gemini ISSUE_NUMBER [owner/repo]"; return 1; }
curl -s -X PATCH -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \
"$GITEA/api/v1/repos/$repo/issues/$issue" -d '{"assignees":["gemini"]}' | python3 -c "
import json,sys; d=json.loads(sys.stdin.read()); print(f' ✓ #{$issue} assigned to gemini')
" 2>/dev/null
}
ops-gemini-queue() {
curl -s -H "Authorization: token $TOKEN" "$REPO_API/issues?state=open&assignee=gemini&limit=20&type=issues" | python3 -c "
import json,sys
issues=json.loads(sys.stdin.read())
for i in issues: print(f' #{i[\"number\"]:4d} {i[\"title\"][:60]}')
if not issues: print(' (empty)')
" 2>/dev/null
}
ops-kill-zombies() {
local killed=0
for pid in $(ps aux | grep "pytest tests/" | grep -v grep | awk '{print $2}'); do