From cd12a0cda833d14cc9b42ce180fdd1174f1a055a Mon Sep 17 00:00:00 2001 From: shokollm <270575765+shokollm@users.noreply.github.com> Date: Thu, 2 Apr 2026 09:56:24 +0000 Subject: [PATCH] fix(kugetsu): fix session detection ordering and add DB debugging 1. Move session detection BEFORE checking if fork process is still running. Previous code broke out of loop if forked process exited, skipping detection. 2. Add database query debugging when detection fails to help diagnose why opencode session list might miss newly created sessions. --- skills/kugetsu/scripts/kugetsu | 36 +++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/skills/kugetsu/scripts/kugetsu b/skills/kugetsu/scripts/kugetsu index 675f137..bdba5de 100755 --- a/skills/kugetsu/scripts/kugetsu +++ b/skills/kugetsu/scripts/kugetsu @@ -1244,6 +1244,7 @@ cmd_start() { fi local fork_log="$SESSIONS_DIR/$session_file.fork.log" + local opencode_db="${OPENCODE_DB:-$HOME/.local/share/opencode/opencode.db}" if [ "$DEBUG_MODE" = true ]; then (cd "$worktree_path" && opencode run "$message" --fork --session "$base_session_id" 2>&1) | tee "$fork_log" & @@ -1256,18 +1257,11 @@ cmd_start() { local max_attempts=10 local attempt=1 local new_session_id="" + local fork_log_output="" while [ $attempt -le $max_attempts ]; do sleep 1 - if ! kill -0 $fork_pid 2>/dev/null; then - if [ -s "$fork_log" ]; then - echo "Fork command exited. Log output:" >&2 - tail -20 "$fork_log" >&2 - fi - break - fi - while IFS= read -r sess; do [ "$sess" = "$base_session_id" ] && continue [ "$sess" = "$pm_agent_session_id" ] && continue @@ -1290,14 +1284,34 @@ cmd_start() { break fi + if ! kill -0 $fork_pid 2>/dev/null; then + fork_log_output=$(tail -20 "$fork_log" 2>/dev/null || echo "(log empty or unavailable)") + break + fi + attempt=$((attempt + 1)) done if [ -z "$new_session_id" ]; then + if [ -f "$opencode_db" ]; then + local db_sessions=$(python3 -c " +import sqlite3 +conn = sqlite3.connect('$opencode_db') +cursor = conn.cursor() +cursor.execute(\"SELECT id FROM session WHERE parent_id IS NOT NULL ORDER BY time_created DESC LIMIT 5\") +for row in cursor.fetchall(): + print(row[0]) +" 2>/dev/null || echo "") + if [ -n "$db_sessions" ]; then + echo "Recent forked sessions in DB:" >&2 + echo "$db_sessions" >&2 + fi + fi + echo "Error: Could not find newly created session after ${max_attempts}s" >&2 - if [ -f "$fork_log" ] && [ -s "$fork_log" ]; then - echo "Fork log:" >&2 - tail -30 "$fork_log" >&2 + if [ -n "$fork_log_output" ]; then + echo "Fork log output:" >&2 + echo "$fork_log_output" >&2 fi remove_worktree_for_issue "$issue_ref" exit 1 -- 2.49.1