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);
});