import { loadBundledPluginPublicSurfaceModuleSync } from "./facade-loader.js"; export { movePathToTrash, type MovePathToTrashOptions } from "./browser-trash.js"; type CloseTrackedBrowserTabsParams = { sessionKeys: Array; closeTab?: (tab: { targetId: string; baseUrl?: string; profile?: string }) => Promise; onWarn?: (message: string) => void; }; type BrowserMaintenanceSurface = { closeTrackedBrowserTabsForSessions: (params: CloseTrackedBrowserTabsParams) => Promise; }; let cachedBrowserMaintenanceSurface: BrowserMaintenanceSurface | undefined; function hasRequestedSessionKeys(sessionKeys: Array): boolean { return sessionKeys.some((key) => Boolean(key?.trim())); } function loadBrowserMaintenanceSurface(): BrowserMaintenanceSurface { cachedBrowserMaintenanceSurface ??= loadBundledPluginPublicSurfaceModuleSync({ dirName: "browser", artifactBasename: "browser-maintenance.js", }); return cachedBrowserMaintenanceSurface; } export async function closeTrackedBrowserTabsForSessions( params: CloseTrackedBrowserTabsParams, ): Promise { if (!hasRequestedSessionKeys(params.sessionKeys)) { return 0; } let surface: BrowserMaintenanceSurface; try { surface = loadBrowserMaintenanceSurface(); } catch (error) { params.onWarn?.(`browser cleanup unavailable: ${String(error)}`); return 0; } return await surface.closeTrackedBrowserTabsForSessions(params); }