From 3a939d806cf206790db8aae0a513eef51c3be16c Mon Sep 17 00:00:00 2001 From: dprevoznik <58714078+dprevoznik@users.noreply.github.com> Date: Tue, 21 Apr 2026 14:18:34 +0000 Subject: [PATCH 1/3] fix(auth): connect Playwright before using page in overview example The 'Use the Profile' example called page.goto() without ever defining page, causing a NameError/ReferenceError on copy-paste. Mirror the CDP connection pattern from browsers/create-a-browser so the snippet is runnable as-is. --- auth/overview.mdx | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/auth/overview.mdx b/auth/overview.mdx index 9a2ba56..1cb828e 100644 --- a/auth/overview.mdx +++ b/auth/overview.mdx @@ -74,23 +74,36 @@ if state.status == "AUTHENTICATED": ```typescript TypeScript -const browser = await kernel.browsers.create({ +import { chromium } from 'playwright'; + +const kernelBrowser = await kernel.browsers.create({ profile: { name: 'netflix-user-123' }, stealth: true, }); +const browser = await chromium.connectOverCDP(kernelBrowser.cdp_ws_url); +const context = browser.contexts()[0]; +const page = context.pages()[0]; + // Navigate to the site—you're already logged in await page.goto('https://netflix.com'); ``` ```python Python -browser = await kernel.browsers.create( +from playwright.async_api import async_playwright + +kernel_browser = await kernel.browsers.create( profile={"name": "netflix-user-123"}, stealth=True, ) -# Navigate to the site—you're already logged in -await page.goto("https://netflix.com") +async with async_playwright() as playwright: + browser = await playwright.chromium.connect_over_cdp(kernel_browser.cdp_ws_url) + context = browser.contexts[0] + page = context.pages[0] + + # Navigate to the site—you're already logged in + await page.goto("https://netflix.com") ``` From c9a1317abea15b2134c8040f8eda9c5c9ae55f54 Mon Sep 17 00:00:00 2001 From: dprevoznik <58714078+dprevoznik@users.noreply.github.com> Date: Tue, 21 Apr 2026 14:20:29 +0000 Subject: [PATCH 2/3] docs(auth): add Kernel SDK imports to first overview snippet --- auth/overview.mdx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/auth/overview.mdx b/auth/overview.mdx index 1cb828e..d269d39 100644 --- a/auth/overview.mdx +++ b/auth/overview.mdx @@ -13,6 +13,10 @@ Managed Auth creates and maintains authenticated browser sessions for your AI ag ```typescript TypeScript +import Kernel from '@onkernel/sdk'; + +const kernel = new Kernel(); + const auth = await kernel.auth.connections.create({ domain: 'netflix.com', profile_name: 'netflix-user-123', @@ -20,6 +24,10 @@ const auth = await kernel.auth.connections.create({ ``` ```python Python +from kernel import AsyncKernel + +kernel = AsyncKernel() + auth = await kernel.auth.connections.create( domain="netflix.com", profile_name="netflix-user-123", From b495242e646ac9f1b4506fa63214cb9d0bfd5b90 Mon Sep 17 00:00:00 2001 From: dprevoznik <58714078+dprevoznik@users.noreply.github.com> Date: Tue, 21 Apr 2026 14:23:41 +0000 Subject: [PATCH 3/3] docs(auth): use sync Kernel client in Python snippets Matches the dominant pattern across the docs (sync Kernel client with async Playwright). Keeps the Step 3 Playwright block async, since that mirrors browsers/create-a-browser.mdx. --- auth/overview.mdx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/auth/overview.mdx b/auth/overview.mdx index d269d39..e069381 100644 --- a/auth/overview.mdx +++ b/auth/overview.mdx @@ -24,11 +24,11 @@ const auth = await kernel.auth.connections.create({ ``` ```python Python -from kernel import AsyncKernel +from kernel import Kernel -kernel = AsyncKernel() +kernel = Kernel() -auth = await kernel.auth.connections.create( +auth = kernel.auth.connections.create( domain="netflix.com", profile_name="netflix-user-123", ) @@ -60,16 +60,18 @@ if (state.status === 'AUTHENTICATED') { ``` ```python Python -login = await kernel.auth.connections.login(auth.id) +import time + +login = kernel.auth.connections.login(auth.id) # Send user to login page print(f"Login URL: {login.hosted_url}") # Poll until complete -state = await kernel.auth.connections.retrieve(auth.id) +state = kernel.auth.connections.retrieve(auth.id) while state.flow_status == "IN_PROGRESS": - await asyncio.sleep(2) - state = await kernel.auth.connections.retrieve(auth.id) + time.sleep(2) + state = kernel.auth.connections.retrieve(auth.id) if state.status == "AUTHENTICATED": print("Authenticated!") @@ -100,7 +102,7 @@ await page.goto('https://netflix.com'); ```python Python from playwright.async_api import async_playwright -kernel_browser = await kernel.browsers.create( +kernel_browser = kernel.browsers.create( profile={"name": "netflix-user-123"}, stealth=True, )