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;
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<string, ToolDefinition> = taskSystemEnabled