fix(kugetsu): remove broken session existence check (#38) #40

Merged
shoko merged 1 commits from fix/issue-38-remove-broken-session-check into main 2026-03-31 07:27:38 +02:00
2 changed files with 40 additions and 68 deletions

View File

@@ -303,7 +303,7 @@ validate_issue_ref() {
check_opencode_session_exists() { check_opencode_session_exists() {
local session_id="$1" local session_id="$1"
opencode session list 2>/dev/null | grep -q "^$session_id" opencode session list --format json 2>/dev/null | grep -q "\"$session_id\""
} }
kugetsu_get_pm_context() { kugetsu_get_pm_context() {
@@ -475,11 +475,6 @@ cmd_status() {
return return
fi fi
if ! check_opencode_session_exists "$pm_agent"; then
echo "pm_agent_expired"
return
fi
echo "ok" echo "ok"
} }
@@ -498,11 +493,6 @@ cmd_delegate() {
exit 1 exit 1
fi fi
if ! check_opencode_session_exists "$pm_session"; then
echo "Error: PM agent session has expired. Run 'kugetsu init' again." >&2
exit 1
fi
opencode run --continue --session "$pm_session" "$message" 2>&1 opencode run --continue --session "$pm_session" "$message" 2>&1
} }
@@ -537,12 +527,6 @@ cmd_doctor() {
issues=$((issues + 1)) issues=$((issues + 1))
else else
echo "[OK] Base session: $base" echo "[OK] Base session: $base"
if check_opencode_session_exists "$base"; then
echo "[OK] Base session active"
else
echo "[ISSUE] Base session expired"
issues=$((issues + 1))
fi
fi fi
local pm_agent=$(get_pm_agent_session_id) local pm_agent=$(get_pm_agent_session_id)
@@ -551,12 +535,6 @@ cmd_doctor() {
issues=$((issues + 1)) issues=$((issues + 1))
else else
echo "[OK] PM agent: $pm_agent" echo "[OK] PM agent: $pm_agent"
if check_opencode_session_exists "$pm_agent"; then
echo "[OK] PM agent session active"
else
echo "[ISSUE] PM agent session expired"
issues=$((issues + 1))
fi
fi fi
local pm_context_file="${KUGETSU_DIR}/pm-agent.md" local pm_context_file="${KUGETSU_DIR}/pm-agent.md"
@@ -583,8 +561,7 @@ cmd_doctor() {
else else
local pm_agent=$(get_pm_agent_session_id) local pm_agent=$(get_pm_agent_session_id)
if [ -n "$pm_agent" ] && [ "$pm_agent" != "null" ] && [ "$pm_agent" != "None" ]; then if [ -n "$pm_agent" ] && [ "$pm_agent" != "null" ] && [ "$pm_agent" != "None" ]; then
if ! check_opencode_session_exists "$pm_agent"; then echo "[FIX] Recreating PM agent session..."
echo "[FIX] Recreating expired PM agent session..."
local base=$(get_base_session_id) local base=$(get_base_session_id)
if [ -n "$base" ] && [ "$base" != "null" ]; then if [ -n "$base" ] && [ "$base" != "null" ]; then
rm -f "$SESSIONS_DIR/pm-agent.json" rm -f "$SESSIONS_DIR/pm-agent.json"
@@ -619,9 +596,6 @@ cmd_doctor() {
else else
echo "[FIX] Cannot recreate PM agent: base session missing" echo "[FIX] Cannot recreate PM agent: base session missing"
fi fi
else
echo "[FIX] PM agent is active, no fix needed"
fi
else else
echo "[FIX] Cannot fix: PM agent not initialized. Run 'kugetsu init' first." echo "[FIX] Cannot fix: PM agent not initialized. Run 'kugetsu init' first."
fi fi
@@ -867,11 +841,6 @@ cmd_continue() {
local opencode_session_id=$(python3 -c "import json; print(json.load(open('$session_path'))['opencode_session_id'])") local opencode_session_id=$(python3 -c "import json; print(json.load(open('$session_path'))['opencode_session_id'])")
local worktree_path=$(python3 -c "import json; print(json.load(open('$session_path')).get('worktree_path', ''))" 2>/dev/null || echo "") local worktree_path=$(python3 -c "import json; print(json.load(open('$session_path')).get('worktree_path', ''))" 2>/dev/null || echo "")
if ! check_opencode_session_exists "$opencode_session_id"; then
echo "Warning: Session may have expired in opencode" >&2
echo "Attempting to continue anyway..." >&2
fi
echo "Continuing session for '$session_name'..." echo "Continuing session for '$session_name'..."
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"

View File

@@ -417,14 +417,17 @@ else
fi fi
echo "" echo ""
# Test 25: status when all good (pm-agent in json but session expired) # Test 25: status when all good (pm-agent in json - no longer checks opencode)
echo "--- Test: status (session expired) ---" # Note: check_opencode_session_exists was removed because forked sessions
# don't appear in 'opencode session list'. Status now returns 'ok' if
# session is registered in kugetsu index, regardless of opencode state.
echo "--- Test: status (session registered) ---"
setup_mock_base setup_mock_base
OUTPUT=$($KUGETSU status 2>&1 || true) OUTPUT=$($KUGETSU status 2>&1 || true)
if [ "$OUTPUT" = "pm_agent_expired" ]; then if [ "$OUTPUT" = "ok" ]; then
pass "status returns pm_agent_expired when session not in opencode" pass "status returns ok when session is in kugetsu index"
else else
fail "status session expired: got '$OUTPUT', expected 'pm_agent_expired'" fail "status session registered: got '$OUTPUT', expected 'ok'"
fi fi
echo "" echo ""