Merge pull request 'fix: feat: stream dev-agent Claude output to Matrix thread (extend #293 to dev-agent) (#355)' (#463) from fix/issue-355 into main
This commit is contained in:
commit
1ba22ca750
2 changed files with 24 additions and 14 deletions
|
|
@ -93,8 +93,9 @@ backlog issues (all deps closed) or orphaned in-progress issues and spawns
|
|||
- `CLAUDE_TIMEOUT` — Max seconds for a Claude session (default 7200)
|
||||
- `MATRIX_TOKEN`, `MATRIX_ROOM_ID`, `MATRIX_HOMESERVER` — Notifications (optional)
|
||||
|
||||
**Lifecycle**: dev-poll.sh → dev-agent.sh → tmux `dev-{project}-{issue}` →
|
||||
phase file drives CI/review loop → merge → close issue.
|
||||
**Lifecycle**: dev-poll.sh → dev-agent.sh → create Matrix thread + export
|
||||
`MATRIX_THREAD_ID` (streams Claude output to thread via Stop hook) → tmux
|
||||
`dev-{project}-{issue}` → phase file drives CI/review loop → merge → close issue.
|
||||
|
||||
### Review (`review/`)
|
||||
|
||||
|
|
|
|||
|
|
@ -709,6 +709,27 @@ ${SCRATCH_INSTRUCTION}
|
|||
${PHASE_PROTOCOL_INSTRUCTIONS}"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# CREATE MATRIX THREAD (before tmux so MATRIX_THREAD_ID is available for Stop hook)
|
||||
# =============================================================================
|
||||
if [ ! -f "${THREAD_FILE}" ] || [ -z "$(cat "$THREAD_FILE" 2>/dev/null)" ]; then
|
||||
ISSUE_URL="${CODEBERG_WEB}/issues/${ISSUE}"
|
||||
_thread_id=$(matrix_send_ctx "dev" \
|
||||
"🔧 Issue #${ISSUE}: ${ISSUE_TITLE} — ${ISSUE_URL}" \
|
||||
"🔧 <a href='${ISSUE_URL}'>Issue #${ISSUE}</a>: ${ISSUE_TITLE}") || true
|
||||
if [ -n "${_thread_id:-}" ]; then
|
||||
printf '%s' "$_thread_id" > "$THREAD_FILE"
|
||||
# Register thread root in map for listener dispatch
|
||||
printf '%s\t%s\t%s\t%s\t%s\n' "$_thread_id" "dev" "$(date +%s)" "${ISSUE}" "${PROJECT_NAME}" >> "${MATRIX_THREAD_MAP:-/tmp/matrix-thread-map}" 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
|
||||
# Export for on-stop-matrix.sh hook (streams Claude output to thread)
|
||||
_thread_id=$(cat "$THREAD_FILE" 2>/dev/null || true)
|
||||
if [ -n "${_thread_id:-}" ]; then
|
||||
export MATRIX_THREAD_ID="$_thread_id"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# CREATE TMUX SESSION
|
||||
# =============================================================================
|
||||
|
|
@ -727,18 +748,6 @@ log "initial prompt sent to tmux session"
|
|||
|
||||
# Signal to dev-poll.sh that we're running (session is up)
|
||||
echo '{"status":"ready"}' > "$PREFLIGHT_RESULT"
|
||||
# Create Matrix thread for this issue (or reuse existing one)
|
||||
if [ ! -f "${THREAD_FILE}" ] || [ -z "$(cat "$THREAD_FILE" 2>/dev/null)" ]; then
|
||||
ISSUE_URL="${CODEBERG_WEB}/issues/${ISSUE}"
|
||||
_thread_id=$(matrix_send_ctx "dev" \
|
||||
"🔧 Issue #${ISSUE}: ${ISSUE_TITLE} — ${ISSUE_URL}" \
|
||||
"🔧 <a href='${ISSUE_URL}'>Issue #${ISSUE}</a>: ${ISSUE_TITLE}") || true
|
||||
if [ -n "${_thread_id:-}" ]; then
|
||||
printf '%s' "$_thread_id" > "$THREAD_FILE"
|
||||
# Register thread root in map for listener dispatch
|
||||
printf '%s\t%s\t%s\t%s\t%s\n' "$_thread_id" "dev" "$(date +%s)" "${ISSUE}" "${PROJECT_NAME}" >> "${MATRIX_THREAD_MAP:-/tmp/matrix-thread-map}" 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
notify "tmux session ${SESSION_NAME} started for issue #${ISSUE}: ${ISSUE_TITLE}"
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue