03eaa429ce
- C3: include command args in auto-slash-command dedup key - H2: track completed task summaries for ALL COMPLETE message - H9: increment tmux close retry count on re-mark - H8: detect stale MCP connections after disconnect+reconnect race - H8: guard disconnectedSessions growth for non-MCP sessions - C1: await tmux cleanup in plugin dispose lifecycle
36 lines
829 B
TypeScript
36 lines
829 B
TypeScript
export type PluginDispose = () => Promise<void>
|
|
|
|
export function createPluginDispose(args: {
|
|
backgroundManager: {
|
|
shutdown: () => void
|
|
}
|
|
skillMcpManager: {
|
|
disconnectAll: () => Promise<void>
|
|
}
|
|
tmuxSessionManager: {
|
|
cleanup: () => Promise<void>
|
|
}
|
|
disposeHooks: () => void
|
|
}): PluginDispose {
|
|
const { backgroundManager, skillMcpManager, tmuxSessionManager, disposeHooks } = args
|
|
let disposePromise: Promise<void> | null = null
|
|
|
|
return async (): Promise<void> => {
|
|
if (disposePromise) {
|
|
await disposePromise
|
|
return
|
|
}
|
|
|
|
disposePromise = (async (): Promise<void> => {
|
|
backgroundManager.shutdown()
|
|
await Promise.all([
|
|
skillMcpManager.disconnectAll(),
|
|
tmuxSessionManager.cleanup(),
|
|
])
|
|
disposeHooks()
|
|
})()
|
|
|
|
await disposePromise
|
|
}
|
|
}
|