Skip to content

Commit 5cb6ecb

Browse files
feat: Bedrock auth passthrough
1 parent dc03201 commit 5cb6ecb

15 files changed

Lines changed: 2528 additions & 82 deletions

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 8
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-b969ce378479c79ee64c05127c0ed6c6ce2edbee017ecd037242fb618a5ebc9f.yml
3-
openapi_spec_hash: a24aabaa5214effb679808b7f2be0ad4
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-7773ef4ca29c983daafb787ee918cfa6b5b12c5bbdc088308653f2737c26e51f.yml
3+
openapi_spec_hash: 47fc8f2540be0b6374e4230c021072d9
44
config_hash: 0cc516caf1432087f40654336e0fa8cd

lib/stagehand/models/model_config.rb

Lines changed: 215 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class ModelConfig < Stagehand::Internal::Type::BaseModel
2222
optional :base_url, String, api_name: :baseURL
2323

2424
# @!attribute headers
25-
# Custom headers sent with every request to the model provider
25+
# Custom headers for the model provider
2626
#
2727
# @return [Hash{Symbol=>String}, nil]
2828
optional :headers, Stagehand::Internal::Type::HashOf[String]
@@ -33,16 +33,40 @@ class ModelConfig < Stagehand::Internal::Type::BaseModel
3333
# @return [Symbol, Stagehand::Models::ModelConfig::Provider, nil]
3434
optional :provider, enum: -> { Stagehand::ModelConfig::Provider }
3535

36-
# @!method initialize(model_name:, api_key: nil, base_url: nil, headers: nil, provider: nil)
36+
# @!attribute provider_options
37+
# Provider-specific options passed through to the AI SDK provider constructor. For
38+
# Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: {
39+
# project, location, googleAuthOptions }.
40+
#
41+
# @return [Stagehand::Models::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions, nil]
42+
optional :provider_options,
43+
union: -> { Stagehand::ModelConfig::ProviderOptions },
44+
api_name: :providerOptions
45+
46+
# @!attribute skip_api_key_fallback
47+
# When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use
48+
# this when auth is carried through providerOptions instead of an API key.
49+
#
50+
# @return [Boolean, nil]
51+
optional :skip_api_key_fallback, Stagehand::Internal::Type::Boolean, api_name: :skipApiKeyFallback
52+
53+
# @!method initialize(model_name:, api_key: nil, base_url: nil, headers: nil, provider: nil, provider_options: nil, skip_api_key_fallback: nil)
54+
# Some parameter documentations has been truncated, see
55+
# {Stagehand::Models::ModelConfig} for more details.
56+
#
3757
# @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
3858
#
3959
# @param api_key [String] API key for the model provider
4060
#
4161
# @param base_url [String] Base URL for the model provider
4262
#
43-
# @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the model provider
63+
# @param headers [Hash{Symbol=>String}] Custom headers for the model provider
4464
#
4565
# @param provider [Symbol, Stagehand::Models::ModelConfig::Provider] AI provider for the model (or provide a baseURL endpoint instead)
66+
#
67+
# @param provider_options [Stagehand::Models::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions] Provider-specific options passed through to the AI SDK provider constructor. For
68+
#
69+
# @param skip_api_key_fallback [Boolean] When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use
4670

4771
# AI provider for the model (or provide a baseURL endpoint instead)
4872
#
@@ -59,6 +83,194 @@ module Provider
5983
# @!method self.values
6084
# @return [Array<Symbol>]
6185
end
86+
87+
# Provider-specific options passed through to the AI SDK provider constructor. For
88+
# Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: {
89+
# project, location, googleAuthOptions }.
90+
#
91+
# @see Stagehand::Models::ModelConfig#provider_options
92+
module ProviderOptions
93+
extend Stagehand::Internal::Type::Union
94+
95+
variant -> { Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions }
96+
97+
variant -> { Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions }
98+
99+
variant -> { Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions }
100+
101+
class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel
102+
# @!attribute region
103+
# AWS region for Amazon Bedrock
104+
#
105+
# @return [String]
106+
required :region, String
107+
108+
# @!method initialize(region:)
109+
# @param region [String] AWS region for Amazon Bedrock
110+
end
111+
112+
class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel
113+
# @!attribute access_key_id
114+
# AWS access key ID for Bedrock
115+
#
116+
# @return [String]
117+
required :access_key_id, String, api_name: :accessKeyId
118+
119+
# @!attribute region
120+
# AWS region for Amazon Bedrock
121+
#
122+
# @return [String]
123+
required :region, String
124+
125+
# @!attribute secret_access_key
126+
# AWS secret access key for Bedrock
127+
#
128+
# @return [String]
129+
required :secret_access_key, String, api_name: :secretAccessKey
130+
131+
# @!attribute session_token
132+
# Optional AWS session token for temporary credentials
133+
#
134+
# @return [String, nil]
135+
optional :session_token, String, api_name: :sessionToken
136+
137+
# @!method initialize(access_key_id:, region:, secret_access_key:, session_token: nil)
138+
# @param access_key_id [String] AWS access key ID for Bedrock
139+
#
140+
# @param region [String] AWS region for Amazon Bedrock
141+
#
142+
# @param secret_access_key [String] AWS secret access key for Bedrock
143+
#
144+
# @param session_token [String] Optional AWS session token for temporary credentials
145+
end
146+
147+
class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel
148+
# @!attribute google_auth_options
149+
# Optional Google auth options for Vertex AI
150+
#
151+
# @return [Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, nil]
152+
optional :google_auth_options,
153+
-> {
154+
Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions
155+
},
156+
api_name: :googleAuthOptions
157+
158+
# @!attribute headers
159+
# Custom headers for Vertex AI requests
160+
#
161+
# @return [Hash{Symbol=>String}, nil]
162+
optional :headers, Stagehand::Internal::Type::HashOf[String]
163+
164+
# @!attribute location
165+
# Google Cloud location for Vertex AI
166+
#
167+
# @return [String, nil]
168+
optional :location, String
169+
170+
# @!attribute project
171+
# Google Cloud project ID for Vertex AI
172+
#
173+
# @return [String, nil]
174+
optional :project, String
175+
176+
# @!method initialize(google_auth_options: nil, headers: nil, location: nil, project: nil)
177+
# @param google_auth_options [Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions] Optional Google auth options for Vertex AI
178+
#
179+
# @param headers [Hash{Symbol=>String}] Custom headers for Vertex AI requests
180+
#
181+
# @param location [String] Google Cloud location for Vertex AI
182+
#
183+
# @param project [String] Google Cloud project ID for Vertex AI
184+
185+
# @see Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions#google_auth_options
186+
class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel
187+
# @!attribute credentials
188+
#
189+
# @return [Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials, nil]
190+
optional :credentials,
191+
-> { Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials }
192+
193+
# @!method initialize(credentials: nil)
194+
# Optional Google auth options for Vertex AI
195+
#
196+
# @param credentials [Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials]
197+
198+
# @see Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions#credentials
199+
class Credentials < Stagehand::Internal::Type::BaseModel
200+
# @!attribute auth_provider_x509_cert_url
201+
#
202+
# @return [String, nil]
203+
optional :auth_provider_x509_cert_url, String
204+
205+
# @!attribute auth_uri
206+
#
207+
# @return [String, nil]
208+
optional :auth_uri, String
209+
210+
# @!attribute client_email
211+
#
212+
# @return [String, nil]
213+
optional :client_email, String
214+
215+
# @!attribute client_id
216+
#
217+
# @return [String, nil]
218+
optional :client_id, String
219+
220+
# @!attribute client_x509_cert_url
221+
#
222+
# @return [String, nil]
223+
optional :client_x509_cert_url, String
224+
225+
# @!attribute private_key
226+
#
227+
# @return [String, nil]
228+
optional :private_key, String
229+
230+
# @!attribute private_key_id
231+
#
232+
# @return [String, nil]
233+
optional :private_key_id, String
234+
235+
# @!attribute project_id
236+
#
237+
# @return [String, nil]
238+
optional :project_id, String
239+
240+
# @!attribute token_uri
241+
#
242+
# @return [String, nil]
243+
optional :token_uri, String
244+
245+
# @!attribute type
246+
#
247+
# @return [String, nil]
248+
optional :type, String
249+
250+
# @!attribute universe_domain
251+
#
252+
# @return [String, nil]
253+
optional :universe_domain, String
254+
255+
# @!method initialize(auth_provider_x509_cert_url: nil, auth_uri: nil, client_email: nil, client_id: nil, client_x509_cert_url: nil, private_key: nil, private_key_id: nil, project_id: nil, token_uri: nil, type: nil, universe_domain: nil)
256+
# @param auth_provider_x509_cert_url [String]
257+
# @param auth_uri [String]
258+
# @param client_email [String]
259+
# @param client_id [String]
260+
# @param client_x509_cert_url [String]
261+
# @param private_key [String]
262+
# @param private_key_id [String]
263+
# @param project_id [String]
264+
# @param token_uri [String]
265+
# @param type [String]
266+
# @param universe_domain [String]
267+
end
268+
end
269+
end
270+
271+
# @!method self.variants
272+
# @return [Array(Stagehand::Models::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions)]
273+
end
62274
end
63275
end
64276
end

lib/stagehand/models/session_execute_params.rb

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -198,28 +198,12 @@ class ExecuteOptions < Stagehand::Internal::Type::BaseModel
198198
# @return [Float, nil]
199199
optional :max_steps, Float, api_name: :maxSteps
200200

201-
# @!attribute tool_timeout
202-
# Timeout in milliseconds for each agent tool call
203-
#
204-
# @return [Float, nil]
205-
optional :tool_timeout, Float, api_name: :toolTimeout
206-
207-
# @!attribute use_search
208-
# Whether to enable the web search tool powered by Browserbase Search API
209-
#
210-
# @return [Boolean, nil]
211-
optional :use_search, Stagehand::Internal::Type::Boolean, api_name: :useSearch
212-
213-
# @!method initialize(instruction:, highlight_cursor: nil, max_steps: nil, tool_timeout: nil, use_search: nil)
201+
# @!method initialize(instruction:, highlight_cursor: nil, max_steps: nil)
214202
# @param instruction [String] Natural language instruction for the agent
215203
#
216204
# @param highlight_cursor [Boolean] Whether to visually highlight the cursor during execution
217205
#
218206
# @param max_steps [Float] Maximum number of steps the agent can take
219-
#
220-
# @param tool_timeout [Float] Timeout in milliseconds for each agent tool call
221-
#
222-
# @param use_search [Boolean] Whether to enable the web search tool powered by Browserbase Search API
223207
end
224208

225209
# Whether to stream the response via SSE

0 commit comments

Comments
 (0)