diff --git a/.release-please-manifest.json b/.release-please-manifest.json index f393718..a9b8e02 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "2.10.0" + ".": "2.11.0" } diff --git a/.stats.yml b/.stats.yml index bf21668..e5d38fd 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 21 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fbrowserbase-921d3c61c7aa06269f74bee63cee993597944f913429caa2aa2e00dd51fab60f.yml -openapi_spec_hash: d35b9613c41bf172fa2b28aceef10b39 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/browserbase-213a694dcb7548e9da9f79fdc415ae79475f51fed8353bc684b56bef5208e4ff.yml +openapi_spec_hash: 40adcceb64631c781311492ba14e8c8f config_hash: cf04ecfb8dad5fbd8b85be25d6e9ec55 diff --git a/CHANGELOG.md b/CHANGELOG.md index abb6690..d4a8c33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## 2.11.0 (2026-05-01) + +Full Changelog: [v2.10.0...v2.11.0](https://github.com/browserbase/sdk-node/compare/v2.10.0...v2.11.0) + +### Features + +* [CORE-1928][apps/api] Add `PENDING` as a valid session state ([6c1dc59](https://github.com/browserbase/sdk-node/commit/6c1dc59e8ed581d88c26483a84efecd3903f4379)) +* [CORE-1979] [apps/api] Regenerate OpenAPI spec to match current routes ([90f048c](https://github.com/browserbase/sdk-node/commit/90f048c79e02ead952b73d6bd185f6d58fa25076)) +* support setting headers via env ([c4bce5e](https://github.com/browserbase/sdk-node/commit/c4bce5e45f6dc0d2f560313ea70fd9bb1ac28fa6)) + + +### Chores + +* **internal:** codegen related update ([e079c39](https://github.com/browserbase/sdk-node/commit/e079c39733d21312ee5d9e11fed35a2b8bba93be)) +* **internal:** more robust bootstrap script ([39adddf](https://github.com/browserbase/sdk-node/commit/39adddf3d60bcf94349cb9103a7f41a1b0bb9f9f)) +* **tests:** bump steady to v0.22.1 ([cd4bf1a](https://github.com/browserbase/sdk-node/commit/cd4bf1aad650b63d38638218919715a790c1c819)) + ## 2.10.0 (2026-04-06) Full Changelog: [v2.9.0...v2.10.0](https://github.com/browserbase/sdk-node/compare/v2.9.0...v2.10.0) diff --git a/package-lock.json b/package-lock.json index a719b05..64a24c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@browserbasehq/sdk", - "version": "2.10.0", + "version": "2.11.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@browserbasehq/sdk", - "version": "2.10.0", + "version": "2.11.0", "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", diff --git a/package.json b/package.json index 095c2c4..d836657 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@browserbasehq/sdk", - "version": "2.10.0", + "version": "2.11.0", "description": "The official Node.js library for the Browserbase API", "author": "Browserbase ", "types": "dist/index.d.ts", diff --git a/scripts/bootstrap b/scripts/bootstrap index f68beda..28b5985 100755 --- a/scripts/bootstrap +++ b/scripts/bootstrap @@ -4,7 +4,7 @@ set -e cd "$(dirname "$0")/.." -if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "$SKIP_BREW" != "1" ] && [ -t 0 ]; then +if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "${SKIP_BREW:-}" != "1" ] && [ -t 0 ]; then brew bundle check >/dev/null 2>&1 || { echo -n "==> Install Homebrew dependencies? (y/N): " read -r response diff --git a/scripts/mock b/scripts/mock index 5cd7c15..feebe5e 100755 --- a/scripts/mock +++ b/scripts/mock @@ -22,9 +22,9 @@ echo "==> Starting mock server with URL ${URL}" # Run steady mock on the given spec if [ "$1" == "--daemon" ]; then # Pre-install the package so the download doesn't eat into the startup timeout - npm exec --package=@stdy/cli@0.20.2 -- steady --version + npm exec --package=@stdy/cli@0.22.1 -- steady --version - npm exec --package=@stdy/cli@0.20.2 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log & + npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log & # Wait for server to come online via health endpoint (max 30s) echo -n "Waiting for server" @@ -48,5 +48,5 @@ if [ "$1" == "--daemon" ]; then echo else - npm exec --package=@stdy/cli@0.20.2 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" + npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" fi diff --git a/scripts/test b/scripts/test index a9d718c..19b8d0c 100755 --- a/scripts/test +++ b/scripts/test @@ -43,7 +43,7 @@ elif ! steady_is_running ; then echo -e "To run the server, pass in the path or url of your OpenAPI" echo -e "spec to the steady command:" echo - echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.20.2 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}" + echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.22.1 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}" echo exit 1 diff --git a/src/core.ts b/src/core.ts index 821e4e5..10b9d3f 100644 --- a/src/core.ts +++ b/src/core.ts @@ -1054,10 +1054,10 @@ export const ensurePresent = (value: T | null | undefined): T => { */ export const readEnv = (env: string): string | undefined => { if (typeof process !== 'undefined') { - return process.env?.[env]?.trim() ?? undefined; + return process.env?.[env]?.trim() || undefined; } if (typeof Deno !== 'undefined') { - return Deno.env?.get?.(env)?.trim(); + return Deno.env?.get?.(env)?.trim() || undefined; } return undefined; }; diff --git a/src/index.ts b/src/index.ts index 56c1535..19c7fb5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -139,6 +139,18 @@ export class Browserbase extends Core.APIClient { fetch: options.fetch, }); + const customHeadersEnv = Core.readEnv('BROWSERBASE_CUSTOM_HEADERS'); + if (customHeadersEnv) { + const parsed: Record = {}; + for (const line of customHeadersEnv.split('\n')) { + const colon = line.indexOf(':'); + if (colon >= 0) { + parsed[line.substring(0, colon).trim()] = line.substring(colon + 1).trim(); + } + } + options.defaultHeaders = { ...parsed, ...options.defaultHeaders }; + } + this._options = options; this.apiKey = apiKey; diff --git a/src/resources/sessions/sessions.ts b/src/resources/sessions/sessions.ts index 183afb7..d1f4dcd 100644 --- a/src/resources/sessions/sessions.ts +++ b/src/resources/sessions/sessions.ts @@ -99,7 +99,7 @@ export interface Session { startedAt: string; - status: 'RUNNING' | 'ERROR' | 'TIMED_OUT' | 'COMPLETED'; + status: 'PENDING' | 'RUNNING' | 'ERROR' | 'TIMED_OUT' | 'COMPLETED'; updatedAt: string; @@ -263,6 +263,12 @@ export namespace SessionCreateParams { */ extensionId?: string; + /** + * Enable or disable ignoring of certificate errors in the browser. Defaults to + * `true`. + */ + ignoreCertificateErrors?: boolean; + /** * Enable or disable session logging. Defaults to `true`. */ @@ -424,7 +430,7 @@ export interface SessionListParams { */ q?: string; - status?: 'RUNNING' | 'ERROR' | 'TIMED_OUT' | 'COMPLETED'; + status?: 'PENDING' | 'RUNNING' | 'ERROR' | 'TIMED_OUT' | 'COMPLETED'; } Sessions.Downloads = Downloads; diff --git a/src/version.ts b/src/version.ts index 7b16f63..e91ff8d 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '2.10.0'; // x-release-please-version +export const VERSION = '2.11.0'; // x-release-please-version diff --git a/tests/api-resources/sessions/sessions.test.ts b/tests/api-resources/sessions/sessions.test.ts index 765cf69..d13d1be 100644 --- a/tests/api-resources/sessions/sessions.test.ts +++ b/tests/api-resources/sessions/sessions.test.ts @@ -39,6 +39,7 @@ describe('resource sessions', () => { captchaInputSelector: 'captchaInputSelector', context: { id: 'id', persist: true }, extensionId: 'extensionId', + ignoreCertificateErrors: true, logSession: true, os: 'windows', recordSession: true, @@ -126,7 +127,7 @@ describe('resource sessions', () => { test('list: request options and params are passed correctly', async () => { // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error await expect( - client.sessions.list({ q: 'q', status: 'RUNNING' }, { path: '/_stainless_unknown_path' }), + client.sessions.list({ q: 'q', status: 'PENDING' }, { path: '/_stainless_unknown_path' }), ).rejects.toThrow(Browserbase.NotFoundError); });