refactor(background-agent): wire ParentWakeNotifier into BackgroundManager

Replace the inlined parent-wake coalescing logic in manager.ts with delegation to the ParentWakeNotifier extracted in c1ccf8d09. The four timer Maps and the related methods now live in their own module with a narrow public API, while BackgroundManager retains the wiring point and the enqueue-callback bridge.

Closes HIGH-9 (step 2: integration)

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-05-16 01:43:16 +09:00
parent 41ff7bca24
commit 7dbb34cd4f
3 changed files with 33 additions and 392 deletions
@@ -98,9 +98,8 @@ function createManager(
abort: async () => ({}),
},
}
const placeholderClient = {} as PluginInput["client"]
const ctx: PluginInput = {
client: placeholderClient,
client: client as PluginInput["client"],
project: {} as PluginInput["project"],
directory: tmpdir(),
worktree: tmpdir(),
@@ -111,7 +110,6 @@ function createManager(
const manager = new BackgroundManager(
{ pluginContext: ctx, config: undefined, enableParentSessionNotifications }
)
Reflect.set(manager, "client", client)
return { manager, promptAsyncCalls }
}
@@ -174,7 +172,10 @@ function getPendingNotifications(manager: BackgroundManager): Map<string, string
}
function getPendingParentWakes(manager: BackgroundManager): Map<string, PendingParentWakeForTest> {
return Reflect.get(manager, "pendingParentWakes") as Map<string, PendingParentWakeForTest>
const parentWakeNotifier = Reflect.get(manager, "parentWakeNotifier") as {
getPendingParentWakes: () => Map<string, PendingParentWakeForTest>
}
return parentWakeNotifier.getPendingParentWakes()
}
function getCompletionTimers(manager: BackgroundManager): Map<string, ReturnType<typeof setTimeout>> {