fix: address review findings from issue #78
- Guard inject_into_session wait_for_claude_ready with || true - Guard all tmux calls in inject_into_session with || true - Add worktree cleanup to idle-timeout branch in review-poll.sh - Check phase before sleep in wait_for_review_output (no 10s delay) - Prune review-thread-map entries during session cleanup - Skip human question injection during active review (phase check) - Remove no-op tmux kill-session after has-session returns false - Add ASCII fallback for Claude prompt detection (locale safety) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
85d05cdee2
commit
bf4c70086e
3 changed files with 40 additions and 21 deletions
|
|
@ -150,22 +150,30 @@ while true; do
|
|||
REVIEW_PR_NUM=$(awk -F'\t' -v id="$THREAD_ROOT" '$1 == id {print $2}' /tmp/review-thread-map 2>/dev/null || true)
|
||||
if [ -n "$REVIEW_PR_NUM" ]; then
|
||||
REVIEW_SESSION="review-${PROJECT_NAME}-${REVIEW_PR_NUM}"
|
||||
REVIEW_PHASE_FILE="/tmp/review-session-${PROJECT_NAME}-${REVIEW_PR_NUM}.phase"
|
||||
if tmux has-session -t "$REVIEW_SESSION" 2>/dev/null; then
|
||||
REVIEW_INJECT_MSG="Human question from ${SENDER} in Matrix:
|
||||
# Skip injection if Claude is mid-review (phase file absent = actively writing)
|
||||
REVIEW_CUR_PHASE=$(head -1 "$REVIEW_PHASE_FILE" 2>/dev/null | tr -d '[:space:]' || true)
|
||||
if [ -z "$REVIEW_CUR_PHASE" ]; then
|
||||
log "review session ${REVIEW_SESSION} is mid-review, deferring question"
|
||||
matrix_send "review" "reviewer is busy — question queued, try again shortly" "$THREAD_ROOT" >/dev/null 2>&1 || true
|
||||
else
|
||||
REVIEW_INJECT_MSG="Human question from ${SENDER} in Matrix:
|
||||
|
||||
${BODY}
|
||||
|
||||
Please answer this question about your review. Explain your reasoning."
|
||||
REVIEW_INJECT_TMP=$(mktemp /tmp/review-q-inject-XXXXXX)
|
||||
printf '%s' "$REVIEW_INJECT_MSG" > "$REVIEW_INJECT_TMP"
|
||||
tmux load-buffer -b "review-q-${REVIEW_PR_NUM}" "$REVIEW_INJECT_TMP" || true
|
||||
tmux paste-buffer -t "$REVIEW_SESSION" -b "review-q-${REVIEW_PR_NUM}" || true
|
||||
sleep 0.5
|
||||
tmux send-keys -t "$REVIEW_SESSION" "" Enter || true
|
||||
tmux delete-buffer -b "review-q-${REVIEW_PR_NUM}" 2>/dev/null || true
|
||||
rm -f "$REVIEW_INJECT_TMP"
|
||||
log "review question from ${SENDER} injected into ${REVIEW_SESSION}"
|
||||
matrix_send "review" "✓ question forwarded to reviewer session" "$THREAD_ROOT" >/dev/null 2>&1 || true
|
||||
REVIEW_INJECT_TMP=$(mktemp /tmp/review-q-inject-XXXXXX)
|
||||
printf '%s' "$REVIEW_INJECT_MSG" > "$REVIEW_INJECT_TMP"
|
||||
tmux load-buffer -b "review-q-${REVIEW_PR_NUM}" "$REVIEW_INJECT_TMP" || true
|
||||
tmux paste-buffer -t "$REVIEW_SESSION" -b "review-q-${REVIEW_PR_NUM}" || true
|
||||
sleep 0.5
|
||||
tmux send-keys -t "$REVIEW_SESSION" "" Enter || true
|
||||
tmux delete-buffer -b "review-q-${REVIEW_PR_NUM}" 2>/dev/null || true
|
||||
rm -f "$REVIEW_INJECT_TMP"
|
||||
log "review question from ${SENDER} injected into ${REVIEW_SESSION}"
|
||||
matrix_send "review" "✓ question forwarded to reviewer session" "$THREAD_ROOT" >/dev/null 2>&1 || true
|
||||
fi
|
||||
else
|
||||
log "review session ${REVIEW_SESSION} not found for PR #${REVIEW_PR_NUM}"
|
||||
matrix_send "review" "review session not active for PR #${REVIEW_PR_NUM}" "$THREAD_ROOT" >/dev/null 2>&1 || true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue