22
33from __future__ import annotations
44
5+ from typing import Any
56from typing_extensions import Literal , override
67
78import httpx
2728from ..types .session_start_response import SessionStartResponse
2829
2930
31+ def _has_explicit_aws_credentials (model_config : dict [str , Any ]) -> bool :
32+ return any (model_config .get (key ) for key in ("access_key_id" , "secret_access_key" , "session_token" ))
33+
34+
35+ def _build_default_model_config (
36+ * ,
37+ model_name : str ,
38+ model_client_options : session_start_params .ModelClientOptions | Omit ,
39+ fallback_api_key : str | None ,
40+ ) -> dict [str , Any ]:
41+ model_config : dict [str , Any ] = {"model_name" : model_name }
42+ if isinstance (model_client_options , dict ):
43+ model_config .update (model_client_options )
44+
45+ if fallback_api_key and "api_key" not in model_config and not _has_explicit_aws_credentials (model_config ):
46+ model_config ["api_key" ] = fallback_api_key
47+
48+ return model_config
49+
50+
3051class SessionsResourceWithHelpersRawResponse (SessionsResourceWithRawResponse ):
3152 def __init__ (self , sessions : SessionsResourceWithHelpers ) -> None : # type: ignore[name-defined]
3253 super ().__init__ (sessions )
@@ -71,6 +92,7 @@ def start(
7192 browser : session_start_params .Browser | Omit = omit ,
7293 browserbase_session_create_params : session_start_params .BrowserbaseSessionCreateParams | Omit = omit ,
7394 browserbase_session_id : str | Omit = omit ,
95+ model_client_options : session_start_params .ModelClientOptions | Omit = omit ,
7496 dom_settle_timeout_ms : float | Omit = omit ,
7597 experimental : bool | Omit = omit ,
7698 self_heal : bool | Omit = omit ,
@@ -89,6 +111,7 @@ def start(
89111 browser = browser ,
90112 browserbase_session_create_params = browserbase_session_create_params ,
91113 browserbase_session_id = browserbase_session_id ,
114+ model_client_options = model_client_options ,
92115 dom_settle_timeout_ms = dom_settle_timeout_ms ,
93116 experimental = experimental ,
94117 self_heal = self_heal ,
@@ -101,7 +124,17 @@ def start(
101124 extra_body = extra_body ,
102125 timeout = timeout ,
103126 )
104- return Session (self ._client , start_response .data .session_id , data = start_response .data , success = start_response .success )
127+ return Session (
128+ self ._client ,
129+ start_response .data .session_id ,
130+ data = start_response .data ,
131+ success = start_response .success ,
132+ default_model = _build_default_model_config (
133+ model_name = model_name ,
134+ model_client_options = model_client_options ,
135+ fallback_api_key = self ._client .model_api_key ,
136+ ),
137+ )
105138
106139
107140class AsyncSessionsResourceWithHelpers (AsyncSessionsResource ):
@@ -124,6 +157,7 @@ async def start(
124157 browser : session_start_params .Browser | Omit = omit ,
125158 browserbase_session_create_params : session_start_params .BrowserbaseSessionCreateParams | Omit = omit ,
126159 browserbase_session_id : str | Omit = omit ,
160+ model_client_options : session_start_params .ModelClientOptions | Omit = omit ,
127161 dom_settle_timeout_ms : float | Omit = omit ,
128162 experimental : bool | Omit = omit ,
129163 self_heal : bool | Omit = omit ,
@@ -142,6 +176,7 @@ async def start(
142176 browser = browser ,
143177 browserbase_session_create_params = browserbase_session_create_params ,
144178 browserbase_session_id = browserbase_session_id ,
179+ model_client_options = model_client_options ,
145180 dom_settle_timeout_ms = dom_settle_timeout_ms ,
146181 experimental = experimental ,
147182 self_heal = self_heal ,
@@ -154,4 +189,14 @@ async def start(
154189 extra_body = extra_body ,
155190 timeout = timeout ,
156191 )
157- return AsyncSession (self ._client , start_response .data .session_id , data = start_response .data , success = start_response .success )
192+ return AsyncSession (
193+ self ._client ,
194+ start_response .data .session_id ,
195+ data = start_response .data ,
196+ success = start_response .success ,
197+ default_model = _build_default_model_config (
198+ model_name = model_name ,
199+ model_client_options = model_client_options ,
200+ fallback_api_key = self ._client .model_api_key ,
201+ ),
202+ )
0 commit comments