From 01594a67af291aa09b9e6b8e34d36da56b1c13bd Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Fri, 6 Feb 2026 11:41:31 +0900 Subject: [PATCH] fix(hooks): compose session recovery callbacks for continuation enforcers Cubic found that registering task-continuation-enforcer recovery callbacks overrode the todo-continuation-enforcer callbacks. Compose the callbacks so both enforcers receive abort/recovery notifications. --- src/index.ts | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/index.ts b/src/index.ts index cde0398c..bcdb6b6c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -374,12 +374,7 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { ) : null; - if (sessionRecovery && todoContinuationEnforcer) { - sessionRecovery.setOnAbortCallback(todoContinuationEnforcer.markRecovering); - sessionRecovery.setOnRecoveryCompleteCallback( - todoContinuationEnforcer.markRecoveryComplete, - ); - } + // sessionRecovery callbacks are setters; compose callbacks so both enforcers are notified. const backgroundNotificationHook = isHookEnabled("background-notification") ? createBackgroundNotificationHook(backgroundManager) @@ -487,11 +482,15 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => { }) : null; - if (sessionRecovery && taskContinuationEnforcer) { - sessionRecovery.setOnAbortCallback(taskContinuationEnforcer.markRecovering); - sessionRecovery.setOnRecoveryCompleteCallback( - taskContinuationEnforcer.markRecoveryComplete, - ); + if (sessionRecovery && (todoContinuationEnforcer || taskContinuationEnforcer)) { + sessionRecovery.setOnAbortCallback((sessionID) => { + todoContinuationEnforcer?.markRecovering(sessionID); + taskContinuationEnforcer?.markRecovering(sessionID); + }); + sessionRecovery.setOnRecoveryCompleteCallback((sessionID) => { + todoContinuationEnforcer?.markRecoveryComplete(sessionID); + taskContinuationEnforcer?.markRecoveryComplete(sessionID); + }); } const taskToolsRecord: Record = taskSystemEnabled