@@ -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
64276end
0 commit comments