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:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user