Skip to content

Commit 76edbd1

Browse files
Derek Meeganchrisreadsf
authored andcommitted
relax browserbase params and add pre hook to validator to add project id to browserbase params before field validation
1 parent ab31b6e commit 76edbd1

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

stagehand/config.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import os
2-
from typing import Any, Callable, Literal, Optional
2+
from typing import Any, Callable, Literal, Optional, Union
33

44
from browserbase.types import SessionCreateParams as BrowserbaseSessionCreateParams
5-
from pydantic import BaseModel, ConfigDict, Field
5+
from pydantic import BaseModel, ConfigDict, Field, field_validator
66

77
from stagehand.schemas import AvailableModel
88

@@ -71,7 +71,7 @@ class StagehandConfig(BaseModel):
7171
alias="domSettleTimeoutMs",
7272
description="Timeout for DOM to settle (in ms)",
7373
)
74-
browserbase_session_create_params: Optional[BrowserbaseSessionCreateParams] = Field(
74+
browserbase_session_create_params: Optional[Union[BrowserbaseSessionCreateParams, dict[str, Any]]] = Field(
7575
None,
7676
alias="browserbaseSessionCreateParams",
7777
description="Browserbase session create params",
@@ -117,6 +117,17 @@ class StagehandConfig(BaseModel):
117117
)
118118

119119
model_config = ConfigDict(populate_by_name=True)
120+
121+
@field_validator('browserbase_session_create_params', mode='before')
122+
@classmethod
123+
def validate_browserbase_params(cls, v, info):
124+
"""Validate and convert browserbase session create params."""
125+
if isinstance(v, dict) and 'project_id' not in v:
126+
values = info.data
127+
project_id = values.get('project_id') or values.get('projectId')
128+
if project_id:
129+
v = {**v, 'project_id': project_id}
130+
return v
120131

121132
def with_overrides(self, **overrides) -> "StagehandConfig":
122133
"""

0 commit comments

Comments
 (0)