From f3d938106807c1887813c7827b9885cc62983d91 Mon Sep 17 00:00:00 2001 From: Sameel Date: Mon, 6 Oct 2025 16:41:05 -0700 Subject: [PATCH 1/2] pull from edge config --- .gitignore | 1 + app/api/session/route.ts | 44 ++++++++++++++++++++++++++++++---------- package.json | 1 + pnpm-lock.yaml | 23 +++++++++++++++++++++ 4 files changed, 58 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 5ea6d0e..c192313 100644 --- a/.gitignore +++ b/.gitignore @@ -84,3 +84,4 @@ target/ test/ .vercel +.env*.local diff --git a/app/api/session/route.ts b/app/api/session/route.ts index c640ebf..0bde4e8 100644 --- a/app/api/session/route.ts +++ b/app/api/session/route.ts @@ -1,5 +1,6 @@ import { NextResponse } from "next/server"; import Browserbase from "@browserbasehq/sdk"; +import { get, getAll } from "@vercel/edge-config"; type BrowserbaseRegion = | "us-west-2" @@ -76,28 +77,49 @@ function getClosestRegion(timezone?: string): BrowserbaseRegion { } } +interface EdgeConfig { + advancedStealth: boolean | undefined; + proxies: boolean | undefined; +} + async function createSession(timezone?: string) { const bb = new Browserbase({ apiKey: process.env.BROWSERBASE_API_KEY!, }); - const browserSettings: Browserbase.Sessions.SessionCreateParams.BrowserSettings = { - viewport: { - width: 2560, - height: 1440, - }, - //@ts-expect-error - not present in the types, but valid - os: "windows", - blockAds: true, - advancedStealth: true - }; + const config = await getAll(); + + console.log("config", config); + + const { advancedStealth: advancedStealthConfig, proxies: proxiesConfig } = + config; + + const advancedStealth: boolean = advancedStealthConfig ?? false; + const proxies: boolean = proxiesConfig ?? true; + + // Build browserSettings conditionally + const browserSettings: Browserbase.Sessions.SessionCreateParams.BrowserSettings = + { + viewport: { + width: 2560, + height: 1440, + }, + blockAds: true, + advancedStealth, + // Only set os if advancedStealth is true + ...(advancedStealth + ? { + os: "mac", + } + : {}), + }; console.log("timezone ", timezone); console.log("getClosestRegion(timezone)", getClosestRegion(timezone)); const session = await bb.sessions.create({ projectId: process.env.BROWSERBASE_PROJECT_ID!, - proxies: true, + proxies, browserSettings, keepAlive: true, region: getClosestRegion(timezone), diff --git a/package.json b/package.json index 12b8945..7700416 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@browserbasehq/sdk": "^2.6.0", "@browserbasehq/stagehand": "file:./sdk/stagehand-ts", "@vercel/analytics": "^1.4.1", + "@vercel/edge-config": "^1.4.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "framer-motion": "^11.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3768a86..d6575b2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@vercel/analytics': specifier: ^1.4.1 version: 1.5.0(next@15.1.6(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + '@vercel/edge-config': + specifier: ^1.4.0 + version: 1.4.0(@opentelemetry/api@1.9.0) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -772,6 +775,18 @@ packages: vue-router: optional: true + '@vercel/edge-config-fs@0.1.0': + resolution: {integrity: sha512-NRIBwfcS0bUoUbRWlNGetqjvLSwgYH/BqKqDN7vK1g32p7dN96k0712COgaz6VFizAm9b0g6IG6hR6+hc0KCPg==} + + '@vercel/edge-config@1.4.0': + resolution: {integrity: sha512-69Wg5gw9DzwnyUmnjToSeLRm1nm8mCPgN0kflX8EHRHyqvzH80wPem5A8rI2LXPb2Y9tJNoqN3vXPcQhS2Wh5g==} + engines: {node: '>=14.6'} + peerDependencies: + '@opentelemetry/api': ^1.7.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -3516,6 +3531,14 @@ snapshots: next: 15.1.6(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 + '@vercel/edge-config-fs@0.1.0': {} + + '@vercel/edge-config@1.4.0(@opentelemetry/api@1.9.0)': + dependencies: + '@vercel/edge-config-fs': 0.1.0 + optionalDependencies: + '@opentelemetry/api': 1.9.0 + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 From 381115feda3058ed1ca960d0c98555ac55747d8b Mon Sep 17 00:00:00 2001 From: Sameel Date: Mon, 6 Oct 2025 16:54:32 -0700 Subject: [PATCH 2/2] fix imports --- app/api/session/route.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/api/session/route.ts b/app/api/session/route.ts index 5596e49..c2320b8 100644 --- a/app/api/session/route.ts +++ b/app/api/session/route.ts @@ -1,6 +1,6 @@ -import { NextResponse } from "next/server"; import Browserbase from "@browserbasehq/sdk"; -import { get, getAll } from "@vercel/edge-config"; +import { getAll } from "@vercel/edge-config"; +import { NextResponse } from "next/server"; type BrowserbaseRegion = | "us-west-2"