const { execSync } = require('child_process');
try {
    console.log('š¦ Installing @onkernel/sdk...');
    execSync('npm install @onkernel/sdk', { stdio: 'inherit' });
    console.log('ā
 @onkernel/sdk installed successfully');
} catch (error) {
    console.error('ā Failed to install @onkernel/sdk:', error.message);
    process.exit(1);
}
const Kernel = require('@onkernel/sdk').default;
async function createKernelBrowser() {
    try {
        console.log('š Initializing Kernel client...');
        
        
        const client = new Kernel({
            apiKey: process.env.KEYBOARD_KERNEL_API_KEY,
            environment: '{{environment}}' || 'production'
        });
        
        console.log('š Creating browser instance...');
        
        
        const browserConfig = {};
        
        
        if ({{enablePersistence}}) {
            const sessionId = '{{sessionName}}' ? 
                '{{sessionName}}-' + Date.now() : 
                'browser-session-' + Date.now();
            browserConfig.persistence = { id: sessionId };
        }
        
        
        const browser = await client.browsers.create(browserConfig);
        
        console.log('ā
 Browser created successfully!');
        console.log('š Browser Details:');
        console.log(`   Session ID: ${browser.session_id}`);
        console.log(`   CDP WebSocket URL: ${browser.cdp_ws_url}`);
        console.log(`   Live View URL: ${browser.live_view_url || 'Not available'}`);
        console.log(`   Status: ${browser.status || 'Initializing'}`);
        
        
        console.log('\nš Verifying browser creation...');
        const allBrowsers = await client.browsers.list();
        console.log(`   Total browsers: ${allBrowsers.length}`);
        
        const ourBrowser = allBrowsers.find(b => b.session_id === browser.session_id);
        if (ourBrowser) {
            console.log('ā
 Verification successful - browser found in list');
            console.log(`   Browser state: ${ourBrowser.status || 'Active'}`);
        } else {
            console.log('ā ļø  Browser not found in list (may still be initializing)');
        }
        
        
        console.log('\nš Usage Examples:');
        console.log('   Playwright: const browser = await chromium.connectOverCDP("' + browser.cdp_ws_url + '");');
        console.log('   Puppeteer: const browser = await puppeteer.connect({browserWSEndpoint: "' + browser.cdp_ws_url + '"});');
        
        return browser;
        
    } catch (error) {
        console.error('ā Error creating kernel browser:', error.message);
        if (error.response) {
            console.error('   Response status:', error.response.status);
            console.error('   Response data:', error.response.data);
        }
        throw error;
    }
}
createKernelBrowser()
    .then(browser => {
        console.log('\nš Script completed successfully!');
        console.log('š” Next steps:');
        console.log('   1. Use the CDP WebSocket URL to connect browser automation frameworks');
        console.log('   2. Connect with Playwright: chromium.connectOverCDP(browser.cdp_ws_url)');
        console.log('   3. Connect with Puppeteer: puppeteer.connect({browserWSEndpoint: browser.cdp_ws_url})');
        console.log('   4. Use the session ID for future API calls');
        console.log('   5. Access Live View URL for visual debugging (if available)');
    })
    .catch(error => {
        console.error('\nš„ Script failed:', error.message);
        process.exit(1);
    });