From 9651c9f821ca5b5a9a44e4fe4d44bf411d5ea61e Mon Sep 17 00:00:00 2001 From: MagMueller Date: Wed, 26 Aug 2026 21:46:31 -0700 Subject: [PATCH] fix(browser): provision cloud browsers through V4 --- packages/bcode-browser/skills/browser-execute/SKILL.md | 6 +++--- packages/bcode-browser/test/skills.test.ts | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/bcode-browser/skills/browser-execute/SKILL.md b/packages/bcode-browser/skills/browser-execute/SKILL.md index 581e925406..f7dd31d133 100644 --- a/packages/bcode-browser/skills/browser-execute/SKILL.md +++ b/packages/bcode-browser/skills/browser-execute/SKILL.md @@ -66,12 +66,12 @@ Choose when the computer has no browser or to work in the background. ```js // Provision and connect to a cloud browser -const r = await fetch("https://api.browser-use.com/api/v3/browsers", { +const r = await fetch("https://api.browser-use.com/api/v4/browsers", { method: "POST", headers: { "X-Browser-Use-API-Key": process.env.BROWSER_USE_API_KEY, "Content-Type": "application/json" }, body: "{}", }) -// Additional options: fetch https://docs.browser-use.com/cloud/api-v3/browsers/create-browser-session +// Additional options: fetch https://docs.browser-use.com/cloud/openapi/v4.json const { id, cdpUrl, liveUrl } = await r.json() const ver = await fetch(`${cdpUrl}/json/version`).then(r => r.json()) await session.connect({ wsUrl: ver.webSocketDebuggerUrl }) @@ -80,7 +80,7 @@ console.log("liveUrl for the user to watch:", liveUrl) ```js // Browser Use cloud will eventually close idle browsers. An explicit stop frees the slot: -await fetch(`https://api.browser-use.com/api/v3/browsers/${id}`, { +await fetch(`https://api.browser-use.com/api/v4/browsers/${id}`, { method: "PATCH", headers: { "X-Browser-Use-API-Key": process.env.BROWSER_USE_API_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ action: "stop" }), diff --git a/packages/bcode-browser/test/skills.test.ts b/packages/bcode-browser/test/skills.test.ts index 1a6dd2e021..07ed4aa2e0 100644 --- a/packages/bcode-browser/test/skills.test.ts +++ b/packages/bcode-browser/test/skills.test.ts @@ -17,6 +17,10 @@ test("resolveSkillsDir materializes skills with {{SKILLS_DIR}} substituted", asy const browser = (await fs.readFile(path.join(dir, "browser-execute", "SKILL.md"), "utf8")).replaceAll("\\", "/") expect(browser).not.toContain("{{SKILLS_DIR}}") expect(browser).toContain(`${dir.replaceAll("\\", "/")}/`) + expect(browser).toContain('fetch("https://api.browser-use.com/api/v4/browsers"') + expect(browser).toContain("fetch(`https://api.browser-use.com/api/v4/browsers/${id}`") + expect(browser).toContain("https://docs.browser-use.com/cloud/openapi/v4.json") + expect(browser).not.toContain("https://api.browser-use.com/api/v3") } finally { await fs.rm(dataDir, { recursive: true, force: true }) }