const captureVisibleTab = () => { const result = new Promise((resolve) => { if (import.meta.env.BROWSER === "chrome" || import.meta.env.BROWSER === "edge") { chrome.tabs.query({ active: true, currentWindow: true }, async (tabs) => { const tab = tabs[0] chrome.tabs.captureVisibleTab(null, { format: "png" }, (dataUrl) => { resolve(dataUrl) }) }) } else { browser.tabs .query({ active: true, currentWindow: true }) .then(async (tabs) => { const dataUrl = (await Promise.race([ browser.tabs.captureVisibleTab(null, { format: "png" }), new Promise((_, reject) => setTimeout( () => reject(new Error("Screenshot capture timed out")), 10000 ) ) ])) as string resolve(dataUrl) }) } }) return result } export const getScreenshotFromCurrentTab = async () => { try { const screenshotDataUrl = await captureVisibleTab() return { success: true, screenshot: screenshotDataUrl, error: null } } catch (error) { return { success: false, screenshot: null, error: error instanceof Error ? error.message : "Failed to capture screenshot" } } }