fix: implement session-counting for MAX_CONCURRENT_AGENTS limit (fixes #63) #65

Merged
shoko merged 6 commits from fix/issue-63-session-counting into main 2026-04-01 07:40:00 +02:00
Showing only changes of commit bd4e8587b4 - Show all commits

View File

@@ -857,14 +857,14 @@ cmd_start() {
remove_worktree_for_issue "$issue_ref" remove_worktree_for_issue "$issue_ref"
exit 1 exit 1
fi fi
trap release_agent_slot EXIT
if [ "$DEBUG_MODE" = true ]; then if [ "$DEBUG_MODE" = true ]; then
opencode run "$message" --fork --session "$base_session_id" --dir "$worktree_path" 2>&1 | tee "$SESSIONS_DIR/$session_file.debug.log" opencode run "$message" --fork --session "$base_session_id" --dir "$worktree_path" 2>&1 | tee "$SESSIONS_DIR/$session_file.debug.log" &
else else
opencode run "$message" --fork --session "$base_session_id" --dir "$worktree_path" 2>&1 opencode run "$message" --fork --session "$base_session_id" --dir "$worktree_path" 2>&1 &
fi fi
local child_pid=$!
wait $child_pid
release_agent_slot release_agent_slot
trap - EXIT
local after_sessions=$(opencode session list 2>/dev/null | grep -oP '^ses_\w+' | sort) local after_sessions=$(opencode session list 2>/dev/null | grep -oP '^ses_\w+' | sort)
local new_session_id="" local new_session_id=""
@@ -937,23 +937,23 @@ cmd_continue() {
echo "Error: Max concurrent agents ($MAX_CONCURRENT_AGENTS) reached. Try again later." >&2 echo "Error: Max concurrent agents ($MAX_CONCURRENT_AGENTS) reached. Try again later." >&2
exit 1 exit 1
fi fi
trap release_agent_slot EXIT
if [ -n "$worktree_path" ] && [ -d "$worktree_path" ]; then if [ -n "$worktree_path" ] && [ -d "$worktree_path" ]; then
echo "Using worktree: $worktree_path" echo "Using worktree: $worktree_path"
if [ "$DEBUG_MODE" = true ]; then if [ "$DEBUG_MODE" = true ]; then
opencode run "$message" --continue --session "$opencode_session_id" --dir "$worktree_path" 2>&1 | tee "$session_path.debug.log" opencode run "$message" --continue --session "$opencode_session_id" --dir "$worktree_path" 2>&1 | tee "$session_path.debug.log" &
else else
opencode run "$message" --continue --session "$opencode_session_id" --dir "$worktree_path" opencode run "$message" --continue --session "$opencode_session_id" --dir "$worktree_path" 2>&1 &
fi fi
else else
if [ "$DEBUG_MODE" = true ]; then if [ "$DEBUG_MODE" = true ]; then
opencode run "$message" --continue --session "$opencode_session_id" 2>&1 | tee "$session_path.debug.log" opencode run "$message" --continue --session "$opencode_session_id" 2>&1 | tee "$session_path.debug.log" &
else else
opencode run "$message" --continue --session "$opencode_session_id" opencode run "$message" --continue --session "$opencode_session_id" 2>&1 &
fi fi
fi fi
local child_pid=$!
wait $child_pid
release_agent_slot release_agent_slot
trap - EXIT
} }
cmd_list() { cmd_list() {