Merge pull request 'fix(kugetsu): session detection ordering bug and debugging' (#108) from fix/session-detection-v2 into main

This commit is contained in:
2026-04-02 12:26:57 +02:00

View File

@@ -1244,6 +1244,7 @@ cmd_start() {
fi fi
local fork_log="$SESSIONS_DIR/$session_file.fork.log" 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 if [ "$DEBUG_MODE" = true ]; then
(cd "$worktree_path" && opencode run "$message" --fork --session "$base_session_id" 2>&1) | tee "$fork_log" & (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 max_attempts=10
local attempt=1 local attempt=1
local new_session_id="" local new_session_id=""
local fork_log_output=""
while [ $attempt -le $max_attempts ]; do while [ $attempt -le $max_attempts ]; do
sleep 1 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 while IFS= read -r sess; do
[ "$sess" = "$base_session_id" ] && continue [ "$sess" = "$base_session_id" ] && continue
[ "$sess" = "$pm_agent_session_id" ] && continue [ "$sess" = "$pm_agent_session_id" ] && continue
@@ -1290,14 +1284,34 @@ cmd_start() {
break break
fi 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)) attempt=$((attempt + 1))
done done
if [ -z "$new_session_id" ]; then 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 echo "Error: Could not find newly created session after ${max_attempts}s" >&2
if [ -f "$fork_log" ] && [ -s "$fork_log" ]; then if [ -n "$fork_log_output" ]; then
echo "Fork log:" >&2 echo "Fork log output:" >&2
tail -30 "$fork_log" >&2 echo "$fork_log_output" >&2
fi fi
remove_worktree_for_issue "$issue_ref" remove_worktree_for_issue "$issue_ref"
exit 1 exit 1