fix(todo-continuation-enforcer): persist errorBypass mode until user sends message

Previously, errorBypass mode was cleared on session.idle, causing continuation
to fire again on next idle event. This led to unwanted task resumption after
user abort.

Changes:
- Don't clear errorBypass on session.idle - stay in errorBypass mode
- Clear errorBypass to idle only when user sends a new message

This ensures that once user aborts, the enforcer respects that decision until
the user explicitly sends a message to resume.

🤖 Generated with assistance of OhMyOpenCode (https://github.com/code-yeongyu/oh-my-opencode)
This commit is contained in:
YeonGyu-Kim
2025-12-28 16:38:03 +09:00
parent daa5f6ee5b
commit 5fbcb88a3f

View File

@@ -424,10 +424,9 @@ export function createTodoContinuationEnforcer(
return
}
// Skip if in error bypass mode (clear it for next time)
// Skip if in error bypass mode (DO NOT clear - wait for user message)
if (state.mode === "errorBypass") {
state.mode = "idle"
log(`[${HOOK_NAME}] Skipped: error bypass (cleared for next idle)`, { sessionID })
log(`[${HOOK_NAME}] Skipped: error bypass (awaiting user message to resume)`, { sessionID })
return
}
@@ -489,8 +488,13 @@ export function createTodoContinuationEnforcer(
if (!sessionID) return
// User message: Always cancel countdown
// User message: Always cancel countdown and clear errorBypass
if (role === "user") {
const state = sessions.get(sessionID)
if (state?.mode === "errorBypass") {
state.mode = "idle"
log(`[${HOOK_NAME}] User message cleared errorBypass mode`, { sessionID })
}
invalidate(sessionID, "user message received")
return
}