const puppeteer = require('puppeteer-core'); const axios = require('axios'); const BROWSER_API_URL = 'https://samleuma-browser.hf.space'; async function getRemoteBrowser() { const response = await axios.get(`${BROWSER_API_URL}/api/ws-endpoint`, { timeout: 30000 }); if (!response.data.browserConnected || !response.data.wsEndpoint) { throw new Error('Remote browser not ready'); } const wsEndpoint = response.data.wsEndpoint.replace('ws://127.0.0.1', 'wss://samleuma-browser.hf.space'); const browser = await puppeteer.connect({ browserWSEndpoint: wsEndpoint, defaultViewport: { width: 1280, height: 800 } }); return browser; } async function executeOnRemoteBrowser(url, script, waitFor = null) { const payload = { url, script }; if (waitFor) payload.waitFor = waitFor; const response = await axios.post(`${BROWSER_API_URL}/api/execute`, payload, { timeout: 60000 }); return response.data; } async function takeRemoteScreenshot(url, fullPage = false) { const response = await axios.post(`${BROWSER_API_URL}/api/screenshot`, { url, fullPage }, { timeout: 60000 }); return response.data; } async function createRemotePage() { const response = await axios.post(`${BROWSER_API_URL}/api/page/new`, {}, { timeout: 30000 }); return response.data; } async function getBrowserStatus() { const response = await axios.get(`${BROWSER_API_URL}/api/status`, { timeout: 10000 }); return response.data; } module.exports = { getRemoteBrowser, executeOnRemoteBrowser, takeRemoteScreenshot, createRemotePage, getBrowserStatus, BROWSER_API_URL };