Files
oh-my-opencode/src/plugin-dispose.ts
T

30 lines
678 B
TypeScript
Raw Normal View History

export type PluginDispose = () => Promise<void>
export function createPluginDispose(args: {
backgroundManager: {
shutdown: () => void
}
skillMcpManager: {
disconnectAll: () => Promise<void>
}
disposeHooks: () => void
}): PluginDispose {
2026-03-11 21:16:37 +09:00
const { backgroundManager, skillMcpManager, disposeHooks } = args
let disposePromise: Promise<void> | null = null
return async (): Promise<void> => {
if (disposePromise) {
await disposePromise
return
}
disposePromise = (async (): Promise<void> => {
backgroundManager.shutdown()
2026-03-11 21:16:37 +09:00
await skillMcpManager.disconnectAll()
disposeHooks()
})()
await disposePromise
}
}