Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/yummy-poets-fail.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@browserbasehq/stagehand-server-v3": patch
"@browserbasehq/stagehand": patch
---

Deprecate Browserbase project ID configuration.
9 changes: 7 additions & 2 deletions packages/core/lib/v3/types/public/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,11 @@ export const BrowserbaseRegionSchema = z
/** Browserbase session creation parameters */
export const BrowserbaseSessionCreateParamsSchema = z
.object({
projectId: z.string().optional(),
projectId: z.string().optional().meta({
deprecated: true,
description:
"Deprecated. Browserbase API keys are now project-scoped, so this field is no longer required.",
}),
browserSettings: BrowserbaseBrowserSettingsSchema.optional(),
extensionId: z.string().optional(),
keepAlive: z.boolean().optional(),
Expand Down Expand Up @@ -975,7 +979,8 @@ export const openApiSecuritySchemes = {
type: "apiKey",
in: "header",
name: "x-bb-project-id",
description: "Browserbase project ID",
description:
"Deprecated. Browserbase API keys are now project-scoped, so this header is no longer required.",
},
ModelApiKey: {
type: "apiKey",
Expand Down
9 changes: 8 additions & 1 deletion packages/server-v3/openapi.v3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ components:
type: apiKey
in: header
name: x-bb-project-id
description: Browserbase project ID
description: Deprecated. Browserbase API keys are now project-scoped, so this
header is no longer required.
ModelApiKey:
type: apiKey
in: header
Expand Down Expand Up @@ -428,6 +429,9 @@ components:
type: object
properties:
projectId:
deprecated: true
description: Deprecated. Browserbase API keys are now project-scoped, so this
field is no longer required.
type: string
browserSettings:
$ref: "#/components/schemas/BrowserbaseBrowserSettings"
Expand Down Expand Up @@ -1469,6 +1473,9 @@ components:
type: object
properties:
projectId:
deprecated: true
description: Deprecated. Browserbase API keys are now project-scoped, so this
field is no longer required.
type: string
browserSettings:
$ref: "#/components/schemas/BrowserbaseBrowserSettingsOutput"
Expand Down
6 changes: 2 additions & 4 deletions packages/server-v3/src/lib/stream.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,16 @@ export async function createStreamingResponse<TV3>({
const browserType = sessionConfig.browserType ?? "local";

let browserbaseApiKey = sessionConfig.browserbaseApiKey;
let browserbaseProjectId = sessionConfig.browserbaseProjectId;
const browserbaseProjectId = sessionConfig.browserbaseProjectId;

if (browserType === "browserbase") {
browserbaseApiKey =
browserbaseApiKey ?? getOptionalHeader(request, "x-bb-api-key");
browserbaseProjectId =
browserbaseProjectId ?? getOptionalHeader(request, "x-bb-project-id");

if (!browserbaseApiKey || !browserbaseProjectId) {
return reply.status(StatusCodes.BAD_REQUEST).send({
error:
"Browserbase API key and project ID are required for browserbase sessions",
"Browserbase API key and resolved project ID are required for browserbase sessions",
});
}
}
Expand Down
10 changes: 4 additions & 6 deletions packages/server-v3/src/routes/v1/sessions/start.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,13 +112,12 @@ const startRouteHandler: RouteHandler = withErrorHandling(
const browserType = browser?.type ?? "browserbase";

let bbApiKey: string | undefined;
let bbProjectId: string | undefined;
let browserbaseProjectId: string | undefined;
let browserbaseSessionId: string | undefined;
let connectUrl: string | undefined;

if (browserType === "browserbase") {
bbApiKey = getOptionalHeader(request, "x-bb-api-key");
bbProjectId = getOptionalHeader(request, "x-bb-project-id");

if (!bbApiKey) {
return error(
Expand All @@ -132,6 +131,7 @@ const startRouteHandler: RouteHandler = withErrorHandling(
if (browserbaseSessionID) {
const existing = await bb.sessions.retrieve(browserbaseSessionID);
browserbaseSessionId = existing?.id;
browserbaseProjectId = existing?.projectId;
connectUrl = existing?.connectUrl;
if (!browserbaseSessionId) {
return error(reply, "Failed to retrieve browserbase session");
Expand All @@ -140,10 +140,7 @@ const startRouteHandler: RouteHandler = withErrorHandling(
return error(reply, "Browserbase session missing connectUrl");
}
} else {
const resolvedProjectId =
browserbaseSessionCreateParams?.projectId ?? bbProjectId;
const createPayload = {
...(resolvedProjectId ? { projectId: resolvedProjectId } : {}),
...browserbaseSessionCreateParams,
browserSettings: {
...(browserbaseSessionCreateParams?.browserSettings ?? {}),
Expand All @@ -164,6 +161,7 @@ const startRouteHandler: RouteHandler = withErrorHandling(
)) as SessionRetrieveResponse;

browserbaseSessionId = created?.id;
browserbaseProjectId = created?.projectId;
connectUrl = created?.connectUrl;
if (!browserbaseSessionId) {
return error(reply, "Failed to create browserbase session");
Expand All @@ -189,7 +187,7 @@ const startRouteHandler: RouteHandler = withErrorHandling(
? (browserbaseSessionId ?? browserbaseSessionID)
: undefined,
browserbaseApiKey: bbApiKey,
browserbaseProjectId: bbProjectId,
browserbaseProjectId,
modelName,
domSettleTimeoutMs,
verbose,
Expand Down
4 changes: 2 additions & 2 deletions stainless.yml
Original file line number Diff line number Diff line change
Expand Up @@ -229,8 +229,8 @@ client_settings:
BROWSERBASE_PROJECT_ID:
type: string
read_env: BROWSERBASE_PROJECT_ID
description: Your [Browserbase Project ID](https://www.browserbase.com/settings)
nullable: false
description: Deprecated. Browserbase API keys are now project-scoped, so this value is no longer required.
nullable: true
auth:
security_scheme: BBProjectIdAuth
MODEL_API_KEY:
Expand Down
Loading