Skip to content

Commit 39a33c7

Browse files
author
Derek Meegan
committed
relax browserbase params and add pre hook to validator to add project id to browserbase params before field validation
1 parent 15fd40b commit 39a33c7

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

@@ -65,7 +65,7 @@ class StagehandConfig(BaseModel):
6565
alias="domSettleTimeoutMs",
6666
description="Timeout for DOM to settle (in ms)",
6767
)
68-
browserbase_session_create_params: Optional[BrowserbaseSessionCreateParams] = Field(
68+
browserbase_session_create_params: Optional[Union[BrowserbaseSessionCreateParams, dict[str, Any]]] = Field(
6969
None,
7070
alias="browserbaseSessionCreateParams",
7171
description="Browserbase session create params",
@@ -111,6 +111,17 @@ class StagehandConfig(BaseModel):
111111
)
112112

113113
model_config = ConfigDict(populate_by_name=True)
114+
115+
@field_validator('browserbase_session_create_params', mode='before')
116+
@classmethod
117+
def validate_browserbase_params(cls, v, info):
118+
"""Validate and convert browserbase session create params."""
119+
if isinstance(v, dict) and 'project_id' not in v:
120+
values = info.data
121+
project_id = values.get('project_id') or values.get('projectId')
122+
if project_id:
123+
v = {**v, 'project_id': project_id}
124+
return v
114125

115126
def with_overrides(self, **overrides) -> "StagehandConfig":
116127
"""

0 commit comments

Comments
 (0)