fix: stop hook should nudge Claude when PHASE file is empty — prevents silent exit without PHASE:done (#585)
When Claude finishes a response but hasn't written to the PHASE file, the stop hook now injects a nudge into the tmux session instead of just marking idle. This gives Claude another chance to complete the phase protocol before the monitor loop times out. Key changes: - on-idle-stop.sh: check phase file emptiness, nudge via tmux (max 2) - agent-session.sh: pass phase_file + session to stop hook, clean up nudge counter on session teardown Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c316d2a3b6
commit
742b64e743
2 changed files with 36 additions and 2 deletions
|
|
@ -66,6 +66,11 @@ create_agent_session() {
|
|||
local hook_script="${FACTORY_ROOT}/lib/hooks/on-idle-stop.sh"
|
||||
if [ -x "$hook_script" ]; then
|
||||
local hook_cmd="${hook_script} ${idle_marker}"
|
||||
# When a phase file is available, pass it and the session name so the
|
||||
# hook can nudge Claude if it returns to the prompt without signalling.
|
||||
if [ -n "$phase_file" ]; then
|
||||
hook_cmd="${hook_script} ${idle_marker} ${phase_file} ${session}"
|
||||
fi
|
||||
if [ -f "$settings" ]; then
|
||||
# Append our Stop hook to existing project settings
|
||||
jq --arg cmd "$hook_cmd" '
|
||||
|
|
@ -443,6 +448,7 @@ agent_kill_session() {
|
|||
rm -f "/tmp/claude-idle-${session}.ts"
|
||||
rm -f "/tmp/phase-changed-${session}.marker"
|
||||
rm -f "/tmp/claude-exited-${session}.ts"
|
||||
rm -f "/tmp/claude-nudge-${session}.count"
|
||||
}
|
||||
|
||||
# Read the current phase from a phase file, stripped of whitespace.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue