← Public packages
@kody/browser-run
Call Cloudflare Browser Run Quick Actions and reuse shared sessions with createBrowserContext.
AGENTS.md
90 lines · 3.0 KB · Markdown@kody/browser-run — agent notes
Human setup and intent: README.md. Prefer static
kody:@kody/browser-run/… imports from execute. Never packages.invoke.
Secrets
| Name | Notes |
|---|---|
cloudflareApiToken | Default. Browser Rendering - Edit. Host: api.cloudflare.com. |
apiTokenSecret param | Alternate secret name only — not a token value. |
Require accountId on live calls. Never hardcode a Cloudflare account id into
this @kody package.
Setup URL (prefilled): https://kody.codes/account/secrets/new?name=cloudflareApiToken&description=Cloudflare%20API%20token%20with%20Browser%20Rendering%20-%20Edit&allowedHosts=api.cloudflare.com&scope=user
Import table
| Export | Import |
|---|---|
| overview | kody:@kody/browser-run |
| quick-action | kody:@kody/browser-run/quick-action |
| screenshot / content / pdf / markdown / scrape / links | kody:@kody/browser-run/<name> |
| sessions/list | kody:@kody/browser-run/sessions/list |
| sessions/get | kody:@kody/browser-run/sessions/get |
| sessions/close | kody:@kody/browser-run/sessions/close |
| sessions/acquire | kody:@kody/browser-run/sessions/acquire |
| sessions/connect | kody:@kody/browser-run/sessions/connect |
| open-isolated (DEFAULT session path) | kody:@kody/browser-run/open-isolated |
| worker-recipe | kody:@kody/browser-run/worker-recipe |
| smoke-test | kody:@kody/browser-run/smoke-test |
Smoke tests
Dry / setup guidance (no accountId):
import smokeTest from 'kody:@kody/browser-run/smoke-test'
export default async function main() {
return await smokeTest()
}Overview (no secrets):
import overview from 'kody:@kody/browser-run'
export default async function main() {
return await overview()
}List sessions (needs secret + accountId):
import listSessions from 'kody:@kody/browser-run/sessions/list'
export default async function main() {
return await listSessions({ accountId: 'YOUR_ACCOUNT_ID', dryRun: true })
}Default shared-session path:
import openIsolated from 'kody:@kody/browser-run/open-isolated'
export default async function main() {
return await openIsolated({ accountId: 'YOUR_ACCOUNT_ID', dryRun: true })
}Edge cases / footguns
- Never
browser.close()on a shared session. Usecontext.close()thenbrowser.disconnect(). - Do not launch a new session in a tight loop without listing first —
use
open-isolated. - Mutating session close requires
confirm: true(ordryRun: true). - Agent-facing write/session mutation inputs use
remix/data-schemawith{ unknownKeys: 'error' }— unknown keys throw. - Screenshot/PDF Quick Actions may return
{ kind: 'binary', base64, contentType }. - This package must not depend on
@cloudflare/puppeteer/ Playwright — useworker-recipefor deployable Worker code. - Concurrent clients need
@cloudflare/puppeteer≥ 1.1.0 (Playwright ≥ 1.3.0). - Docs: https://developers.cloudflare.com/browser-run/features/reuse-sessions/