From 7f7f8b108524124e7291b39ebaf59af10d65f870 Mon Sep 17 00:00:00 2001 From: shokollm <270575765+shokollm@users.noreply.github.com> Date: Mon, 6 Apr 2026 09:14:37 +0000 Subject: [PATCH] fix: multiple issues with queue daemon and agent forking 1. daemon: use $WORKTREES_DIR instead of $HOME/.kugetsu-worktrees - Worktrees are created in ~/.kugetsu/worktrees but daemon was checking ~/.kugetsu-worktrees - This caused cmd_start to be called when cmd_continue should have been 2. load_agent_env: add fallback to pm-agent.env - When dev.env and default.env don't exist, fallback to pm-agent.env - Ensures GITEA_TOKEN is available 3. Remove '&& disown' pattern that causes 'no such job' errors - nohup already makes process immune to SIGHUP - disown was causing errors because job context was lost --- skills/kugetsu/scripts/kugetsu-config.sh | 4 ++++ skills/kugetsu/scripts/kugetsu-queue-daemon.sh | 2 +- skills/kugetsu/scripts/kugetsu-session.sh | 12 +++++++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/skills/kugetsu/scripts/kugetsu-config.sh b/skills/kugetsu/scripts/kugetsu-config.sh index be656dd..8efbcbf 100755 --- a/skills/kugetsu/scripts/kugetsu-config.sh +++ b/skills/kugetsu/scripts/kugetsu-config.sh @@ -53,5 +53,9 @@ load_agent_env() { set -a source "$ENV_DIR/default.env" set +a + elif [ -f "$ENV_DIR/pm-agent.env" ]; then + set -a + source "$ENV_DIR/pm-agent.env" + set +a fi } diff --git a/skills/kugetsu/scripts/kugetsu-queue-daemon.sh b/skills/kugetsu/scripts/kugetsu-queue-daemon.sh index 6a49602..79ee84e 100644 --- a/skills/kugetsu/scripts/kugetsu-queue-daemon.sh +++ b/skills/kugetsu/scripts/kugetsu-queue-daemon.sh @@ -109,7 +109,7 @@ process_task() { source "$SCRIPT_DIR/kugetsu-session.sh" - if worktree_exists "$issue_ref" "$HOME/.kugetsu-worktrees" || [ -f "$SESSIONS_DIR/$(issue_ref_to_filename "$issue_ref").json" ]; then + if worktree_exists "$issue_ref" "$WORKTREES_DIR" || [ -f "$SESSIONS_DIR/$(issue_ref_to_filename "$issue_ref").json" ]; then log_file="$LOGS_DIR/delegate-$(date +%s).log" if cmd_continue "$issue_ref" "$message" >> "$log_file" 2>&1; then sleep 1 diff --git a/skills/kugetsu/scripts/kugetsu-session.sh b/skills/kugetsu/scripts/kugetsu-session.sh index 7a50f46..745d249 100755 --- a/skills/kugetsu/scripts/kugetsu-session.sh +++ b/skills/kugetsu/scripts/kugetsu-session.sh @@ -194,8 +194,8 @@ cmd_delegate() { mkdir -p "$LOGS_DIR" local log_file="$LOGS_DIR/delegate-$(date +%s).log" - nohup sh -c "GITEA_TOKEN='***' opencode run '$message' --continue --session '$pm_session' >> '$log_file' 2>&1" > /dev/null 2>&1 & - disown + load_agent_env "pm-agent" + nohup sh -c "GITEA_TOKEN='$GITEA_TOKEN' opencode run '$message' --continue --session '$pm_session'" >> "$log_file" 2>&1 & echo "Delegated to PM agent (logged to $(basename "$log_file"))" } @@ -313,7 +313,8 @@ cmd_start() { load_agent_env "dev" - (cd "$worktree_path" && nohup sh -c "GITEA_TOKEN='$GITEA_TOKEN' opencode run '$dev_message' --continue --session '$new_session_id'" >> "$LOGS_DIR/dev-$new_session_id.log" 2>&1 &) && disown + cd "$worktree_path" + nohup sh -c "GITEA_TOKEN='$GITEA_TOKEN' opencode run '$dev_message' --continue --session '$new_session_id'" >> "$LOGS_DIR/dev-$new_session_id.log" 2>&1 & echo "Session started for '$issue_ref': $new_session_id" echo "Worktree: $worktree_path" @@ -367,9 +368,10 @@ cmd_continue() { fi if [ -n "$worktree_path" ] && [ -d "$worktree_path" ]; then - (cd "$worktree_path" && nohup sh -c "GITEA_TOKEN='$GITEA_TOKEN' opencode run '$message' --continue --session '$opencode_session_id'" >> "$LOGS_DIR/dev-$opencode_session_id.log" 2>&1 &) && disown + cd "$worktree_path" + nohup sh -c "GITEA_TOKEN='$GITEA_TOKEN' opencode run '$message' --continue --session '$opencode_session_id'" >> "$LOGS_DIR/dev-$opencode_session_id.log" 2>&1 & else - (nohup sh -c "GITEA_TOKEN='$GITEA_TOKEN' opencode run '$message' --continue --session '$opencode_session_id'" >> "$LOGS_DIR/dev-$opencode_session_id.log" 2>&1 &) && disown + nohup sh -c "GITEA_TOKEN='$GITEA_TOKEN' opencode run '$message' --continue --session '$opencode_session_id'" >> "$LOGS_DIR/dev-$opencode_session_id.log" 2>&1 & fi } -- 2.49.1