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.
This commit is contained in:
YeonGyu-Kim 2026-02-06 11:41:31 +09:00
parent 551dbc95f2
commit 01594a67af

View File

@ -374,12 +374,7 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => {
) )
: null; : null;
if (sessionRecovery && todoContinuationEnforcer) { // sessionRecovery callbacks are setters; compose callbacks so both enforcers are notified.
sessionRecovery.setOnAbortCallback(todoContinuationEnforcer.markRecovering);
sessionRecovery.setOnRecoveryCompleteCallback(
todoContinuationEnforcer.markRecoveryComplete,
);
}
const backgroundNotificationHook = isHookEnabled("background-notification") const backgroundNotificationHook = isHookEnabled("background-notification")
? createBackgroundNotificationHook(backgroundManager) ? createBackgroundNotificationHook(backgroundManager)
@ -487,11 +482,15 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => {
}) })
: null; : null;
if (sessionRecovery && taskContinuationEnforcer) { if (sessionRecovery && (todoContinuationEnforcer || taskContinuationEnforcer)) {
sessionRecovery.setOnAbortCallback(taskContinuationEnforcer.markRecovering); sessionRecovery.setOnAbortCallback((sessionID) => {
sessionRecovery.setOnRecoveryCompleteCallback( todoContinuationEnforcer?.markRecovering(sessionID);
taskContinuationEnforcer.markRecoveryComplete, taskContinuationEnforcer?.markRecovering(sessionID);
); });
sessionRecovery.setOnRecoveryCompleteCallback((sessionID) => {
todoContinuationEnforcer?.markRecoveryComplete(sessionID);
taskContinuationEnforcer?.markRecoveryComplete(sessionID);
});
} }
const taskToolsRecord: Record<string, ToolDefinition> = taskSystemEnabled const taskToolsRecord: Record<string, ToolDefinition> = taskSystemEnabled