import { reactive } from 'vue' const pending = reactive(new Map>()) export function isInstanceLaunching(instanceId: string) { return pending.has(instanceId) } /** Coalesce repeated clicks for one launch without blocking other instances. */ export function launchOnce(instanceId: string, launch: () => Promise): Promise { const existing = pending.get(instanceId) if (existing) return existing as Promise const task = Promise.resolve() .then(launch) .finally(() => { pending.delete(instanceId) }) pending.set(instanceId, task) return task }