fix: lib/matrix_listener.sh: review case reads a separate /tmp/review-thread-map (col 2) instead of the standard THREAD_MAP (col 4) (#238)

- matrix_listener.sh: review case now reads PR number from column 4 of
  the standard $THREAD_MAP instead of column 2 of /tmp/review-thread-map
- review-pr.sh: pass PR_NUMBER as context_tag (4th arg) to matrix_send
  so the standard MATRIX_THREAD_MAP has it in column 4; remove separate
  /tmp/review-thread-map write
- review-poll.sh: prune from MATRIX_THREAD_MAP instead of the removed
  /tmp/review-thread-map

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
openhands 2026-03-20 18:21:42 +00:00
parent 258cc1d1e3
commit db66e35556
3 changed files with 9 additions and 11 deletions

View file

@ -189,7 +189,7 @@ Consider this guidance for your current work."
;;
review)
# Route human questions to persistent review tmux session
REVIEW_PR_NUM=$(awk -F'\t' -v id="$THREAD_ROOT" '$1 == id {print $2}' /tmp/review-thread-map 2>/dev/null || true)
REVIEW_PR_NUM=$(awk -F'\t' -v id="$THREAD_ROOT" '$1 == id {print $4}' "$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"

View file

@ -56,8 +56,8 @@ if [ -n "$REVIEW_SESSIONS" ]; then
tmux kill-session -t "$session" 2>/dev/null || true
rm -f "$phase_file" "/tmp/${PROJECT_NAME}-review-output-${pr_num}.json" \
"/tmp/review-injected-${PROJECT_NAME}-${pr_num}"
# Prune review-thread-map entries for this PR
sed -i "/\t${pr_num}$/d" /tmp/review-thread-map 2>/dev/null || true
# Prune thread-map entries for this PR
sed -i "/\t${pr_num}$/d" "${MATRIX_THREAD_MAP:-/tmp/matrix-thread-map}" 2>/dev/null || true
cd "$REPO_ROOT"
git worktree remove "/tmp/${PROJECT_NAME}-review-${pr_num}" --force 2>/dev/null || true
rm -rf "/tmp/${PROJECT_NAME}-review-${pr_num}" 2>/dev/null || true
@ -72,8 +72,8 @@ if [ -n "$REVIEW_SESSIONS" ]; then
tmux kill-session -t "$session" 2>/dev/null || true
rm -f "$phase_file" "/tmp/${PROJECT_NAME}-review-output-${pr_num}.json" \
"/tmp/review-injected-${PROJECT_NAME}-${pr_num}"
# Prune review-thread-map entries for this PR
sed -i "/\t${pr_num}$/d" /tmp/review-thread-map 2>/dev/null || true
# Prune thread-map entries for this PR
sed -i "/\t${pr_num}$/d" "${MATRIX_THREAD_MAP:-/tmp/matrix-thread-map}" 2>/dev/null || true
cd "$REPO_ROOT"
git worktree remove "/tmp/${PROJECT_NAME}-review-${pr_num}" --force 2>/dev/null || true
rm -rf "/tmp/${PROJECT_NAME}-review-${pr_num}" 2>/dev/null || true
@ -87,7 +87,7 @@ if [ -n "$REVIEW_SESSIONS" ]; then
tmux kill-session -t "$session" 2>/dev/null || true
rm -f "$phase_file" "/tmp/${PROJECT_NAME}-review-output-${pr_num}.json" \
"/tmp/review-injected-${PROJECT_NAME}-${pr_num}"
sed -i "/\t${pr_num}$/d" /tmp/review-thread-map 2>/dev/null || true
sed -i "/\t${pr_num}$/d" "${MATRIX_THREAD_MAP:-/tmp/matrix-thread-map}" 2>/dev/null || true
cd "$REPO_ROOT"
git worktree remove "/tmp/${PROJECT_NAME}-review-${pr_num}" --force 2>/dev/null || true
rm -rf "/tmp/${PROJECT_NAME}-review-${pr_num}" 2>/dev/null || true

View file

@ -50,7 +50,7 @@ TMPDIR=$(mktemp -d)
SESSION_NAME="review-${PROJECT_NAME}-${PR_NUMBER}"
PHASE_FILE="/tmp/review-session-${PROJECT_NAME}-${PR_NUMBER}.phase"
REVIEW_OUTPUT_FILE="/tmp/${PROJECT_NAME}-review-output-${PR_NUMBER}.json"
REVIEW_THREAD_MAP="/tmp/review-thread-map"
# Thread map: use standard MATRIX_THREAD_MAP (shared with all agents)
REVIEW_WAIT_INTERVAL=10 # seconds between phase checks
REVIEW_WAIT_TIMEOUT=600 # 10 min max for a single review cycle
@ -865,10 +865,8 @@ ${FU_DETAILS}
fi
# --- Notify Matrix (with thread mapping for human questions) ---
EVENT_ID=$(matrix_send "review" "PR #${PR_NUMBER} ${REVIEW_TYPE}: ${VERDICT}${PR_TITLE}" 2>/dev/null || true)
if [ -n "$EVENT_ID" ]; then
printf '%s\t%s\n' "$EVENT_ID" "$PR_NUMBER" >> "$REVIEW_THREAD_MAP" 2>/dev/null || true
fi
# Pass PR_NUMBER as context_tag (4th arg) so the standard thread map has it in column 4
matrix_send "review" "PR #${PR_NUMBER} ${REVIEW_TYPE}: ${VERDICT}${PR_TITLE}" "" "$PR_NUMBER" >/dev/null 2>&1 || true
log "DONE: ${VERDICT} (re-review: ${IS_RE_REVIEW})"